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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213449 91177308-0d34-0410-b5e6-96231b3b80d8

lib/IR/Value.cpp

index 94f979a300262936973370c58fb95c761d6bf59d..1ab2183b6565083de659cc9d41991066dd7b7d06 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();