[Mlir-commits] [mlir] [MLIR][LLVM] Support inrange in GEP (PR #220424)
Tobias Gysi
llvmlistbot at llvm.org
Mon Sep 14 12:02:52 PDT 2026
================
@@ -1973,7 +1973,19 @@ FailureOr<Value> ModuleImport::convertConstant(llvm::Constant *constant) {
}));
if (failed(processInstruction(inst)))
return failure();
- return lookupValue(inst);
+ Value result = lookupValue(inst);
+ // getAsInstruction() does not preserve GEP `inrange`, which exists only on
+ // constant expressions. Reattach it to the imported GEPOp.
+ if (constExpr->getOpcode() == llvm::Instruction::GetElementPtr) {
+ if (std::optional<llvm::ConstantRange> inRange =
+ llvm::cast<llvm::GEPOperator>(constExpr)->getInRange()) {
+ auto gepOp = result.getDefiningOp<GEPOp>();
+ assert(gepOp && "expected GEPOp for getelementptr constexpr");
+ gepOp.setInrangeAttr(LLVM::ConstantRangeAttr::get(
+ context, inRange->getLower(), inRange->getUpper()));
----------------
gysit wrote:
I would assume the index bitwdith is preserved here?
https://github.com/llvm/llvm-project/pull/220424
More information about the Mlir-commits
mailing list