mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-06 09:44:39 +00:00
PR4317: Handle splits where the new block is unreachable correctly in
DominatorTreeBase::Split. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72810 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
77648cfd75
commit
a8ba2c25e9
@ -270,12 +270,17 @@ protected:
|
||||
NewBBIDom = PredBlocks[i];
|
||||
break;
|
||||
}
|
||||
assert(i != PredBlocks.size() && "No reachable preds?");
|
||||
|
||||
// It's possible that none of the predecessors of NewBB are reachable;
|
||||
// in that case, NewBB itself is unreachable, so nothing needs to be
|
||||
// changed.
|
||||
if (!NewBBIDom)
|
||||
return;
|
||||
|
||||
for (i = i + 1; i < PredBlocks.size(); ++i) {
|
||||
if (DT.isReachableFromEntry(PredBlocks[i]))
|
||||
NewBBIDom = DT.findNearestCommonDominator(NewBBIDom, PredBlocks[i]);
|
||||
}
|
||||
assert(NewBBIDom && "No immediate dominator found??");
|
||||
|
||||
// Create the new dominator tree node... and set the idom of NewBB.
|
||||
DomTreeNodeBase<NodeT> *NewBBNode = DT.addNewBlock(NewBB, NewBBIDom);
|
||||
|
15
test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll
Normal file
15
test/CodeGen/Generic/2009-06-03-UnreachableSplitPad.ll
Normal file
@ -0,0 +1,15 @@
|
||||
; RUN: llvm-as < %s | llc
|
||||
; PR4317
|
||||
|
||||
declare i32 @b()
|
||||
|
||||
define void @a() {
|
||||
entry:
|
||||
ret void
|
||||
|
||||
dummy:
|
||||
invoke i32 @b() to label %reg unwind label %reg
|
||||
|
||||
reg:
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user