mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-18 13:34:04 +00:00
aha, DAE does have to think about PHI nodes. Many thanks to "Dr Evil" (aka Duncan)
for pointing this out :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67212 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b44b3666f9
commit
a5affdcf4c
@ -803,9 +803,9 @@ bool DAE::RemoveDeadStuffFromFunction(Function *F) {
|
|||||||
" must have been a struct!");
|
" must have been a struct!");
|
||||||
Instruction *InsertPt = Call;
|
Instruction *InsertPt = Call;
|
||||||
if (InvokeInst *II = dyn_cast<InvokeInst>(Call)) {
|
if (InvokeInst *II = dyn_cast<InvokeInst>(Call)) {
|
||||||
InsertPt = II->getNormalDest()->begin();
|
BasicBlock::iterator IP = II->getNormalDest()->begin();
|
||||||
assert(!isa<PHINode>(InsertPt) &&
|
while (isa<PHINode>(IP)) ++IP;
|
||||||
"Can't have a use of the invoke value if the edge is critical");
|
InsertPt = IP;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We used to return a struct. Instead of doing smart stuff with all the
|
// We used to return a struct. Instead of doing smart stuff with all the
|
||||||
|
@ -13,3 +13,14 @@ T:
|
|||||||
T2:
|
T2:
|
||||||
unreachable
|
unreachable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define i32 @bar2() {
|
||||||
|
entry:
|
||||||
|
%x = invoke {i32,i32} @foo() to label %T unwind label %T2
|
||||||
|
T:
|
||||||
|
%PN = phi i32 [0, %entry]
|
||||||
|
%y = extractvalue {i32,i32} %x, 1
|
||||||
|
ret i32 %y
|
||||||
|
T2:
|
||||||
|
unreachable
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user