fix PR4963: folding insertvalue would sometimes turn a packed struct into
[llvm/avr.git] / test / Transforms / LoopIndexSplit / 2008-03-24-ExitPhi.ll
blobca22e50eadfcfaa0f4eac0936160c1ffa2474e65
1 ; RUN: opt < %s -loop-index-split -disable-output
2 ; Handle Exit block phis that do not have any use inside the loop.
4         %struct.ATOM = type { double, double, double, double, double, double, i32, double, double, double, double, i8*, i8, [9 x i8], double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, [200 x i8*], [32 x i8*], [32 x i8], i32 }
5         %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
6         %struct.__sFILEX = type opaque
7         %struct.__sbuf = type { i8*, i32 }
9 define i32 @math([80 x i8]* %tokens, double* %fvalue, i32* %ivalue, %struct.FILE* %ip, %struct.FILE* %op, i32 %echo) nounwind  {
10 entry:
11         br i1 false, label %bb.i, label %bb35.i
12 bb.i:           ; preds = %entry
13         br i1 false, label %bb6.i, label %bb9.i
14 bb9.i:          ; preds = %bb.i
15         ret i32 0
16 bb35.i:         ; preds = %entry
17         ret i32 0
18 bb6.i:          ; preds = %bb.i
19         br i1 false, label %a_l2_f.exit, label %bb16.i
20 bb16.i:         ; preds = %bb6.i
21         ret i32 0
22 a_l2_f.exit:            ; preds = %bb6.i
23         br i1 false, label %bb7.i97, label %bb6.i71
24 bb6.i71:                ; preds = %a_l2_f.exit
25         ret i32 0
26 bb7.i97:                ; preds = %a_l2_f.exit
27         br i1 false, label %bb, label %bb18.i102
28 bb18.i102:              ; preds = %bb7.i97
29         ret i32 0
30 bb:             ; preds = %bb7.i97
31         br i1 false, label %bb38, label %AFOUND
32 bb38:           ; preds = %bb
33         br i1 false, label %bb111, label %bb7.i120
34 AFOUND:         ; preds = %bb
35         ret i32 0
36 bb7.i120:               ; preds = %bb38
37         ret i32 0
38 bb111:          ; preds = %bb38
39         switch i32 0, label %bb574 [
40                  i32 1, label %bb158
41                  i32 0, label %bb166
42         ]
43 bb158:          ; preds = %bb111
44         ret i32 0
45 bb166:          ; preds = %bb111
46         ret i32 0
47 bb574:          ; preds = %bb111
48         br i1 false, label %bb11.i249, label %bb600
49 bb11.i249:              ; preds = %bb574
50         br i1 false, label %bb11.i265, label %bb596
51 bb11.i265:              ; preds = %bb590, %bb11.i249
52         %i.1.reg2mem.0 = phi i32 [ %tmp589.reg2mem.0, %bb590 ], [ 0, %bb11.i249 ]               ; <i32> [#uses=2]
53         %tmp13.i264 = icmp slt i32 %i.1.reg2mem.0, 1            ; <i1> [#uses=1]
54         br i1 %tmp13.i264, label %bb16.i267, label %bb30.i279
55 bb16.i267:              ; preds = %bb11.i265
56         br label %bb590
57 bb30.i279:              ; preds = %bb11.i265
58         br label %bb590
59 bb590:          ; preds = %bb30.i279, %bb16.i267
60         %tmp5876282.reg2mem.0 = phi %struct.ATOM* [ null, %bb30.i279 ], [ null, %bb16.i267 ]            ; <%struct.ATOM*> [#uses=1]
61         %tmp589.reg2mem.0 = add i32 %i.1.reg2mem.0, 1           ; <i32> [#uses=2]
62         %tmp593 = icmp slt i32 %tmp589.reg2mem.0, 0             ; <i1> [#uses=1]
63         br i1 %tmp593, label %bb11.i265, label %bb596
64 bb596:          ; preds = %bb590, %bb11.i249
65         %ap.0.reg2mem.0 = phi %struct.ATOM* [ null, %bb11.i249 ], [ %tmp5876282.reg2mem.0, %bb590 ]             ; <%struct.ATOM*> [#uses=0]
66         ret i32 0
67 bb600:          ; preds = %bb574
68         ret i32 0