do not generated GEPs into vectors where they don't already exist.
authorChris Lattner <sabre@nondot.org>
Sun, 11 Jan 2009 20:23:52 +0000 (20:23 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 11 Jan 2009 20:23:52 +0000 (20:23 +0000)
We should treat vectors as atomic types, not like arrays.

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

lib/Transforms/Scalar/InstructionCombining.cpp

index fd15f2e1ca8912b32a44f0d06e32d55f9198b0db..b6604a930d619f97d89512bf8bbcce8af22cc9bf 100644 (file)
@@ -7739,13 +7739,12 @@ static bool FindElementAtOffset(const Type *Ty, int64_t Offset,
       
       Offset -= SL->getElementOffset(Elt);
       Ty = STy->getElementType(Elt);
-    } else if (isa<ArrayType>(Ty) || isa<VectorType>(Ty)) {
-      const SequentialType *STy = cast<SequentialType>(Ty);
-      uint64_t EltSize = TD->getABITypeSize(STy->getElementType());
+    } else if (const ArrayType *AT = dyn_cast<ArrayType>(Ty)) {
+      uint64_t EltSize = TD->getABITypeSize(AT->getElementType());
       assert(EltSize && "Cannot index into a zero-sized array");
       NewIndices.push_back(ConstantInt::get(IntPtrTy,Offset/EltSize));
       Offset %= EltSize;
-      Ty = STy->getElementType();
+      Ty = AT->getElementType();
     } else {
       // Otherwise, we can't index into the middle of this atomic type, bail.
       return false;