mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +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!");
|
||||
Instruction *InsertPt = Call;
|
||||
if (InvokeInst *II = dyn_cast<InvokeInst>(Call)) {
|
||||
InsertPt = II->getNormalDest()->begin();
|
||||
assert(!isa<PHINode>(InsertPt) &&
|
||||
"Can't have a use of the invoke value if the edge is critical");
|
||||
BasicBlock::iterator IP = II->getNormalDest()->begin();
|
||||
while (isa<PHINode>(IP)) ++IP;
|
||||
InsertPt = IP;
|
||||
}
|
||||
|
||||
// We used to return a struct. Instead of doing smart stuff with all the
|
||||
|
@ -13,3 +13,14 @@ T:
|
||||
T2:
|
||||
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…
Reference in New Issue
Block a user