mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
Fix Transforms/SimplifyCFG/2006-02-17-InfiniteUnroll.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26275 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6a9f57c7ef
commit
299520de7c
@ -1426,8 +1426,8 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
|
||||
PBI->setSuccessor(1, OldTrue);
|
||||
}
|
||||
|
||||
if (PBI->getSuccessor(0) == TrueDest ||
|
||||
PBI->getSuccessor(1) == FalseDest) {
|
||||
if ((PBI->getSuccessor(0) == TrueDest && FalseDest != BB) ||
|
||||
(PBI->getSuccessor(1) == FalseDest && TrueDest != BB)) {
|
||||
// Clone Cond into the predecessor basic block, and or/and the
|
||||
// two conditions together.
|
||||
Instruction *New = Cond->clone();
|
||||
@ -1512,6 +1512,12 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
|
||||
PBIOp = BIOp = -1;
|
||||
}
|
||||
|
||||
// Check to make sure that the other destination of this branch
|
||||
// isn't BB itself. If so, this is an infinite loop that will
|
||||
// keep getting unwound.
|
||||
if (PBIOp != -1 && PBI->getSuccessor(PBIOp) == BB)
|
||||
PBIOp = BIOp = -1;
|
||||
|
||||
// Finally, if everything is ok, fold the branches to logical ops.
|
||||
if (PBIOp != -1) {
|
||||
BasicBlock *CommonDest = PBI->getSuccessor(PBIOp);
|
||||
|
Loading…
Reference in New Issue
Block a user