diff options
author | Anna Thomas <anna@azul.com> | 2017-07-10 15:29:38 +0000 |
---|---|---|
committer | Anna Thomas <anna@azul.com> | 2017-07-10 15:29:38 +0000 |
commit | 70ffd65ca97bd7010108ad8c1369c105fb78714a (patch) | |
tree | 9110b93f41a5379859b1e36b53760fa54a1418f8 /llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp | |
parent | 8bd2cca3911751c3e14fd3105edf6e34429c8589 (diff) | |
download | bcm5719-llvm-70ffd65ca97bd7010108ad8c1369c105fb78714a.tar.gz bcm5719-llvm-70ffd65ca97bd7010108ad8c1369c105fb78714a.zip |
[LoopUnrollRuntime] Remove strict assert about VMap requirement
When unrolling under multiple exits which is under off-by-default option,
the assert that checks for VMap entry in loop exit values is too strong.
(assert if VMap entry did not exist, the value should be a
constant). However, values derived from
constants or from values outside loop, does not have a VMap entry too.
Removed the assert and added a testcase showcasing the property for
non-constant values.
llvm-svn: 307542
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp index 8733a1388df..59408ffe7a7 100644 --- a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp +++ b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp @@ -710,11 +710,10 @@ bool llvm::UnrollRuntimeLoopRemainder(Loop *L, unsigned Count, // node. for (unsigned i =0; i < oldNumOperands; i++){ Value *newVal = VMap[Phi->getIncomingValue(i)]; - if (!newVal) { - assert(isa<Constant>(Phi->getIncomingValue(i)) && - "VMap should exist for all values except constants!"); + // newVal can be a constant or derived from values outside the loop, and + // hence need not have a VMap value. + if (!newVal) newVal = Phi->getIncomingValue(i); - } Phi->addIncoming(newVal, cast<BasicBlock>(VMap[Phi->getIncomingBlock(i)])); } |