aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2009-03-12 21:13:42 +0000
committerDuncan Sands <baldrick@free.fr>2009-03-12 21:13:42 +0000
commit58256f83c86d85df24874db0db78b0bc972d6258 (patch)
tree621b35004e94e39fd3e001092f6df57657ca66f2
parent87af5f029645652e1721aef9c6ed4310bfec54c5 (diff)
Revert commit 66140 since it caused several failures
in the Ada testcase. Reverting this only covers up the real problem, which is a nasty conceptual difficulty in the phi elimination pass: when eliminating phi nodes in landing pads, the register copies need to come before the invoke, not at the end of the basic block which is too late... See PR3784. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66826 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/CodeGenPrepare.cpp6
-rw-r--r--test/CodeGen/X86/split-eh-lpad-edges.ll1
2 files changed, 1 insertions, 6 deletions
diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp
index 85e57661c1..1f3a13cc9c 100644
--- a/lib/Transforms/Scalar/CodeGenPrepare.cpp
+++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp
@@ -327,12 +327,6 @@ static void SplitEdgeNicely(TerminatorInst *TI, unsigned SuccNum,
assert(isa<PHINode>(Dest->begin()) &&
"This should only be called if Dest has a PHI!");
- // Do not split edges to EH landing pads.
- if (InvokeInst *Invoke = dyn_cast<InvokeInst>(TI)) {
- if (Invoke->getSuccessor(1) == Dest)
- return;
- }
-
// As a hack, never split backedges of loops. Even though the copy for any
// PHIs inserted on the backedge would be dead for exits from the loop, we
// assume that the cost of *splitting* the backedge would be too high.
diff --git a/test/CodeGen/X86/split-eh-lpad-edges.ll b/test/CodeGen/X86/split-eh-lpad-edges.ll
index 281ee7782d..2cc8e54672 100644
--- a/test/CodeGen/X86/split-eh-lpad-edges.ll
+++ b/test/CodeGen/X86/split-eh-lpad-edges.ll
@@ -1,5 +1,6 @@
; RUN: llvm-as < %s | llc -mtriple=x86_64-apple-darwin | not grep jmp
; rdar://6647639
+; XFAIL: *
%struct.FetchPlanHeader = type { i8*, i8*, i32, i8*, i8*, i8*, i8*, i8*, %struct.NSObject* (%struct.NSObject*, %struct.objc_selector*, ...)*, %struct.__attributeDescriptionFlags }
%struct.NSArray = type { %struct.NSObject }