Ignoring per-user file.
[oota-llvm.git] / test / Transforms / InstCombine / phi-merge.ll
1 ; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep {phi i32}
2 ; PR1777
3
4 declare i1 @rrr()
5
6 define i1 @zxcv() {
7 entry:
8 %a = alloca i32
9 %i = ptrtoint i32* %a to i32
10 %b = call i1 @rrr()
11 br i1 %b, label %one, label %two
12
13 one:
14 %x = phi i32 [%i, %entry], [%y, %two]
15 %c = call i1 @rrr()
16 br i1 %c, label %two, label %end
17
18 two:
19 %y = phi i32 [%i, %entry], [%x, %one]
20 %d = call i1 @rrr()
21 br i1 %d, label %one, label %end
22
23 end:
24 %f = phi i32 [ %x, %one], [%y, %two]
25 ; Change the %f to %i, and the optimizer suddenly becomes a lot smarter
26 ; even though %f must equal %i at this point
27 %g = inttoptr i32 %f to i32*
28 store i32 10, i32* %g
29 %z = call i1 @rrr()
30 ret i1 %z
31 }