new testcase, distilled from povray
[oota-llvm.git] / test / Transforms / LoopUnswitch / 2006-06-13-SingleEntryPHI.ll
1 ; RUN: llvm-as < %s | opt -loop-unswitch -disable-output
2
3         %struct.BLEND_MAP = type { short, short, short, int, %struct.BLEND_MAP_ENTRY* }
4         %struct.BLEND_MAP_ENTRY = type { float, ubyte, { [5 x float], [4 x ubyte] } }
5         %struct.TPATTERN = type { ushort, ushort, ushort, int, float, float, float, %struct.WARP*, %struct.TPATTERN*, %struct.BLEND_MAP*, { %struct.anon, [4 x ubyte] } }
6         %struct.TURB = type { ushort, %struct.WARP*, [3 x double], int, float, float }
7         %struct.WARP = type { ushort, %struct.WARP* }
8         %struct.anon = type { float, [3 x double] }
9
10 implementation   ; Functions:
11
12 void %Parse_Pattern() {
13 entry:
14         br label %bb1096.outer20
15
16 bb671:          ; preds = %cond_true1099
17         br label %bb1096.outer23
18
19 bb1096.outer20.loopexit:                ; preds = %cond_true1099
20         %Local_Turb.0.ph24.lcssa = phi %struct.TURB* [ %Local_Turb.0.ph24, %cond_true1099 ]             ; <%struct.TURB*> [#uses=1]
21         br label %bb1096.outer20
22
23 bb1096.outer20:         ; preds = %bb1096.outer20.loopexit, %entry
24         %Local_Turb.0.ph22 = phi %struct.TURB* [ undef, %entry ], [ %Local_Turb.0.ph24.lcssa, %bb1096.outer20.loopexit ]                ; <%struct.TURB*> [#uses=1]
25         %tmp1098 = seteq int 0, 0               ; <bool> [#uses=1]
26         br label %bb1096.outer23
27
28 bb1096.outer23:         ; preds = %bb1096.outer20, %bb671
29         %Local_Turb.0.ph24 = phi %struct.TURB* [ %Local_Turb.0.ph22, %bb1096.outer20 ], [ null, %bb671 ]                ; <%struct.TURB*> [#uses=2]
30         br label %bb1096
31
32 bb1096:         ; preds = %cond_true1099, %bb1096.outer23
33         br bool %tmp1098, label %cond_true1099, label %bb1102
34
35 cond_true1099:          ; preds = %bb1096
36         switch int 0, label %bb1096.outer20.loopexit [
37                  int 161, label %bb671
38                  int 359, label %bb1096
39         ]
40
41 bb1102:         ; preds = %bb1096
42         %Local_Turb.0.ph24.lcssa1 = phi %struct.TURB* [ %Local_Turb.0.ph24, %bb1096 ]           ; <%struct.TURB*> [#uses=0]
43         ret void
44 }