summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp')
-rw-r--r--llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
index 984d972a6fd..2e4707f916d 100644
--- a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
@@ -284,8 +284,10 @@ GetElementPtrInst *Vectorizer::getSourceGEP(Value *Src) const {
// in pointee type size here. Currently it will not be vectorized.
Value *SrcPtr = getLoadStorePointerOperand(Src);
Value *SrcBase = SrcPtr->stripPointerCasts();
- if (DL.getTypeStoreSize(SrcPtr->getType()->getPointerElementType()) ==
- DL.getTypeStoreSize(SrcBase->getType()->getPointerElementType()))
+ Type *SrcPtrType = SrcPtr->getType()->getPointerElementType();
+ Type *SrcBaseType = SrcBase->getType()->getPointerElementType();
+ if (SrcPtrType->isSized() && SrcBaseType->isSized() &&
+ DL.getTypeStoreSize(SrcPtrType) == DL.getTypeStoreSize(SrcBaseType))
SrcPtr = SrcBase;
return dyn_cast<GetElementPtrInst>(SrcPtr);
}
OpenPOWER on IntegriCloud