reapply 86289, 86278, 86270, 86267, 86266 & 86264 plus a fix

(making pred factoring only happen if threading is guaranteed
to be successful).

This now survives an X86-64 bootstrap of llvm-gcc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86355 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2009-11-07 08:05:03 +00:00
parent e880efe446
commit 5729d38c81
3 changed files with 416 additions and 243 deletions

View File

@@ -170,5 +170,36 @@ BB4:
}
;; This tests that the branch in 'merge' can be cloned up into T1.
;; rdar://7367025
define i32 @test7(i1 %cond, i1 %cond2) {
Entry:
; CHECK: @test7
%v1 = call i32 @f1()
br i1 %cond, label %Merge, label %F1
F1:
%v2 = call i32 @f2()
br label %Merge
Merge:
%B = phi i32 [%v1, %Entry], [%v2, %F1]
%M = icmp ne i32 %B, %v1
%N = icmp eq i32 %B, 47
%O = and i1 %M, %N
br i1 %O, label %T2, label %F2
; CHECK: Merge:
; CHECK-NOT: phi
; CHECK-NEXT: %v2 = call i32 @f2()
T2:
call void @f3()
ret i32 %B
F2:
ret i32 %B
; CHECK: F2:
; CHECK-NEXT: phi i32
}

View File

@@ -170,3 +170,25 @@ bb32.i:
ret i32 1
}
define fastcc void @test5(i1 %tmp, i32 %tmp1) nounwind ssp {
entry:
br i1 %tmp, label %bb12, label %bb13
bb12:
br label %bb13
bb13:
%.lcssa31 = phi i32 [ undef, %bb12 ], [ %tmp1, %entry ]
%A = and i1 undef, undef
br i1 %A, label %bb15, label %bb61
bb15:
ret void
bb61:
ret void
}