mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
merge phi-merge.ll into phi.ll
I don't know what Dan wants to do with phi-merge-gep.ll, I'll let him deal with it because instcombine may end up sinking these. llvm-svn: 85739
This commit is contained in:
parent
f3c2039dde
commit
326adfb172
@ -1,31 +0,0 @@
|
|||||||
; RUN: opt < %s -instcombine -S | not grep {phi i32}
|
|
||||||
; PR1777
|
|
||||||
|
|
||||||
declare i1 @rrr()
|
|
||||||
|
|
||||||
define i1 @zxcv() {
|
|
||||||
entry:
|
|
||||||
%a = alloca i32
|
|
||||||
%i = ptrtoint i32* %a to i32
|
|
||||||
%b = call i1 @rrr()
|
|
||||||
br i1 %b, label %one, label %two
|
|
||||||
|
|
||||||
one:
|
|
||||||
%x = phi i32 [%i, %entry], [%y, %two]
|
|
||||||
%c = call i1 @rrr()
|
|
||||||
br i1 %c, label %two, label %end
|
|
||||||
|
|
||||||
two:
|
|
||||||
%y = phi i32 [%i, %entry], [%x, %one]
|
|
||||||
%d = call i1 @rrr()
|
|
||||||
br i1 %d, label %one, label %end
|
|
||||||
|
|
||||||
end:
|
|
||||||
%f = phi i32 [ %x, %one], [%y, %two]
|
|
||||||
; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
|
|
||||||
; even though %f must equal %i at this point
|
|
||||||
%g = inttoptr i32 %f to i32*
|
|
||||||
store i32 10, i32* %g
|
|
||||||
%z = call i1 @rrr()
|
|
||||||
ret i1 %z
|
|
||||||
}
|
|
@ -186,6 +186,39 @@ bb2:
|
|||||||
; CHECK-NEXT: phi i32* [ %B, %bb ], [ %A, %bb1 ]
|
; CHECK-NEXT: phi i32* [ %B, %bb ], [ %A, %bb1 ]
|
||||||
; CHECK-NEXT: %E = load i32* %{{[^,]*}}, align 16
|
; CHECK-NEXT: %E = load i32* %{{[^,]*}}, align 16
|
||||||
; CHECK-NEXT: ret i32 %E
|
; CHECK-NEXT: ret i32 %E
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; PR1777
|
||||||
|
declare i1 @test11a()
|
||||||
|
|
||||||
|
define i1 @test11() {
|
||||||
|
entry:
|
||||||
|
%a = alloca i32
|
||||||
|
%i = ptrtoint i32* %a to i32
|
||||||
|
%b = call i1 @test11a()
|
||||||
|
br i1 %b, label %one, label %two
|
||||||
|
|
||||||
|
one:
|
||||||
|
%x = phi i32 [%i, %entry], [%y, %two]
|
||||||
|
%c = call i1 @test11a()
|
||||||
|
br i1 %c, label %two, label %end
|
||||||
|
|
||||||
|
two:
|
||||||
|
%y = phi i32 [%i, %entry], [%x, %one]
|
||||||
|
%d = call i1 @test11a()
|
||||||
|
br i1 %d, label %one, label %end
|
||||||
|
|
||||||
|
end:
|
||||||
|
%f = phi i32 [ %x, %one], [%y, %two]
|
||||||
|
; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
|
||||||
|
; even though %f must equal %i at this point
|
||||||
|
%g = inttoptr i32 %f to i32*
|
||||||
|
store i32 10, i32* %g
|
||||||
|
%z = call i1 @test11a()
|
||||||
|
ret i1 %z
|
||||||
|
; CHECK: @test11
|
||||||
|
; CHECK-NOT: phi i32
|
||||||
|
; CHECK: ret i1 %z
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user