blob: 6c53029ea655f75d3a0de42975df8a0848fda8ec [file] [log] [blame]
Dan Gohmanf17a25c2007-07-18 16:29:46 +00001; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output
2; PR584
3
4%g_38098584 = external global uint ; <uint*> [#uses=1]
5%g_60187400 = external global uint ; <uint*> [#uses=1]
6%g_59182229 = external global uint ; <uint*> [#uses=2]
7
8implementation ; Functions:
9
10int %_Z13func_26556482h(ubyte %l_88173906) {
11entry:
12 %tmp.1 = cast ubyte %l_88173906 to sbyte ; <sbyte> [#uses=2]
13 %tmp.3 = seteq ubyte %l_88173906, 0 ; <bool> [#uses=1]
14 br bool %tmp.3, label %else.0, label %then.0
15
16then.0: ; preds = %entry
17 %tmp.5 = seteq ubyte %l_88173906, 0 ; <bool> [#uses=1]
18 br bool %tmp.5, label %else.1, label %then.1
19
20then.1: ; preds = %then.0
21 br label %return
22
23else.1: ; preds = %then.0
24 br label %loopentry.0
25
26loopentry.0: ; preds = %no_exit.0, %else.1
27 %i.0.1 = phi int [ 0, %else.1 ], [ %inc.0, %no_exit.0 ] ; <int> [#uses=2]
28 %tmp.9 = setgt int %i.0.1, 99 ; <bool> [#uses=1]
29 br bool %tmp.9, label %endif.0, label %no_exit.0
30
31no_exit.0: ; preds = %loopentry.0
32 %inc.0 = add int %i.0.1, 1 ; <int> [#uses=1]
33 br label %loopentry.0
34
35else.0: ; preds = %entry
36 %tmp.12 = cast sbyte %tmp.1 to int ; <int> [#uses=1]
37 br label %return
38
39endif.0: ; preds = %loopentry.0
40 %tmp.14 = cast sbyte %tmp.1 to int ; <int> [#uses=1]
41 %tmp.16 = cast ubyte %l_88173906 to int ; <int> [#uses=1]
42 %tmp.17 = setgt int %tmp.14, %tmp.16 ; <bool> [#uses=1]
43 %tmp.19 = load uint* %g_59182229 ; <uint> [#uses=2]
44 br bool %tmp.17, label %cond_true, label %cond_false
45
46cond_true: ; preds = %endif.0
47 %tmp.20 = setne uint %tmp.19, 1 ; <bool> [#uses=1]
48 br label %cond_continue
49
50cond_false: ; preds = %endif.0
51 %tmp.22 = setne uint %tmp.19, 0 ; <bool> [#uses=1]
52 br label %cond_continue
53
54cond_continue: ; preds = %cond_false, %cond_true
55 %mem_tmp.0 = phi bool [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ] ; <bool> [#uses=1]
56 br bool %mem_tmp.0, label %then.2, label %else.2
57
58then.2: ; preds = %cond_continue
59 %tmp.25 = cast ubyte %l_88173906 to int ; <int> [#uses=1]
60 br label %return
61
62else.2: ; preds = %cond_continue
63 br label %loopentry.1
64
65loopentry.1: ; preds = %endif.3, %else.2
66 %i.1.1 = phi int [ 0, %else.2 ], [ %inc.3, %endif.3 ] ; <int> [#uses=2]
67 %i.3.2 = phi int [ undef, %else.2 ], [ %i.3.0, %endif.3 ] ; <int> [#uses=2]
68 %l_88173906_addr.1 = phi ubyte [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ] ; <ubyte> [#uses=3]
69 %tmp.29 = setgt int %i.1.1, 99 ; <bool> [#uses=1]
70 br bool %tmp.29, label %endif.2, label %no_exit.1
71
72no_exit.1: ; preds = %loopentry.1
73 %tmp.30 = load uint* %g_38098584 ; <uint> [#uses=1]
74 %tmp.31 = seteq uint %tmp.30, 0 ; <bool> [#uses=1]
75 br bool %tmp.31, label %else.3, label %then.3
76
77then.3: ; preds = %no_exit.1
78 br label %endif.3
79
80else.3: ; preds = %no_exit.1
81 br bool false, label %else.4, label %then.4
82
83then.4: ; preds = %else.3
84 br label %endif.3
85
86else.4: ; preds = %else.3
87 br bool false, label %else.5, label %then.5
88
89then.5: ; preds = %else.4
90 store uint 3290648471, uint* %g_59182229
91 br label %return
92
93else.5: ; preds = %else.4
94 br label %loopentry.3
95
96loopentry.3: ; preds = %then.7, %else.5
97 %i.3.3 = phi int [ 0, %else.5 ], [ %inc.2, %then.7 ] ; <int> [#uses=3]
98 %tmp.55 = setgt int %i.3.3, 99 ; <bool> [#uses=1]
99 br bool %tmp.55, label %endif.3, label %no_exit.3
100
101no_exit.3: ; preds = %loopentry.3
102 %tmp.57 = seteq ubyte %l_88173906_addr.1, 0 ; <bool> [#uses=1]
103 br bool %tmp.57, label %else.7, label %then.7
104
105then.7: ; preds = %no_exit.3
106 store uint 16239, uint* %g_60187400
107 %inc.2 = add int %i.3.3, 1 ; <int> [#uses=1]
108 br label %loopentry.3
109
110else.7: ; preds = %no_exit.3
111 br label %return
112
113endif.3: ; preds = %loopentry.3, %then.4, %then.3
114 %i.3.0 = phi int [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ] ; <int> [#uses=1]
115 %l_88173906_addr.0 = phi ubyte [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ] ; <ubyte> [#uses=1]
116 %inc.3 = add int %i.1.1, 1 ; <int> [#uses=1]
117 br label %loopentry.1
118
119endif.2: ; preds = %loopentry.1
120 br label %return
121
122return: ; preds = %endif.2, %else.7, %then.5, %then.2, %else.0, %then.1
123 %result.0 = phi int [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ] ; <int> [#uses=1]
124 ret int %result.0
125}