summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMichael Zolotukhin <mzolotukhin@apple.com>2015-09-22 22:27:12 +0000
committerMichael Zolotukhin <mzolotukhin@apple.com>2015-09-22 22:27:12 +0000
commitdeade19630bcec8c35e8afba6333f3e720ab54c0 (patch)
treed47d53e646065fd720bb8a32082aa365cfa744fa /llvm/lib
parenta7ecbe56857c20d49c16d8a685d34e472e6422fc (diff)
downloadbcm5719-llvm-deade19630bcec8c35e8afba6333f3e720ab54c0.tar.gz
bcm5719-llvm-deade19630bcec8c35e8afba6333f3e720ab54c0.zip
[Unroll] Do not crash trying to propagate a value to vector load.
llvm-svn: 248333
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
index d9236a2c773..97c51dff84f 100644
--- a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
@@ -423,6 +423,12 @@ private:
if (!CDS)
return false;
+ // We might have a vector load from an array. FIXME: for now we just bail
+ // out in this case, but we should be able to resolve and simplify such
+ // loads.
+ if(!CDS->isElementTypeCompatible(I.getType()))
+ return false;
+
int ElemSize = CDS->getElementType()->getPrimitiveSizeInBits() / 8U;
assert(SimplifiedAddrOp->getValue().getActiveBits() < 64 &&
"Unexpectedly large index value.");
OpenPOWER on IntegriCloud