[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / LoopUnrollAndJam / unroll-and-jam-many-instr.ll
blobae1d2e9a1b95c77457161bcc9e558ad96534de9b
1 ; RUN: opt -basic-aa -tbaa -loop-unroll-and-jam  -allow-unroll-and-jam -unroll-and-jam-count=4 < %s -S | FileCheck %s
2 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
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 i32* 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
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
21 define dso_local void @test1(i32 %i) {
22 entry:
23   %0 = load i32, i32* @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
27 for.cond1.preheader.lr.ph:                        ; preds = %entry
28   %1 = load i32*, i32** @c, align 8, !tbaa !5
29   br label %for.cond1.preheader
31 for.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
35 for.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, i32* @f, align 4, !tbaa !1
307   %2 = load i32, i32* @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
311 for.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, i8* @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, i32* %1, align 4, !tbaa !1
318   %4 = load i8, i8* @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, i32* %1, align 4, !tbaa !1
323   %5 = load i8, i8* @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, i32* %1, align 4, !tbaa !1
328   %6 = load i8, i8* @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, i32* %1, align 4, !tbaa !1
333   %7 = load i8, i8* @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, i32* %1, align 4, !tbaa !1
338   %8 = load i8, i8* @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, i32* %1, align 4, !tbaa !1
343   %9 = load i8, i8* @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, i32* %1, align 4, !tbaa !1
348   %10 = load i8, i8* @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, i32* %1, align 4, !tbaa !1
353   %11 = load i8, i8* @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, i32* %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
362 for.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, i64* @e, align 8, !tbaa !8
365   store i64 10, i64* @g, align 8, !tbaa !8
366   br label %for.end27
368 for.end27:                                        ; preds = %for.cond.for.end27_crit_edge, %entry
369   ret void
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}