Handle AddrSpaceCast in stripAndAccumulateInBoundsConstantOffsets
authorHal Finkel <hfinkel@anl.gov>
Sat, 19 Jul 2014 03:32:02 +0000 (03:32 +0000)
committerHal Finkel <hfinkel@anl.gov>
Sat, 19 Jul 2014 03:32:02 +0000 (03:32 +0000)
All of the other similar functions in that part of the file look through
addrspacecast in addition to bitcast, and I see no reason why
stripAndAccumulateInBoundsConstantOffsets shouldn't do so also.

llvm-svn: 213449

llvm/lib/IR/Value.cpp

index 94f979a..1ab2183 100644 (file)
@@ -455,7 +455,8 @@ Value *Value::stripAndAccumulateInBoundsConstantOffsets(const DataLayout &DL,
         return V;
       Offset = GEPOffset;
       V = GEP->getPointerOperand();
-    } else if (Operator::getOpcode(V) == Instruction::BitCast) {
+    } else if (Operator::getOpcode(V) == Instruction::BitCast ||
+               Operator::getOpcode(V) == Instruction::AddrSpaceCast) {
       V = cast<Operator>(V)->getOperand(0);
     } else if (GlobalAlias *GA = dyn_cast<GlobalAlias>(V)) {
       V = GA->getAliasee();