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 | 56fa137a5ab233f0fada0cdec131df6c93e64c1f (patch) | |
| tree | 93c041e5b2138282ddff505c6a1a0596c2d13071 /lib/Transforms/Utils/LoopSimplify.cpp | |
| parent | ff62cf7ea87a6be0c54441a015b1081a12919d16 (diff) | |
| download | external_llvm-56fa137a5ab233f0fada0cdec131df6c93e64c1f.zip external_llvm-56fa137a5ab233f0fada0cdec131df6c93e64c1f.tar.gz external_llvm-56fa137a5ab233f0fada0cdec131df6c93e64c1f.tar.bz2 | |
LoopSimplify shouldn't split loop backedges that use indirectbr. PR7867.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111061 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/LoopSimplify.cpp')
| -rw-r--r-- | lib/Transforms/Utils/LoopSimplify.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Transforms/Utils/LoopSimplify.cpp b/lib/Transforms/Utils/LoopSimplify.cpp index 16902ff..fee7f08 100644 --- a/lib/Transforms/Utils/LoopSimplify.cpp +++ b/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); } |
