@@ -306,76 +306,58 @@ bb:
306306 ; CHECK: [[adr1:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 1
307307 ; CHECK: [[ld1:%.*]] = load i32, i32* [[adr1]], align 4
308308 ; CHECK: [[cmp1:%.*]] = icmp ne i32 [[ld1]], 0
309- %tmp5 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 1
310- %tmp6 = load i32 , i32* %tmp5 , align 4
311- %tmp7 = icmp ne i32 %tmp6 , 0
312- br i1 %tmp7 , label %bb12 , label %bb8
313-
314- bb8: ; preds = %bb
315309 ; CHECK: [[adr2:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 2
316310 ; CHECK: [[ld2:%.*]] = load i32, i32* [[adr2]], align 4
317311 ; CHECK: [[cmp2:%.*]] = icmp ne i32 [[ld2]], 0
312+ ; CHECK: [[bres1:%.*]] = or i1 [[cmp1]], [[cmp2]]
313+ ; CHECK: [[res1:%.*]] = zext i1 [[bres1]] to i32
314+ %tmp5 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 1
315+ %tmp6 = load i32 , i32* %tmp5 , align 4
316+ %tmp7 = icmp ne i32 %tmp6 , 0
318317 %tmp9 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 2
319318 %tmp10 = load i32 , i32* %tmp9 , align 4
320319 %tmp11 = icmp ne i32 %tmp10 , 0
321- br label %bb12
320+ %tmp13 = or i1 %tmp7 , %tmp11
321+ %tmp14 = zext i1 %tmp13 to i32
322322
323- bb12: ; preds = %bb8, %bb
324- ; CHECK: [[bres1:%.*]] = phi i1 [ true, %bb ], [ [[cmp2]], %bb8 ]
325- ; CHECK: [[res1:%.*]] = zext i1 [[bres1]] to i32
326323 ; CHECK: [[adr2:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 2
327324 ; CHECK: [[ld2:%.*]] = load i32, i32* [[adr2]], align 4
328325 ; CHECK: [[cmp2:%.*]] = icmp ne i32 [[ld2]], 0
329- %tmp13 = phi i1 [ true , %bb ], [ %tmp11 , %bb8 ]
330- %tmp14 = zext i1 %tmp13 to i32
331- %tmp15 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 2
332- %tmp16 = load i32 , i32* %tmp15 , align 4
333- %tmp17 = icmp ne i32 %tmp16 , 0
334- br i1 %tmp17 , label %bb18 , label %bb22
335-
336- bb18: ; preds = %bb12
337326 ; CHECK: [[adr3:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 3
338327 ; CHECK: [[ld3:%.*]] = load i32, i32* [[adr3]], align 4
339328 ; CHECK: [[cmp3:%.*]] = icmp ne i32 [[ld3]], 0
329+ ; CHECK: [[bres2:%.*]] = and i1 [[cmp2]], [[cmp3]]
330+ ; CHECK: [[res2:%.*]] = zext i1 [[bres2]] to i32
331+ %tmp15 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 2
332+ %tmp16 = load i32 , i32* %tmp15 , align 4
333+ %tmp17 = icmp ne i32 %tmp16 , 0
340334 %tmp19 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 3
341335 %tmp20 = load i32 , i32* %tmp19 , align 4
342336 %tmp21 = icmp ne i32 %tmp20 , 0
343- br label %bb22
344-
345- bb22: ; preds = %bb18, %bb12
337+ %tmp23 = and i1 %tmp17 , %tmp21
338+ %tmp24 = zext i1 %tmp23 to i32
346339
347- ; CHECK: [[bres2:%.*]] = phi i1 [ false, %bb12 ], [ [[cmp3]], %bb18 ]
348- ; CHECK: [[res2:%.*]] = zext i1 [[bres2]] to i32
349340 ; CHECK: [[adr3:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 3
350341 ; CHECK: [[ld3:%.*]] = load i32, i32* [[adr3]], align 4
351342 ; CHECK: [[cmp3:%.*]] = icmp ne i32 [[ld3]], 0
352- %tmp23 = phi i1 [ false , %bb12 ], [ %tmp21 , %bb18 ]
353- %tmp24 = zext i1 %tmp23 to i32
343+ ; CHECK: [[adr4:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 4
344+ ; CHECK: [[ld4:%.*]] = load i32, i32* [[adr4]], align 4
345+ ; CHECK: [[cmp4:%.*]] = icmp ne i32 [[ld4]], 0
346+ ; CHECK: [[adr5:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 5
347+ ; CHECK: [[ld5:%.*]] = load i32, i32* [[adr5]], align 4
348+ ; CHECK: [[cmp5:%.*]] = icmp ne i32 [[ld5]], 0
349+ ; CHECK: [[bres3:%.*]] = select i1 [[cmp3]], i1 [[cmp4]], i1 [[cmp5]]
350+ ; CHECK: [[res3:%.*]] = zext i1 [[bres3]] to i32
354351 %tmp25 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 3
355352 %tmp26 = load i32 , i32* %tmp25 , align 4
356353 %tmp27 = icmp ne i32 %tmp26 , 0
357- br i1 %tmp27 , label %bb28 , label %bb31
358-
359- bb28: ; preds = %bb22
360- ; CHECK: [[adr4:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 4
361- ; CHECK: [[ld4:%.*]] = load i32, i32* [[adr4]], align 4
362354 %tmp29 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 4
363355 %tmp30 = load i32 , i32* %tmp29 , align 4
364- br label %bb34
365-
366- bb31: ; preds = %bb22
367- ; CHECK: [[adr5:%.*]] = getelementptr inbounds [10 x i32], [10 x i32]* %truth, i32 0, i32 5
368- ; CHECK: [[ld5:%.*]] = load i32, i32* [[adr5]], align 4
356+ %tmp31 = icmp ne i32 %tmp30 , 0
369357 %tmp32 = getelementptr inbounds [10 x i32 ], [10 x i32 ]* %truth , i32 0 , i32 5
370358 %tmp33 = load i32 , i32* %tmp32 , align 4
371- br label %bb34
372-
373- bb34: ; preds = %bb31, %bb28
374- ; CHECK: [[res3:%.*]] = phi i32 [ [[ld4]], %bb28 ], [ [[ld5]], %bb31 ]
375- ; CHECK: [[bres3:%.*]] = icmp ne i32 [[res3]], 0
376- ; CHECK: [[res3:%.*]] = zext i1 [[bres3]] to i32
377- %.sink = phi i32 [ %tmp30 , %bb28 ], [ %tmp33 , %bb31 ]
378- %tmp35 = icmp ne i32 %.sink , 0
359+ %tmp34 = icmp ne i32 %tmp33 , 0
360+ %tmp35 = select i1 %tmp27 , i1 %tmp31 , i1 %tmp34
379361 %tmp36 = zext i1 %tmp35 to i32
380362
381363 ; CHECK: [[adr0:%.*]] = getelementptr inbounds [10 x <1 x float>], [10 x <1 x float>]* %consequences, i32 0, i32 0
0 commit comments