diff options
Diffstat (limited to 'llvm/lib/IR/ConstantFold.cpp')
-rw-r--r-- | llvm/lib/IR/ConstantFold.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/IR/ConstantFold.cpp b/llvm/lib/IR/ConstantFold.cpp index 2566617..f84fe79 100644 --- a/llvm/lib/IR/ConstantFold.cpp +++ b/llvm/lib/IR/ConstantFold.cpp @@ -2053,6 +2053,10 @@ Constant *llvm::ConstantFoldGetElementPtr(Type *PointeeTy, Constant *C, if (!C->getType()->getScalarType()->isOpaquePointerTy() && Idxs.size() != 1) return false; + // Avoid losing inrange information. + if (InRangeIndex) + return false; + return all_of(Idxs, [](Value *Idx) { Constant *IdxC = cast<Constant>(Idx); return IdxC->isNullValue() || isa<UndefValue>(IdxC); |