1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=indvars -S -indvars-predicate-loops=0 | FileCheck %s
4 ; Provide legal integer types.
5 target datalayout = "n8:16:32:64"
8 @a = common global i32 0, align 4
9 @c = common global i32 0, align 4
10 @b = common global i32 0, align 4
15 ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr @a, align 4
16 ; CHECK-NEXT: [[TOBOOL2:%.*]] = icmp eq i32 [[TMP0]], 0
17 ; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @a, align 4
18 ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[TMP1]], 0
19 ; CHECK-NEXT: br label [[FOR_COND2_PREHEADER:%.*]]
20 ; CHECK: for.cond2.preheader:
21 ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i32 [ [[INDVARS_IV_NEXT:%.*]], [[FOR_INC13:%.*]] ], [ -14, [[ENTRY:%.*]] ]
22 ; CHECK-NEXT: br i1 [[TOBOOL2]], label [[FOR_INC13]], label [[FOR_BODY3_LR_PH:%.*]]
23 ; CHECK: for.body3.lr.ph:
24 ; CHECK-NEXT: br i1 false, label [[FOR_BODY3_LR_PH_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_FOR_BODY3_LR_PH_SPLIT_CRIT_EDGE:%.*]]
25 ; CHECK: for.body3.lr.ph.for.body3.lr.ph.split_crit_edge:
26 ; CHECK-NEXT: br label [[FOR_BODY3_LR_PH_SPLIT:%.*]]
27 ; CHECK: for.body3.lr.ph.split.us:
28 ; CHECK-NEXT: br i1 [[TOBOOL]], label [[FOR_BODY3_LR_PH_SPLIT_US_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_SPLIT_US_FOR_BODY3_LR_PH_SPLIT_US_SPLIT_CRIT_EDGE:%.*]]
29 ; CHECK: for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge:
30 ; CHECK-NEXT: br label [[FOR_BODY3_LR_PH_SPLIT_US_SPLIT:%.*]]
31 ; CHECK: for.body3.lr.ph.split.us.split.us:
32 ; CHECK-NEXT: br label [[FOR_BODY3_US_US:%.*]]
33 ; CHECK: for.body3.us.us:
34 ; CHECK-NEXT: br i1 true, label [[COND_FALSE_US_US:%.*]], label [[COND_END_US_US:%.*]]
35 ; CHECK: cond.false.us.us:
36 ; CHECK-NEXT: br label [[COND_END_US_US]]
37 ; CHECK: cond.end.us.us:
38 ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr @b, align 4
39 ; CHECK-NEXT: [[CMP91_US_US:%.*]] = icmp slt i32 [[TMP2]], 1
40 ; CHECK-NEXT: br i1 [[CMP91_US_US]], label [[FOR_INC_LR_PH_US_US:%.*]], label [[FOR_COND2_LOOPEXIT_US_US:%.*]]
41 ; CHECK: for.cond2.loopexit.us.us:
42 ; CHECK-NEXT: br i1 true, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA_US:%.*]], label [[FOR_BODY3_US_US]]
43 ; CHECK: for.inc.lr.ph.us.us:
44 ; CHECK-NEXT: br label [[FOR_INC_US_US:%.*]]
45 ; CHECK: for.cond8.for.cond2.loopexit_crit_edge.us.us:
46 ; CHECK-NEXT: store i32 1, ptr @b, align 4
47 ; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT_US_US]]
48 ; CHECK: for.inc.us.us:
49 ; CHECK-NEXT: [[TMP3:%.*]] = phi i32 [ [[TMP2]], [[FOR_INC_LR_PH_US_US]] ], [ [[INC_US_US:%.*]], [[FOR_INC_US_US]] ]
50 ; CHECK-NEXT: [[INC_US_US]] = add nsw i32 [[TMP3]], 1
51 ; CHECK-NEXT: [[EXITCOND3:%.*]] = icmp ne i32 [[INC_US_US]], 1
52 ; CHECK-NEXT: br i1 [[EXITCOND3]], label [[FOR_INC_US_US]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US_US:%.*]]
53 ; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us:
54 ; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US:%.*]]
55 ; CHECK: for.body3.lr.ph.split.us.split:
56 ; CHECK-NEXT: br label [[FOR_BODY3_US:%.*]]
57 ; CHECK: for.body3.us:
58 ; CHECK-NEXT: br i1 true, label [[COND_FALSE_US:%.*]], label [[COND_END_US:%.*]]
59 ; CHECK: cond.false.us:
60 ; CHECK-NEXT: br label [[COND_END_US]]
62 ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr @b, align 4
63 ; CHECK-NEXT: [[CMP91_US:%.*]] = icmp slt i32 [[TMP4]], 1
64 ; CHECK-NEXT: br i1 [[CMP91_US]], label [[FOR_INC_LR_PH_US:%.*]], label [[FOR_COND2_LOOPEXIT_US:%.*]]
66 ; CHECK-NEXT: [[TMP5:%.*]] = phi i32 [ [[TMP4]], [[FOR_INC_LR_PH_US]] ], [ [[INC_US:%.*]], [[FOR_INC_US:%.*]] ]
67 ; CHECK-NEXT: [[INC_US]] = add nsw i32 [[TMP5]], 1
68 ; CHECK-NEXT: [[EXITCOND2:%.*]] = icmp ne i32 [[INC_US]], 1
69 ; CHECK-NEXT: br i1 [[EXITCOND2]], label [[FOR_INC_US]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US:%.*]]
70 ; CHECK: for.cond2.loopexit.us:
71 ; CHECK-NEXT: br i1 false, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_US_LCSSA:%.*]], label [[FOR_BODY3_US]]
72 ; CHECK: for.inc.lr.ph.us:
73 ; CHECK-NEXT: br label [[FOR_INC_US]]
74 ; CHECK: for.cond8.for.cond2.loopexit_crit_edge.us:
75 ; CHECK-NEXT: store i32 1, ptr @b, align 4
76 ; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT_US]]
77 ; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa:
78 ; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US]]
79 ; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us:
80 ; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE:%.*]]
81 ; CHECK: for.body3.lr.ph.split:
82 ; CHECK-NEXT: br i1 [[TOBOOL]], label [[FOR_BODY3_LR_PH_SPLIT_SPLIT_US:%.*]], label [[FOR_BODY3_LR_PH_SPLIT_FOR_BODY3_LR_PH_SPLIT_SPLIT_CRIT_EDGE:%.*]]
83 ; CHECK: for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge:
84 ; CHECK-NEXT: br label [[FOR_BODY3_LR_PH_SPLIT_SPLIT:%.*]]
85 ; CHECK: for.body3.lr.ph.split.split.us:
86 ; CHECK-NEXT: br label [[FOR_BODY3_US3:%.*]]
87 ; CHECK: for.body3.us3:
88 ; CHECK-NEXT: br i1 false, label [[COND_FALSE_US4:%.*]], label [[COND_END_US5:%.*]]
89 ; CHECK: cond.false.us4:
90 ; CHECK-NEXT: br label [[COND_END_US5]]
91 ; CHECK: cond.end.us5:
92 ; CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr @b, align 4
93 ; CHECK-NEXT: [[CMP91_US7:%.*]] = icmp slt i32 [[TMP6]], 1
94 ; CHECK-NEXT: br i1 [[CMP91_US7]], label [[FOR_INC_LR_PH_US12:%.*]], label [[FOR_COND2_LOOPEXIT_US11:%.*]]
96 ; CHECK-NEXT: [[TMP7:%.*]] = phi i32 [ [[TMP6]], [[FOR_INC_LR_PH_US12]] ], [ [[INC_US9:%.*]], [[FOR_INC_US8:%.*]] ]
97 ; CHECK-NEXT: [[INC_US9]] = add nsw i32 [[TMP7]], 1
98 ; CHECK-NEXT: [[EXITCOND1:%.*]] = icmp ne i32 [[INC_US9]], 1
99 ; CHECK-NEXT: br i1 [[EXITCOND1]], label [[FOR_INC_US8]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE_US13:%.*]]
100 ; CHECK: for.cond2.loopexit.us11:
101 ; CHECK-NEXT: br i1 true, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA_US:%.*]], label [[FOR_BODY3_US3]]
102 ; CHECK: for.inc.lr.ph.us12:
103 ; CHECK-NEXT: br label [[FOR_INC_US8]]
104 ; CHECK: for.cond8.for.cond2.loopexit_crit_edge.us13:
105 ; CHECK-NEXT: store i32 1, ptr @b, align 4
106 ; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT_US11]]
107 ; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us:
108 ; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA:%.*]]
109 ; CHECK: for.body3.lr.ph.split.split:
110 ; CHECK-NEXT: br label [[FOR_BODY3:%.*]]
111 ; CHECK: for.cond8.for.cond2.loopexit_crit_edge:
112 ; CHECK-NEXT: store i32 1, ptr @b, align 4
113 ; CHECK-NEXT: br label [[FOR_COND2_LOOPEXIT:%.*]]
114 ; CHECK: for.cond2.loopexit:
115 ; CHECK-NEXT: br i1 false, label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA_US_LCSSA:%.*]], label [[FOR_BODY3]]
117 ; CHECK-NEXT: br i1 false, label [[COND_FALSE:%.*]], label [[COND_END:%.*]]
119 ; CHECK-NEXT: br label [[COND_END]]
121 ; CHECK-NEXT: [[TMP8:%.*]] = load i32, ptr @b, align 4
122 ; CHECK-NEXT: [[CMP91:%.*]] = icmp slt i32 [[TMP8]], 1
123 ; CHECK-NEXT: br i1 [[CMP91]], label [[FOR_INC_LR_PH:%.*]], label [[FOR_COND2_LOOPEXIT]]
124 ; CHECK: for.inc.lr.ph:
125 ; CHECK-NEXT: br label [[FOR_INC:%.*]]
127 ; CHECK-NEXT: [[TMP9:%.*]] = phi i32 [ [[TMP8]], [[FOR_INC_LR_PH]] ], [ [[INC:%.*]], [[FOR_INC]] ]
128 ; CHECK-NEXT: [[INC]] = add nsw i32 [[TMP9]], 1
129 ; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[INC]], 1
130 ; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_INC]], label [[FOR_COND8_FOR_COND2_LOOPEXIT_CRIT_EDGE:%.*]]
131 ; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa:
132 ; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE_US_LCSSA]]
133 ; CHECK: for.cond2.for.inc13_crit_edge.us-lcssa:
134 ; CHECK-NEXT: br label [[FOR_COND2_FOR_INC13_CRIT_EDGE]]
135 ; CHECK: for.cond2.for.inc13_crit_edge:
136 ; CHECK-NEXT: store i32 [[INDVARS_IV]], ptr @c, align 4
137 ; CHECK-NEXT: br label [[FOR_INC13]]
139 ; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add nsw i32 [[INDVARS_IV]], 1
140 ; CHECK-NEXT: [[EXITCOND4:%.*]] = icmp ne i32 [[INDVARS_IV_NEXT]], 0
141 ; CHECK-NEXT: br i1 [[EXITCOND4]], label [[FOR_COND2_PREHEADER]], label [[FOR_END15:%.*]]
143 ; CHECK-NEXT: ret void
146 ; br i1 {{.*}}, label %[[for_inc13]], label %
148 %0 = load i32, ptr @a, align 4
149 %tobool2 = icmp eq i32 %0, 0
150 %1 = load i32, ptr @a, align 4
151 %tobool = icmp eq i32 %1, 0
152 br label %for.cond2.preheader
154 for.cond2.preheader: ; preds = %for.inc13, %entry
155 %storemerge15 = phi i8 [ -14, %entry ], [ %inc14, %for.inc13 ]
156 br i1 %tobool2, label %for.inc13, label %for.body3.lr.ph
158 for.body3.lr.ph: ; preds = %for.cond2.preheader
159 %tobool5 = icmp eq i8 %storemerge15, 0
160 %conv7 = sext i8 %storemerge15 to i32
161 %2 = add nsw i32 %conv7, 1
162 %3 = icmp ult i32 %2, 3
163 %div = select i1 %3, i32 %conv7, i32 0
164 br i1 %tobool5, label %for.body3.lr.ph.split.us, label %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge
166 for.body3.lr.ph.for.body3.lr.ph.split_crit_edge: ; preds = %for.body3.lr.ph
167 br label %for.body3.lr.ph.split
169 for.body3.lr.ph.split.us: ; preds = %for.body3.lr.ph
170 br i1 %tobool, label %for.body3.lr.ph.split.us.split.us, label %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge
172 for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge: ; preds = %for.body3.lr.ph.split.us
173 br label %for.body3.lr.ph.split.us.split
175 for.body3.lr.ph.split.us.split.us: ; preds = %for.body3.lr.ph.split.us
176 br label %for.body3.us.us
178 for.body3.us.us: ; preds = %for.cond2.loopexit.us.us, %for.body3.lr.ph.split.us.split.us
179 br i1 true, label %cond.false.us.us, label %cond.end.us.us
181 cond.false.us.us: ; preds = %for.body3.us.us
182 br label %cond.end.us.us
184 cond.end.us.us: ; preds = %cond.false.us.us, %for.body3.us.us
185 %cond.us.us = phi i32 [ %div, %cond.false.us.us ], [ %conv7, %for.body3.us.us ]
186 %4 = load i32, ptr @b, align 4
187 %cmp91.us.us = icmp slt i32 %4, 1
188 br i1 %cmp91.us.us, label %for.inc.lr.ph.us.us, label %for.cond2.loopexit.us.us
190 for.cond2.loopexit.us.us: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us.us, %cond.end.us.us
191 br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us, label %for.body3.us.us
193 for.inc.lr.ph.us.us: ; preds = %cond.end.us.us
194 br label %for.inc.us.us
196 for.cond8.for.cond2.loopexit_crit_edge.us.us: ; preds = %for.inc.us.us
197 %inc.lcssa.us.us = phi i32 [ %inc.us.us, %for.inc.us.us ]
198 store i32 %inc.lcssa.us.us, ptr @b, align 4
199 br label %for.cond2.loopexit.us.us
201 for.inc.us.us: ; preds = %for.inc.us.us, %for.inc.lr.ph.us.us
202 %5 = phi i32 [ %4, %for.inc.lr.ph.us.us ], [ %inc.us.us, %for.inc.us.us ]
203 %inc.us.us = add nsw i32 %5, 1
204 %cmp9.us.us = icmp slt i32 %inc.us.us, 1
205 br i1 %cmp9.us.us, label %for.inc.us.us, label %for.cond8.for.cond2.loopexit_crit_edge.us.us
207 for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us: ; preds = %for.cond2.loopexit.us.us
208 %cond.lcssa.ph.us.ph.us = phi i32 [ %cond.us.us, %for.cond2.loopexit.us.us ]
209 br label %for.cond2.for.inc13_crit_edge.us-lcssa.us
211 for.body3.lr.ph.split.us.split: ; preds = %for.body3.lr.ph.split.us.for.body3.lr.ph.split.us.split_crit_edge
212 br label %for.body3.us
214 for.body3.us: ; preds = %for.cond2.loopexit.us, %for.body3.lr.ph.split.us.split
215 br i1 true, label %cond.false.us, label %cond.end.us
217 cond.false.us: ; preds = %for.body3.us
218 br label %cond.end.us
220 cond.end.us: ; preds = %cond.false.us, %for.body3.us
221 %cond.us = phi i32 [ %div, %cond.false.us ], [ %conv7, %for.body3.us ]
222 %6 = load i32, ptr @b, align 4
223 %cmp91.us = icmp slt i32 %6, 1
224 br i1 %cmp91.us, label %for.inc.lr.ph.us, label %for.cond2.loopexit.us
226 for.inc.us: ; preds = %for.inc.lr.ph.us, %for.inc.us
227 %7 = phi i32 [ %6, %for.inc.lr.ph.us ], [ %inc.us, %for.inc.us ]
228 %inc.us = add nsw i32 %7, 1
229 %cmp9.us = icmp slt i32 %inc.us, 1
230 br i1 %cmp9.us, label %for.inc.us, label %for.cond8.for.cond2.loopexit_crit_edge.us
232 for.cond2.loopexit.us: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us, %cond.end.us
233 br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, label %for.body3.us
235 for.inc.lr.ph.us: ; preds = %cond.end.us
238 for.cond8.for.cond2.loopexit_crit_edge.us: ; preds = %for.inc.us
239 %inc.lcssa.us = phi i32 [ %inc.us, %for.inc.us ]
240 store i32 %inc.lcssa.us, ptr @b, align 4
241 br label %for.cond2.loopexit.us
243 for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa: ; preds = %for.cond2.loopexit.us
244 %cond.lcssa.ph.us.ph = phi i32 [ %cond.us, %for.cond2.loopexit.us ]
245 br label %for.cond2.for.inc13_crit_edge.us-lcssa.us
247 for.cond2.for.inc13_crit_edge.us-lcssa.us: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us
248 %cond.lcssa.ph.us = phi i32 [ %cond.lcssa.ph.us.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa ], [ %cond.lcssa.ph.us.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us.us-lcssa.us ]
249 br label %for.cond2.for.inc13_crit_edge
251 for.body3.lr.ph.split: ; preds = %for.body3.lr.ph.for.body3.lr.ph.split_crit_edge
252 br i1 %tobool, label %for.body3.lr.ph.split.split.us, label %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge
254 for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge: ; preds = %for.body3.lr.ph.split
255 br label %for.body3.lr.ph.split.split
257 for.body3.lr.ph.split.split.us: ; preds = %for.body3.lr.ph.split
258 br label %for.body3.us3
260 for.body3.us3: ; preds = %for.cond2.loopexit.us11, %for.body3.lr.ph.split.split.us
261 br i1 false, label %cond.false.us4, label %cond.end.us5
263 cond.false.us4: ; preds = %for.body3.us3
264 br label %cond.end.us5
266 cond.end.us5: ; preds = %cond.false.us4, %for.body3.us3
267 %cond.us6 = phi i32 [ %div, %cond.false.us4 ], [ %conv7, %for.body3.us3 ]
268 %8 = load i32, ptr @b, align 4
269 %cmp91.us7 = icmp slt i32 %8, 1
270 br i1 %cmp91.us7, label %for.inc.lr.ph.us12, label %for.cond2.loopexit.us11
272 for.inc.us8: ; preds = %for.inc.lr.ph.us12, %for.inc.us8
273 %9 = phi i32 [ %8, %for.inc.lr.ph.us12 ], [ %inc.us9, %for.inc.us8 ]
274 %inc.us9 = add nsw i32 %9, 1
275 %cmp9.us10 = icmp slt i32 %inc.us9, 1
276 br i1 %cmp9.us10, label %for.inc.us8, label %for.cond8.for.cond2.loopexit_crit_edge.us13
278 for.cond2.loopexit.us11: ; preds = %for.cond8.for.cond2.loopexit_crit_edge.us13, %cond.end.us5
279 br i1 true, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us, label %for.body3.us3
281 for.inc.lr.ph.us12: ; preds = %cond.end.us5
282 br label %for.inc.us8
284 for.cond8.for.cond2.loopexit_crit_edge.us13: ; preds = %for.inc.us8
285 %inc.lcssa.us14 = phi i32 [ %inc.us9, %for.inc.us8 ]
286 store i32 %inc.lcssa.us14, ptr @b, align 4
287 br label %for.cond2.loopexit.us11
289 for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us: ; preds = %for.cond2.loopexit.us11
290 %cond.lcssa.ph.ph.us = phi i32 [ %cond.us6, %for.cond2.loopexit.us11 ]
291 br label %for.cond2.for.inc13_crit_edge.us-lcssa
293 for.body3.lr.ph.split.split: ; preds = %for.body3.lr.ph.split.for.body3.lr.ph.split.split_crit_edge
296 for.cond8.for.cond2.loopexit_crit_edge: ; preds = %for.inc
297 %inc.lcssa = phi i32 [ %inc, %for.inc ]
298 store i32 %inc.lcssa, ptr @b, align 4
299 br label %for.cond2.loopexit
301 for.cond2.loopexit: ; preds = %cond.end, %for.cond8.for.cond2.loopexit_crit_edge
302 br i1 false, label %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, label %for.body3
304 for.body3: ; preds = %for.cond2.loopexit, %for.body3.lr.ph.split.split
305 br i1 false, label %cond.false, label %cond.end
307 cond.false: ; preds = %for.body3
310 cond.end: ; preds = %cond.false, %for.body3
311 %cond = phi i32 [ %div, %cond.false ], [ %conv7, %for.body3 ]
312 %10 = load i32, ptr @b, align 4
313 %cmp91 = icmp slt i32 %10, 1
314 br i1 %cmp91, label %for.inc.lr.ph, label %for.cond2.loopexit
316 for.inc.lr.ph: ; preds = %cond.end
319 for.inc: ; preds = %for.inc, %for.inc.lr.ph
320 %11 = phi i32 [ %10, %for.inc.lr.ph ], [ %inc, %for.inc ]
321 %inc = add nsw i32 %11, 1
322 %cmp9 = icmp slt i32 %inc, 1
323 br i1 %cmp9, label %for.inc, label %for.cond8.for.cond2.loopexit_crit_edge
325 for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa: ; preds = %for.cond2.loopexit
326 %cond.lcssa.ph.ph = phi i32 [ %cond, %for.cond2.loopexit ]
327 br label %for.cond2.for.inc13_crit_edge.us-lcssa
329 for.cond2.for.inc13_crit_edge.us-lcssa: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us
330 %cond.lcssa.ph = phi i32 [ %cond.lcssa.ph.ph, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa ], [ %cond.lcssa.ph.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us-lcssa.us ]
331 br label %for.cond2.for.inc13_crit_edge
333 for.cond2.for.inc13_crit_edge: ; preds = %for.cond2.for.inc13_crit_edge.us-lcssa, %for.cond2.for.inc13_crit_edge.us-lcssa.us
334 %cond.lcssa = phi i32 [ %cond.lcssa.ph, %for.cond2.for.inc13_crit_edge.us-lcssa ], [ %cond.lcssa.ph.us, %for.cond2.for.inc13_crit_edge.us-lcssa.us ]
335 store i32 %cond.lcssa, ptr @c, align 4
338 for.inc13: ; preds = %for.cond2.for.inc13_crit_edge, %for.cond2.preheader
339 %inc14 = add i8 %storemerge15, 1
340 %cmp = icmp ugt i8 %inc14, 50
341 br i1 %cmp, label %for.cond2.preheader, label %for.end15
343 for.end15: ; preds = %for.inc13