diff options
author | Dan Gohman <gohman@apple.com> | 2010-08-14 00:43:09 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-08-14 00:43:09 +0000 |
commit | aa445c075119075e59dad9d431ee37e33430a938 (patch) | |
tree | 57e732c291b1cfa8f911c176439c8bbb84a323a7 /llvm/lib/Transforms/Utils/LoopSimplify.cpp | |
parent | 4a63fad976c8cf3bcdc1bbc3927668164890ecb8 (diff) | |
download | bcm5719-llvm-aa445c075119075e59dad9d431ee37e33430a938.tar.gz bcm5719-llvm-aa445c075119075e59dad9d431ee37e33430a938.zip |
LoopSimplify shouldn't split loop backedges that use indirectbr. PR7867.
llvm-svn: 111061
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopSimplify.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopSimplify.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopSimplify.cpp b/llvm/lib/Transforms/Utils/LoopSimplify.cpp index 16902ff9150..fee7f081333 100644 --- a/llvm/lib/Transforms/Utils/LoopSimplify.cpp +++ b/llvm/lib/Transforms/Utils/LoopSimplify.cpp @@ -622,6 +622,11 @@ LoopSimplify::InsertUniqueBackedgeBlock(Loop *L, BasicBlock *Preheader) { std::vector<BasicBlock*> BackedgeBlocks; for (pred_iterator I = pred_begin(Header), E = pred_end(Header); I != E; ++I){ BasicBlock *P = *I; + + // Indirectbr edges cannot be split, so we must fail if we find one. + if (isa<IndirectBrInst>(P->getTerminator())) + return 0; + if (P != Preheader) BackedgeBlocks.push_back(P); } |