Skip to content

[Backport to llvm_release_200] [LLVM->SPIRV] Cast the GEP base pointer to source type upon mismatch#3614

Merged
vmaksimo merged 1 commit intollvm_release_200from
backport/pr-3255-to-llvm_release_200
Mar 11, 2026
Merged

[Backport to llvm_release_200] [LLVM->SPIRV] Cast the GEP base pointer to source type upon mismatch#3614
vmaksimo merged 1 commit intollvm_release_200from
backport/pr-3255-to-llvm_release_200

Conversation

@github-actions
Copy link

@github-actions github-actions bot commented Mar 3, 2026

Backport of PR #3255 into llvm_release_200.

All commits applied cleanly.

…3255)

The source element type used in a GEP may differ from the actual type of the pointer operand (e.g., ptr i8 vs. ptr [N x T]).
This mismatch can lead to incorrect address computations during translation to SPIR-V of GEP used in constexpr context, which requires that pointer types match the type of the object being accessed.

This patch inserts an explicit bitcast to convert the GEP pointer operand to the expected type, derived from the GEP’s source element type, before emitting an PtrAccessChain.
This ensures the resulting SPIR-V instruction has a correctly typed base pointer and produces valid indexing behavior.

For example:
Before this change, the following GEP was translated incorrectly:
getelementptr(i8, ptr addrspace(1) @a_var, i64 2)
Whereas this nearly equivalent GEP was handled correctly:
getelementptr inbounds ([2 x i8], ptr @a_var, i64 0, i64 1)

Previously, the first form was incorrectly interpreted as:
getelementptr inbounds ([2 x i8], ptr @a_var, i64 0, i64 2)
@wenju-he
Copy link
Contributor

wenju-he commented Mar 9, 2026

@karolzwolak please review, thanks

@vmaksimo
Copy link
Contributor

vmaksimo commented Mar 9, 2026

Reopening to trigger CI

@vmaksimo vmaksimo closed this Mar 9, 2026
@vmaksimo vmaksimo reopened this Mar 9, 2026
@vmaksimo vmaksimo merged commit 275c325 into llvm_release_200 Mar 11, 2026
9 checks passed
@vmaksimo vmaksimo deleted the backport/pr-3255-to-llvm_release_200 branch March 11, 2026 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants