mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-12 06:06:19 +00:00
A BB that unwind_to an "unwind" inst is that same as one that doesn't unwind_to
at all. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48096 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3b646de036
commit
db96ae9607
@ -1370,7 +1370,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
|
||||
new UnwindInst(Pred); // Use unwind.
|
||||
Changed = true;
|
||||
}
|
||||
} else if (InvokeInst *II = dyn_cast<InvokeInst>(Pred->getTerminator()))
|
||||
} else if (InvokeInst *II = dyn_cast<InvokeInst>(Pred->getTerminator())) {
|
||||
if (II->getUnwindDest() == BB) {
|
||||
// Insert a new branch instruction before the invoke, because this
|
||||
// is now a fall through...
|
||||
@ -1388,6 +1388,9 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
|
||||
delete II;
|
||||
Changed = true;
|
||||
}
|
||||
} else if (Pred->getUnwindDest() == BB) {
|
||||
Pred->setUnwindDest(NULL);
|
||||
}
|
||||
|
||||
Preds.pop_back();
|
||||
}
|
||||
|
@ -33,3 +33,11 @@ bb4: unwind_to %cleanup
|
||||
cleanup:
|
||||
ret i32 1
|
||||
}
|
||||
|
||||
define i32 @f3() {
|
||||
entry: unwind_to %cleanup
|
||||
call void @g(i32 0)
|
||||
ret i32 0
|
||||
cleanup:
|
||||
unwind
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user