summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
diff options
context:
space:
mode:
authorStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2018-04-17 21:40:04 +0000
committerStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2018-04-17 21:40:04 +0000
commit0bee630814d0031fa17997c3c21c8499ac42db60 (patch)
treed7feaaf3d7d7f15c80083a503cf385b2c2746c39 /llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
parentf437e35671089ab3bdbf11b65a53fe22b9f24172 (diff)
downloadbcm5719-llvm-0bee630814d0031fa17997c3c21c8499ac42db60.tar.gz
bcm5719-llvm-0bee630814d0031fa17997c3c21c8499ac42db60.zip
LoadStoreVectorizer crashes due to unsized type
When we skip bitcasts while looking for GEP in LoadSoreVectorizer we should also verify that the type is sized otherwise we assert Differential Revision: https://reviews.llvm.org/D45709 llvm-svn: 330221
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