diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2009-12-01 11:07:05 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2009-12-01 11:07:05 +0000 | 
| commit | 06f9d4012fb8acea3e9861d5722b5965dbb724d9 (patch) | |
| tree | ffe0478472eaa0686f11cb02c6df7d257b8719b0 /lib/Transforms/Utils/LoopSimplify.cpp | |
| parent | 76e2e0ebfdd3d91b07a75822865ea3e9121a99ce (diff) | |
Notes
Diffstat (limited to 'lib/Transforms/Utils/LoopSimplify.cpp')
| -rw-r--r-- | lib/Transforms/Utils/LoopSimplify.cpp | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/lib/Transforms/Utils/LoopSimplify.cpp b/lib/Transforms/Utils/LoopSimplify.cpp index 44a2c1f85181..690972dc558b 100644 --- a/lib/Transforms/Utils/LoopSimplify.cpp +++ b/lib/Transforms/Utils/LoopSimplify.cpp @@ -477,8 +477,13 @@ Loop *LoopSimplify::SeparateNestedLoop(Loop *L, LPPassManager &LPM) {    SmallVector<BasicBlock*, 8> OuterLoopPreds;    for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i)      if (PN->getIncomingValue(i) != PN || -        !L->contains(PN->getIncomingBlock(i))) +        !L->contains(PN->getIncomingBlock(i))) { +      // We can't split indirectbr edges. +      if (isa<IndirectBrInst>(PN->getIncomingBlock(i)->getTerminator())) +        return 0; +        OuterLoopPreds.push_back(PN->getIncomingBlock(i)); +    }    BasicBlock *Header = L->getHeader();    BasicBlock *NewBB = SplitBlockPredecessors(Header, &OuterLoopPreds[0], | 
