xref: /llvm-project/llvm/test/Transforms/LoopUnrollAndJam/unroll-and-jam-many-instr.ll (revision 055fb7795aa219a3d274d280ec9129784f169f56)
1; RUN: opt -passes=loop-unroll-and-jam  -allow-unroll-and-jam -unroll-and-jam-count=4 < %s -S | FileCheck %s
2target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
3
4@a = common dso_local local_unnamed_addr global i32 0, align 4
5@b = common dso_local local_unnamed_addr global i8 0, align 1
6@e = common dso_local local_unnamed_addr global i64 0, align 8
7@c = common dso_local local_unnamed_addr global ptr null, align 8
8@g = common dso_local local_unnamed_addr global i64 0, align 8
9@f = common dso_local local_unnamed_addr global i32 0, align 4
10
11; Check that the loop won't be UAJ and it will finish.
12; This loops triggers a exponential explosion of the algorithm.
13; CHECK-LABEL: test1
14; CHECK: entry
15; CHECK: for.cond1.preheader.lr.ph
16; CHECK: for.cond1.preheader
17; CHECK: for.cond13.preheader
18; CHECK: for.cond4.preheader
19; CHECK: for.cond.for.end27_crit_edge
20; CHECK: for.end27
21define dso_local void @test1(i32 %i) {
22entry:
23  %0 = load i32, ptr @a, align 4, !tbaa !1
24  %tobool40 = icmp eq i32 %0, 0
25  br i1 %tobool40, label %for.end27, label %for.cond1.preheader.lr.ph
26
27for.cond1.preheader.lr.ph:                        ; preds = %entry
28  %1 = load ptr, ptr @c, align 8, !tbaa !5
29  br label %for.cond1.preheader
30
31for.cond1.preheader:                              ; preds = %for.cond1.preheader.lr.ph, %for.cond13.preheader
32  %i.addr.041 = phi i32 [ %i, %for.cond1.preheader.lr.ph ], [ %xor.8.9, %for.cond13.preheader ]
33  br label %for.cond4.preheader
34
35for.cond13.preheader:                             ; preds = %for.cond4.preheader
36  %tobool21 = icmp ne i32 %i.addr.041, 0
37  %lor.ext = zext i1 %tobool21 to i32
38  %xor = xor i32 %i.addr.041, %lor.ext
39  %tobool21.1 = icmp ne i32 %xor, 0
40  %lor.ext.1 = zext i1 %tobool21.1 to i32
41  %xor.1 = xor i32 %xor, %lor.ext.1
42  %tobool21.2 = icmp ne i32 %xor.1, 0
43  %lor.ext.2 = zext i1 %tobool21.2 to i32
44  %xor.2 = xor i32 %xor.1, %lor.ext.2
45  %tobool21.3 = icmp ne i32 %xor.2, 0
46  %lor.ext.3 = zext i1 %tobool21.3 to i32
47  %xor.3 = xor i32 %xor.2, %lor.ext.3
48  %tobool21.4 = icmp ne i32 %xor.3, 0
49  %lor.ext.4 = zext i1 %tobool21.4 to i32
50  %xor.4 = xor i32 %xor.3, %lor.ext.4
51  %tobool21.5 = icmp ne i32 %xor.4, 0
52  %lor.ext.5 = zext i1 %tobool21.5 to i32
53  %xor.5 = xor i32 %xor.4, %lor.ext.5
54  %tobool21.6 = icmp ne i32 %xor.5, 0
55  %lor.ext.6 = zext i1 %tobool21.6 to i32
56  %xor.6 = xor i32 %xor.5, %lor.ext.6
57  %tobool21.7 = icmp ne i32 %xor.6, 0
58  %lor.ext.7 = zext i1 %tobool21.7 to i32
59  %xor.7 = xor i32 %xor.6, %lor.ext.7
60  %tobool21.8 = icmp ne i32 %xor.7, 0
61  %lor.ext.8 = zext i1 %tobool21.8 to i32
62  %xor.8 = xor i32 %xor.7, %lor.ext.8
63  %tobool21.142 = icmp ne i32 %xor.8, 0
64  %lor.ext.143 = zext i1 %tobool21.142 to i32
65  %xor.144 = xor i32 %xor.8, %lor.ext.143
66  %tobool21.1.1 = icmp ne i32 %xor.144, 0
67  %lor.ext.1.1 = zext i1 %tobool21.1.1 to i32
68  %xor.1.1 = xor i32 %xor.144, %lor.ext.1.1
69  %tobool21.2.1 = icmp ne i32 %xor.1.1, 0
70  %lor.ext.2.1 = zext i1 %tobool21.2.1 to i32
71  %xor.2.1 = xor i32 %xor.1.1, %lor.ext.2.1
72  %tobool21.3.1 = icmp ne i32 %xor.2.1, 0
73  %lor.ext.3.1 = zext i1 %tobool21.3.1 to i32
74  %xor.3.1 = xor i32 %xor.2.1, %lor.ext.3.1
75  %tobool21.4.1 = icmp ne i32 %xor.3.1, 0
76  %lor.ext.4.1 = zext i1 %tobool21.4.1 to i32
77  %xor.4.1 = xor i32 %xor.3.1, %lor.ext.4.1
78  %tobool21.5.1 = icmp ne i32 %xor.4.1, 0
79  %lor.ext.5.1 = zext i1 %tobool21.5.1 to i32
80  %xor.5.1 = xor i32 %xor.4.1, %lor.ext.5.1
81  %tobool21.6.1 = icmp ne i32 %xor.5.1, 0
82  %lor.ext.6.1 = zext i1 %tobool21.6.1 to i32
83  %xor.6.1 = xor i32 %xor.5.1, %lor.ext.6.1
84  %tobool21.7.1 = icmp ne i32 %xor.6.1, 0
85  %lor.ext.7.1 = zext i1 %tobool21.7.1 to i32
86  %xor.7.1 = xor i32 %xor.6.1, %lor.ext.7.1
87  %tobool21.8.1 = icmp ne i32 %xor.7.1, 0
88  %lor.ext.8.1 = zext i1 %tobool21.8.1 to i32
89  %xor.8.1 = xor i32 %xor.7.1, %lor.ext.8.1
90  %tobool21.245 = icmp ne i32 %xor.8.1, 0
91  %lor.ext.246 = zext i1 %tobool21.245 to i32
92  %xor.247 = xor i32 %xor.8.1, %lor.ext.246
93  %tobool21.1.2 = icmp ne i32 %xor.247, 0
94  %lor.ext.1.2 = zext i1 %tobool21.1.2 to i32
95  %xor.1.2 = xor i32 %xor.247, %lor.ext.1.2
96  %tobool21.2.2 = icmp ne i32 %xor.1.2, 0
97  %lor.ext.2.2 = zext i1 %tobool21.2.2 to i32
98  %xor.2.2 = xor i32 %xor.1.2, %lor.ext.2.2
99  %tobool21.3.2 = icmp ne i32 %xor.2.2, 0
100  %lor.ext.3.2 = zext i1 %tobool21.3.2 to i32
101  %xor.3.2 = xor i32 %xor.2.2, %lor.ext.3.2
102  %tobool21.4.2 = icmp ne i32 %xor.3.2, 0
103  %lor.ext.4.2 = zext i1 %tobool21.4.2 to i32
104  %xor.4.2 = xor i32 %xor.3.2, %lor.ext.4.2
105  %tobool21.5.2 = icmp ne i32 %xor.4.2, 0
106  %lor.ext.5.2 = zext i1 %tobool21.5.2 to i32
107  %xor.5.2 = xor i32 %xor.4.2, %lor.ext.5.2
108  %tobool21.6.2 = icmp ne i32 %xor.5.2, 0
109  %lor.ext.6.2 = zext i1 %tobool21.6.2 to i32
110  %xor.6.2 = xor i32 %xor.5.2, %lor.ext.6.2
111  %tobool21.7.2 = icmp ne i32 %xor.6.2, 0
112  %lor.ext.7.2 = zext i1 %tobool21.7.2 to i32
113  %xor.7.2 = xor i32 %xor.6.2, %lor.ext.7.2
114  %tobool21.8.2 = icmp ne i32 %xor.7.2, 0
115  %lor.ext.8.2 = zext i1 %tobool21.8.2 to i32
116  %xor.8.2 = xor i32 %xor.7.2, %lor.ext.8.2
117  %tobool21.348 = icmp ne i32 %xor.8.2, 0
118  %lor.ext.349 = zext i1 %tobool21.348 to i32
119  %xor.350 = xor i32 %xor.8.2, %lor.ext.349
120  %tobool21.1.3 = icmp ne i32 %xor.350, 0
121  %lor.ext.1.3 = zext i1 %tobool21.1.3 to i32
122  %xor.1.3 = xor i32 %xor.350, %lor.ext.1.3
123  %tobool21.2.3 = icmp ne i32 %xor.1.3, 0
124  %lor.ext.2.3 = zext i1 %tobool21.2.3 to i32
125  %xor.2.3 = xor i32 %xor.1.3, %lor.ext.2.3
126  %tobool21.3.3 = icmp ne i32 %xor.2.3, 0
127  %lor.ext.3.3 = zext i1 %tobool21.3.3 to i32
128  %xor.3.3 = xor i32 %xor.2.3, %lor.ext.3.3
129  %tobool21.4.3 = icmp ne i32 %xor.3.3, 0
130  %lor.ext.4.3 = zext i1 %tobool21.4.3 to i32
131  %xor.4.3 = xor i32 %xor.3.3, %lor.ext.4.3
132  %tobool21.5.3 = icmp ne i32 %xor.4.3, 0
133  %lor.ext.5.3 = zext i1 %tobool21.5.3 to i32
134  %xor.5.3 = xor i32 %xor.4.3, %lor.ext.5.3
135  %tobool21.6.3 = icmp ne i32 %xor.5.3, 0
136  %lor.ext.6.3 = zext i1 %tobool21.6.3 to i32
137  %xor.6.3 = xor i32 %xor.5.3, %lor.ext.6.3
138  %tobool21.7.3 = icmp ne i32 %xor.6.3, 0
139  %lor.ext.7.3 = zext i1 %tobool21.7.3 to i32
140  %xor.7.3 = xor i32 %xor.6.3, %lor.ext.7.3
141  %tobool21.8.3 = icmp ne i32 %xor.7.3, 0
142  %lor.ext.8.3 = zext i1 %tobool21.8.3 to i32
143  %xor.8.3 = xor i32 %xor.7.3, %lor.ext.8.3
144  %tobool21.451 = icmp ne i32 %xor.8.3, 0
145  %lor.ext.452 = zext i1 %tobool21.451 to i32
146  %xor.453 = xor i32 %xor.8.3, %lor.ext.452
147  %tobool21.1.4 = icmp ne i32 %xor.453, 0
148  %lor.ext.1.4 = zext i1 %tobool21.1.4 to i32
149  %xor.1.4 = xor i32 %xor.453, %lor.ext.1.4
150  %tobool21.2.4 = icmp ne i32 %xor.1.4, 0
151  %lor.ext.2.4 = zext i1 %tobool21.2.4 to i32
152  %xor.2.4 = xor i32 %xor.1.4, %lor.ext.2.4
153  %tobool21.3.4 = icmp ne i32 %xor.2.4, 0
154  %lor.ext.3.4 = zext i1 %tobool21.3.4 to i32
155  %xor.3.4 = xor i32 %xor.2.4, %lor.ext.3.4
156  %tobool21.4.4 = icmp ne i32 %xor.3.4, 0
157  %lor.ext.4.4 = zext i1 %tobool21.4.4 to i32
158  %xor.4.4 = xor i32 %xor.3.4, %lor.ext.4.4
159  %tobool21.5.4 = icmp ne i32 %xor.4.4, 0
160  %lor.ext.5.4 = zext i1 %tobool21.5.4 to i32
161  %xor.5.4 = xor i32 %xor.4.4, %lor.ext.5.4
162  %tobool21.6.4 = icmp ne i32 %xor.5.4, 0
163  %lor.ext.6.4 = zext i1 %tobool21.6.4 to i32
164  %xor.6.4 = xor i32 %xor.5.4, %lor.ext.6.4
165  %tobool21.7.4 = icmp ne i32 %xor.6.4, 0
166  %lor.ext.7.4 = zext i1 %tobool21.7.4 to i32
167  %xor.7.4 = xor i32 %xor.6.4, %lor.ext.7.4
168  %tobool21.8.4 = icmp ne i32 %xor.7.4, 0
169  %lor.ext.8.4 = zext i1 %tobool21.8.4 to i32
170  %xor.8.4 = xor i32 %xor.7.4, %lor.ext.8.4
171  %tobool21.554 = icmp ne i32 %xor.8.4, 0
172  %lor.ext.555 = zext i1 %tobool21.554 to i32
173  %xor.556 = xor i32 %xor.8.4, %lor.ext.555
174  %tobool21.1.5 = icmp ne i32 %xor.556, 0
175  %lor.ext.1.5 = zext i1 %tobool21.1.5 to i32
176  %xor.1.5 = xor i32 %xor.556, %lor.ext.1.5
177  %tobool21.2.5 = icmp ne i32 %xor.1.5, 0
178  %lor.ext.2.5 = zext i1 %tobool21.2.5 to i32
179  %xor.2.5 = xor i32 %xor.1.5, %lor.ext.2.5
180  %tobool21.3.5 = icmp ne i32 %xor.2.5, 0
181  %lor.ext.3.5 = zext i1 %tobool21.3.5 to i32
182  %xor.3.5 = xor i32 %xor.2.5, %lor.ext.3.5
183  %tobool21.4.5 = icmp ne i32 %xor.3.5, 0
184  %lor.ext.4.5 = zext i1 %tobool21.4.5 to i32
185  %xor.4.5 = xor i32 %xor.3.5, %lor.ext.4.5
186  %tobool21.5.5 = icmp ne i32 %xor.4.5, 0
187  %lor.ext.5.5 = zext i1 %tobool21.5.5 to i32
188  %xor.5.5 = xor i32 %xor.4.5, %lor.ext.5.5
189  %tobool21.6.5 = icmp ne i32 %xor.5.5, 0
190  %lor.ext.6.5 = zext i1 %tobool21.6.5 to i32
191  %xor.6.5 = xor i32 %xor.5.5, %lor.ext.6.5
192  %tobool21.7.5 = icmp ne i32 %xor.6.5, 0
193  %lor.ext.7.5 = zext i1 %tobool21.7.5 to i32
194  %xor.7.5 = xor i32 %xor.6.5, %lor.ext.7.5
195  %tobool21.8.5 = icmp ne i32 %xor.7.5, 0
196  %lor.ext.8.5 = zext i1 %tobool21.8.5 to i32
197  %xor.8.5 = xor i32 %xor.7.5, %lor.ext.8.5
198  %tobool21.657 = icmp ne i32 %xor.8.5, 0
199  %lor.ext.658 = zext i1 %tobool21.657 to i32
200  %xor.659 = xor i32 %xor.8.5, %lor.ext.658
201  %tobool21.1.6 = icmp ne i32 %xor.659, 0
202  %lor.ext.1.6 = zext i1 %tobool21.1.6 to i32
203  %xor.1.6 = xor i32 %xor.659, %lor.ext.1.6
204  %tobool21.2.6 = icmp ne i32 %xor.1.6, 0
205  %lor.ext.2.6 = zext i1 %tobool21.2.6 to i32
206  %xor.2.6 = xor i32 %xor.1.6, %lor.ext.2.6
207  %tobool21.3.6 = icmp ne i32 %xor.2.6, 0
208  %lor.ext.3.6 = zext i1 %tobool21.3.6 to i32
209  %xor.3.6 = xor i32 %xor.2.6, %lor.ext.3.6
210  %tobool21.4.6 = icmp ne i32 %xor.3.6, 0
211  %lor.ext.4.6 = zext i1 %tobool21.4.6 to i32
212  %xor.4.6 = xor i32 %xor.3.6, %lor.ext.4.6
213  %tobool21.5.6 = icmp ne i32 %xor.4.6, 0
214  %lor.ext.5.6 = zext i1 %tobool21.5.6 to i32
215  %xor.5.6 = xor i32 %xor.4.6, %lor.ext.5.6
216  %tobool21.6.6 = icmp ne i32 %xor.5.6, 0
217  %lor.ext.6.6 = zext i1 %tobool21.6.6 to i32
218  %xor.6.6 = xor i32 %xor.5.6, %lor.ext.6.6
219  %tobool21.7.6 = icmp ne i32 %xor.6.6, 0
220  %lor.ext.7.6 = zext i1 %tobool21.7.6 to i32
221  %xor.7.6 = xor i32 %xor.6.6, %lor.ext.7.6
222  %tobool21.8.6 = icmp ne i32 %xor.7.6, 0
223  %lor.ext.8.6 = zext i1 %tobool21.8.6 to i32
224  %xor.8.6 = xor i32 %xor.7.6, %lor.ext.8.6
225  %tobool21.760 = icmp ne i32 %xor.8.6, 0
226  %lor.ext.761 = zext i1 %tobool21.760 to i32
227  %xor.762 = xor i32 %xor.8.6, %lor.ext.761
228  %tobool21.1.7 = icmp ne i32 %xor.762, 0
229  %lor.ext.1.7 = zext i1 %tobool21.1.7 to i32
230  %xor.1.7 = xor i32 %xor.762, %lor.ext.1.7
231  %tobool21.2.7 = icmp ne i32 %xor.1.7, 0
232  %lor.ext.2.7 = zext i1 %tobool21.2.7 to i32
233  %xor.2.7 = xor i32 %xor.1.7, %lor.ext.2.7
234  %tobool21.3.7 = icmp ne i32 %xor.2.7, 0
235  %lor.ext.3.7 = zext i1 %tobool21.3.7 to i32
236  %xor.3.7 = xor i32 %xor.2.7, %lor.ext.3.7
237  %tobool21.4.7 = icmp ne i32 %xor.3.7, 0
238  %lor.ext.4.7 = zext i1 %tobool21.4.7 to i32
239  %xor.4.7 = xor i32 %xor.3.7, %lor.ext.4.7
240  %tobool21.5.7 = icmp ne i32 %xor.4.7, 0
241  %lor.ext.5.7 = zext i1 %tobool21.5.7 to i32
242  %xor.5.7 = xor i32 %xor.4.7, %lor.ext.5.7
243  %tobool21.6.7 = icmp ne i32 %xor.5.7, 0
244  %lor.ext.6.7 = zext i1 %tobool21.6.7 to i32
245  %xor.6.7 = xor i32 %xor.5.7, %lor.ext.6.7
246  %tobool21.7.7 = icmp ne i32 %xor.6.7, 0
247  %lor.ext.7.7 = zext i1 %tobool21.7.7 to i32
248  %xor.7.7 = xor i32 %xor.6.7, %lor.ext.7.7
249  %tobool21.8.7 = icmp ne i32 %xor.7.7, 0
250  %lor.ext.8.7 = zext i1 %tobool21.8.7 to i32
251  %xor.8.7 = xor i32 %xor.7.7, %lor.ext.8.7
252  %tobool21.863 = icmp ne i32 %xor.8.7, 0
253  %lor.ext.864 = zext i1 %tobool21.863 to i32
254  %xor.865 = xor i32 %xor.8.7, %lor.ext.864
255  %tobool21.1.8 = icmp ne i32 %xor.865, 0
256  %lor.ext.1.8 = zext i1 %tobool21.1.8 to i32
257  %xor.1.8 = xor i32 %xor.865, %lor.ext.1.8
258  %tobool21.2.8 = icmp ne i32 %xor.1.8, 0
259  %lor.ext.2.8 = zext i1 %tobool21.2.8 to i32
260  %xor.2.8 = xor i32 %xor.1.8, %lor.ext.2.8
261  %tobool21.3.8 = icmp ne i32 %xor.2.8, 0
262  %lor.ext.3.8 = zext i1 %tobool21.3.8 to i32
263  %xor.3.8 = xor i32 %xor.2.8, %lor.ext.3.8
264  %tobool21.4.8 = icmp ne i32 %xor.3.8, 0
265  %lor.ext.4.8 = zext i1 %tobool21.4.8 to i32
266  %xor.4.8 = xor i32 %xor.3.8, %lor.ext.4.8
267  %tobool21.5.8 = icmp ne i32 %xor.4.8, 0
268  %lor.ext.5.8 = zext i1 %tobool21.5.8 to i32
269  %xor.5.8 = xor i32 %xor.4.8, %lor.ext.5.8
270  %tobool21.6.8 = icmp ne i32 %xor.5.8, 0
271  %lor.ext.6.8 = zext i1 %tobool21.6.8 to i32
272  %xor.6.8 = xor i32 %xor.5.8, %lor.ext.6.8
273  %tobool21.7.8 = icmp ne i32 %xor.6.8, 0
274  %lor.ext.7.8 = zext i1 %tobool21.7.8 to i32
275  %xor.7.8 = xor i32 %xor.6.8, %lor.ext.7.8
276  %tobool21.8.8 = icmp ne i32 %xor.7.8, 0
277  %lor.ext.8.8 = zext i1 %tobool21.8.8 to i32
278  %xor.8.8 = xor i32 %xor.7.8, %lor.ext.8.8
279  %tobool21.9 = icmp ne i32 %xor.8.8, 0
280  %lor.ext.9 = zext i1 %tobool21.9 to i32
281  %xor.9 = xor i32 %xor.8.8, %lor.ext.9
282  %tobool21.1.9 = icmp ne i32 %xor.9, 0
283  %lor.ext.1.9 = zext i1 %tobool21.1.9 to i32
284  %xor.1.9 = xor i32 %xor.9, %lor.ext.1.9
285  %tobool21.2.9 = icmp ne i32 %xor.1.9, 0
286  %lor.ext.2.9 = zext i1 %tobool21.2.9 to i32
287  %xor.2.9 = xor i32 %xor.1.9, %lor.ext.2.9
288  %tobool21.3.9 = icmp ne i32 %xor.2.9, 0
289  %lor.ext.3.9 = zext i1 %tobool21.3.9 to i32
290  %xor.3.9 = xor i32 %xor.2.9, %lor.ext.3.9
291  %tobool21.4.9 = icmp ne i32 %xor.3.9, 0
292  %lor.ext.4.9 = zext i1 %tobool21.4.9 to i32
293  %xor.4.9 = xor i32 %xor.3.9, %lor.ext.4.9
294  %tobool21.5.9 = icmp ne i32 %xor.4.9, 0
295  %lor.ext.5.9 = zext i1 %tobool21.5.9 to i32
296  %xor.5.9 = xor i32 %xor.4.9, %lor.ext.5.9
297  %tobool21.6.9 = icmp ne i32 %xor.5.9, 0
298  %lor.ext.6.9 = zext i1 %tobool21.6.9 to i32
299  %xor.6.9 = xor i32 %xor.5.9, %lor.ext.6.9
300  %tobool21.7.9 = icmp ne i32 %xor.6.9, 0
301  %lor.ext.7.9 = zext i1 %tobool21.7.9 to i32
302  %xor.7.9 = xor i32 %xor.6.9, %lor.ext.7.9
303  %tobool21.8.9 = icmp ne i32 %xor.7.9, 0
304  %lor.ext.8.9 = zext i1 %tobool21.8.9 to i32
305  %xor.8.9 = xor i32 %xor.7.9, %lor.ext.8.9
306  store i32 10, ptr @f, align 4, !tbaa !1
307  %2 = load i32, ptr @a, align 4, !tbaa !1
308  %tobool = icmp eq i32 %2, 0
309  br i1 %tobool, label %for.cond.for.end27_crit_edge, label %for.cond1.preheader
310
311for.cond4.preheader:                              ; preds = %for.cond1.preheader, %for.cond4.preheader
312  %j.035 = phi i32 [ 9, %for.cond1.preheader ], [ %dec11, %for.cond4.preheader ]
313  %3 = load i8, ptr @b, align 1, !tbaa !7
314  %conv = zext i8 %3 to i32
315  %cmp = icmp sgt i32 %i.addr.041, %conv
316  %conv7 = zext i1 %cmp to i32
317  store i32 %conv7, ptr %1, align 4, !tbaa !1
318  %4 = load i8, ptr @b, align 1, !tbaa !7
319  %conv.1 = zext i8 %4 to i32
320  %cmp.1 = icmp sgt i32 %i.addr.041, %conv.1
321  %conv7.1 = zext i1 %cmp.1 to i32
322  store i32 %conv7.1, ptr %1, align 4, !tbaa !1
323  %5 = load i8, ptr @b, align 1, !tbaa !7
324  %conv.2 = zext i8 %5 to i32
325  %cmp.2 = icmp sgt i32 %i.addr.041, %conv.2
326  %conv7.2 = zext i1 %cmp.2 to i32
327  store i32 %conv7.2, ptr %1, align 4, !tbaa !1
328  %6 = load i8, ptr @b, align 1, !tbaa !7
329  %conv.3 = zext i8 %6 to i32
330  %cmp.3 = icmp sgt i32 %i.addr.041, %conv.3
331  %conv7.3 = zext i1 %cmp.3 to i32
332  store i32 %conv7.3, ptr %1, align 4, !tbaa !1
333  %7 = load i8, ptr @b, align 1, !tbaa !7
334  %conv.4 = zext i8 %7 to i32
335  %cmp.4 = icmp sgt i32 %i.addr.041, %conv.4
336  %conv7.4 = zext i1 %cmp.4 to i32
337  store i32 %conv7.4, ptr %1, align 4, !tbaa !1
338  %8 = load i8, ptr @b, align 1, !tbaa !7
339  %conv.5 = zext i8 %8 to i32
340  %cmp.5 = icmp sgt i32 %i.addr.041, %conv.5
341  %conv7.5 = zext i1 %cmp.5 to i32
342  store i32 %conv7.5, ptr %1, align 4, !tbaa !1
343  %9 = load i8, ptr @b, align 1, !tbaa !7
344  %conv.6 = zext i8 %9 to i32
345  %cmp.6 = icmp sgt i32 %i.addr.041, %conv.6
346  %conv7.6 = zext i1 %cmp.6 to i32
347  store i32 %conv7.6, ptr %1, align 4, !tbaa !1
348  %10 = load i8, ptr @b, align 1, !tbaa !7
349  %conv.7 = zext i8 %10 to i32
350  %cmp.7 = icmp sgt i32 %i.addr.041, %conv.7
351  %conv7.7 = zext i1 %cmp.7 to i32
352  store i32 %conv7.7, ptr %1, align 4, !tbaa !1
353  %11 = load i8, ptr @b, align 1, !tbaa !7
354  %conv.8 = zext i8 %11 to i32
355  %cmp.8 = icmp sgt i32 %i.addr.041, %conv.8
356  %conv7.8 = zext i1 %cmp.8 to i32
357  store i32 %conv7.8, ptr %1, align 4, !tbaa !1
358  %dec11 = add nsw i32 %j.035, -1
359  %tobool2 = icmp eq i32 %dec11, 0
360  br i1 %tobool2, label %for.cond13.preheader, label %for.cond4.preheader
361
362for.cond.for.end27_crit_edge:                     ; preds = %for.cond13.preheader
363  %conv8.le.le = zext i1 %cmp.8 to i64
364  store i64 %conv8.le.le, ptr @e, align 8, !tbaa !8
365  store i64 10, ptr @g, align 8, !tbaa !8
366  br label %for.end27
367
368for.end27:                                        ; preds = %for.cond.for.end27_crit_edge, %entry
369  ret void
370}
371
372!1 = !{!2, !2, i64 0}
373!2 = !{!"int", !3, i64 0}
374!3 = !{!"omnipotent char", !4, i64 0}
375!4 = !{!"Simple C/C++ TBAA"}
376!5 = !{!6, !6, i64 0}
377!6 = !{!"any pointer", !3, i64 0}
378!7 = !{!3, !3, i64 0}
379!8 = !{!9, !9, i64 0}
380!9 = !{!"long", !3, i64 0}
381