[llvm] [DirectX] Support ConstExpr GEPs (PR #148986)
Deric C. via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 15 18:54:59 PDT 2025
================
@@ -305,6 +305,33 @@ bool DataScalarizerVisitor::visitGetElementPtrInst(GetElementPtrInst &GEPI) {
Type *OrigGEPType = GEPI.getSourceElementType();
Type *NewGEPType = OrigGEPType;
bool NeedsTransform = false;
+ // Check if the pointer operand is a ConstantExpr GEP
+ if (auto *PtrOpGEPCE = dyn_cast<ConstantExpr>(PtrOperand);
+ PtrOpGEPCE && PtrOpGEPCE->getOpcode() == Instruction::GetElementPtr) {
+ if (GlobalVariable *NewGlobal =
----------------
Icohedron wrote:
I don't think it will ever naturally occur though. It may suffice to assert that the ConstantExpr GEP's pointer operand is a global variable and deal with it later if it does become an actual problem.
AFAIK there isn't a good reason to codegen a multiply-nested ConstantExpr GEP in the first place when you can codegen a single ConstantExpr GEP instead because all the indices are ConstantInts.
https://github.com/llvm/llvm-project/pull/148986
More information about the llvm-commits
mailing list