summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/2009-03-13-PHIElimBug.ll
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2009-03-17 09:46:22 +0000
committerDuncan Sands <baldrick@free.fr>2009-03-17 09:46:22 +0000
commita5fec0dba34206274041543b5924d2565fb10f9b (patch)
treec2ee6005084bc221adbbf888188fc6ae026b6f2a /test/CodeGen/X86/2009-03-13-PHIElimBug.ll
parent93b7415f4cc9a83126f1d89b2d2f51a204b09dd6 (diff)
downloadllvm-a5fec0dba34206274041543b5924d2565fb10f9b.tar.gz
llvm-a5fec0dba34206274041543b5924d2565fb10f9b.tar.bz2
llvm-a5fec0dba34206274041543b5924d2565fb10f9b.tar.xz
Reapply r67049, with the test adjusted for darwin
(which produces "call L_f$stub" rather than "call f"). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67079 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/2009-03-13-PHIElimBug.ll')
-rw-r--r--test/CodeGen/X86/2009-03-13-PHIElimBug.ll55
1 files changed, 23 insertions, 32 deletions
diff --git a/test/CodeGen/X86/2009-03-13-PHIElimBug.ll b/test/CodeGen/X86/2009-03-13-PHIElimBug.ll
index ea4150c22c..b01556de48 100644
--- a/test/CodeGen/X86/2009-03-13-PHIElimBug.ll
+++ b/test/CodeGen/X86/2009-03-13-PHIElimBug.ll
@@ -1,37 +1,28 @@
-; RUN: llvm-as < %s | llc -mtriple=i386-pc-linux-gnu -stats |& grep phielim | grep {Number of EH try blocks skipped} | grep 4
+; RUN: llvm-as < %s | llc -march=x86 | grep -A 2 {call.*f} | grep movl
+; Check the register copy comes after the call to f and before the call to g
; PR3784
- %struct.c38002a__arr___XUB = type { i32, i32 }
- %struct.c38002a__arr_name = type { [0 x i32]*, %struct.c38002a__arr___XUB* }
- %struct.c38002a__rec = type { i32, %struct.c38002a__arr_name }
+declare i32 @f()
-define void @_ada_c38002a() {
-entry:
- %0 = invoke i8* @__gnat_malloc(i32 12)
- to label %invcont unwind label %lpad ; <i8*> [#uses=0]
-
-invcont: ; preds = %entry
- %1 = invoke i8* @__gnat_malloc(i32 20)
- to label %invcont1 unwind label %lpad ; <i8*> [#uses=0]
-
-invcont1: ; preds = %invcont
- %2 = invoke i32 @report__ident_int(i32 2)
- to label %.noexc unwind label %lpad ; <i32> [#uses=0]
-
-.noexc: ; preds = %invcont1
- %3 = invoke i32 @report__ident_int(i32 3)
- to label %.noexc88 unwind label %lpad ; <i32> [#uses=0]
+declare i32 @g()
-.noexc88: ; preds = %.noexc
- unreachable
-
-lpad: ; preds = %.noexc, %invcont1, %invcont, %entry
- %r.0 = phi %struct.c38002a__rec* [ null, %entry ], [ null, %invcont ], [ null, %invcont1 ], [ null, %.noexc ] ; <%struct.c38002a__rec*> [#uses=1]
- %4 = getelementptr %struct.c38002a__rec* %r.0, i32 0, i32 0 ; <i32*> [#uses=1]
- %5 = load i32* %4, align 4 ; <i32> [#uses=0]
- ret void
+define i32 @phi() {
+entry:
+ %a = call i32 @f() ; <i32> [#uses=1]
+ %b = invoke i32 @g()
+ to label %cont unwind label %lpad ; <i32> [#uses=1]
+
+cont: ; preds = %entry
+ %x = phi i32 [ %b, %entry ] ; <i32> [#uses=0]
+ %aa = call i32 @g() ; <i32> [#uses=1]
+ %bb = invoke i32 @g()
+ to label %cont2 unwind label %lpad ; <i32> [#uses=1]
+
+cont2: ; preds = %cont
+ %xx = phi i32 [ %bb, %cont ] ; <i32> [#uses=1]
+ ret i32 %xx
+
+lpad: ; preds = %cont, %entry
+ %y = phi i32 [ %a, %entry ], [ %aa, %cont ] ; <i32> [#uses=1]
+ ret i32 %y
}
-
-declare i32 @report__ident_int(i32)
-
-declare i8* @__gnat_malloc(i32)