fix PR4963: folding insertvalue would sometimes turn a packed struct into
[llvm/avr.git] / test / Transforms / InstCombine / phi-merge.ll
blobc41f50325d6f9995dbde6b22e734d3996ed04d53
1 ; RUN: opt < %s -instcombine -S | not grep {phi i32}
2 ; PR1777
4 declare i1 @rrr()
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
13 one:
14 %x = phi i32 [%i, %entry], [%y, %two]
15 %c = call i1 @rrr()
16 br i1 %c, label %two, label %end
18 two:
19 %y = phi i32 [%i, %entry], [%x, %one]
20 %d = call i1 @rrr()
21 br i1 %d, label %one, label %end
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