1
1
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2
2
3
- ; RUN: opt < %s -S -passes='loop-simplify,loop(loop-flatten),verify' -loop-flatten-widen-iv=true \
3
+ ; RUN: opt < %s -S -passes='loop-simplify,loop(loop-flatten),dce, verify' -loop-flatten-widen-iv=true \
4
4
; RUN: -verify-loop-info -verify-dom-info -verify-scev \
5
5
; RUN: -loop-flatten-cost-threshold=6 | \
6
6
; RUN: FileCheck %s --check-prefix=CHECK
7
7
8
- ; RUN: opt < %s -S -passes='loop-simplify,loop(loop-flatten),verify' -loop-flatten-widen-iv=false \
8
+ ; RUN: opt < %s -S -passes='loop-simplify,loop(loop-flatten),dce, verify' -loop-flatten-widen-iv=false \
9
9
; RUN: -verify-loop-info -verify-dom-info -verify-scev | \
10
10
; RUN: FileCheck %s --check-prefix=DONTWIDEN
11
11
@@ -30,19 +30,12 @@ define void @foo(ptr %A, i32 %N, i32 %M) {
30
30
; CHECK-NEXT: br label [[FOR_COND1_PREHEADER_US:%.*]]
31
31
; CHECK: for.cond1.preheader.us:
32
32
; CHECK-NEXT: [[INDVAR1:%.*]] = phi i64 [ [[INDVAR_NEXT2:%.*]], [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND1_PREHEADER_US_PREHEADER]] ]
33
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[INDVAR1]] to i32
34
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul nsw i32 [[TMP2]], [[M]]
35
33
; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR1]] to i32
36
34
; CHECK-NEXT: br label [[FOR_BODY4_US:%.*]]
37
35
; CHECK: for.body4.us:
38
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND1_PREHEADER_US]] ]
39
- ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[INDVAR]] to i32
40
- ; CHECK-NEXT: [[ADD_US:%.*]] = add nsw i32 [[TMP3]], [[MUL_US]]
41
36
; CHECK-NEXT: [[IDXPROM_US:%.*]] = sext i32 [[FLATTEN_TRUNCIV]] to i64
42
37
; CHECK-NEXT: [[ARRAYIDX_US:%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[IDXPROM_US]]
43
38
; CHECK-NEXT: tail call void @f(ptr [[ARRAYIDX_US]])
44
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
45
- ; CHECK-NEXT: [[CMP2_US:%.*]] = icmp slt i64 [[INDVAR_NEXT]], [[TMP0]]
46
39
; CHECK-NEXT: br label [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US]]
47
40
; CHECK: for.cond1.for.cond.cleanup3_crit_edge.us:
48
41
; CHECK-NEXT: [[INDVAR_NEXT2]] = add i64 [[INDVAR1]], 1
@@ -140,32 +133,17 @@ define void @foo2_sext(i32* nocapture readonly %A, i32 %N, i32 %M) {
140
133
; CHECK-NEXT: br label [[FOR_COND1_PREHEADER:%.*]]
141
134
; CHECK: for.cond1.preheader.us.preheader:
142
135
; CHECK-NEXT: [[TMP0:%.*]] = sext i32 [[M]] to i64
143
- ; CHECK-NEXT: [[TMP1:%.*]] = sext i32 [[M]] to i64
144
- ; CHECK-NEXT: [[TMP2:%.*]] = sext i32 [[N]] to i64
145
- ; CHECK-NEXT: [[FLATTEN_TRIPCOUNT:%.*]] = mul i64 [[TMP0]], [[TMP2]]
136
+ ; CHECK-NEXT: [[TMP1:%.*]] = sext i32 [[N]] to i64
137
+ ; CHECK-NEXT: [[FLATTEN_TRIPCOUNT:%.*]] = mul i64 [[TMP0]], [[TMP1]]
146
138
; CHECK-NEXT: br label [[FOR_COND1_PREHEADER_US:%.*]]
147
139
; CHECK: for.cond1.preheader.us:
148
140
; CHECK-NEXT: [[INDVAR2:%.*]] = phi i64 [ [[INDVAR_NEXT3:%.*]], [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND1_PREHEADER_US_PREHEADER]] ]
149
141
; CHECK-NEXT: [[I_018_US:%.*]] = phi i32 [ [[INC6_US:%.*]], [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US]] ], [ 0, [[FOR_COND1_PREHEADER_US_PREHEADER]] ]
150
- ; CHECK-NEXT: [[TMP3:%.*]] = mul nsw i64 [[INDVAR2]], [[TMP1]]
151
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul nsw i32 [[I_018_US]], [[M]]
152
- ; CHECK-NEXT: [[TMP4:%.*]] = sext i32 [[MUL_US]] to i64
153
- ; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR2]] to i32
154
142
; CHECK-NEXT: br label [[FOR_BODY4_US:%.*]]
155
143
; CHECK: for.body4.us:
156
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND1_PREHEADER_US]] ]
157
- ; CHECK-NEXT: [[J_016_US:%.*]] = phi i32 [ 0, [[FOR_COND1_PREHEADER_US]] ]
158
- ; CHECK-NEXT: [[TMP5:%.*]] = add nsw i64 [[INDVAR]], [[TMP3]]
159
- ; CHECK-NEXT: [[TMP6:%.*]] = sext i32 [[J_016_US]] to i64
160
- ; CHECK-NEXT: [[TMP7:%.*]] = add nsw i64 [[TMP6]], [[TMP3]]
161
- ; CHECK-NEXT: [[ADD_US:%.*]] = add nsw i32 [[J_016_US]], [[MUL_US]]
162
- ; CHECK-NEXT: [[IDXPROM_US:%.*]] = sext i32 [[FLATTEN_TRUNCIV]] to i64
163
144
; CHECK-NEXT: [[ARRAYIDX_US:%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[INDVAR2]]
164
- ; CHECK-NEXT: [[TMP8:%.*]] = load i32, ptr [[ARRAYIDX_US]], align 4
165
- ; CHECK-NEXT: tail call void @g(i32 [[TMP8]])
166
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
167
- ; CHECK-NEXT: [[INC_US:%.*]] = add nuw nsw i32 [[J_016_US]], 1
168
- ; CHECK-NEXT: [[CMP2_US:%.*]] = icmp slt i64 [[INDVAR_NEXT]], [[TMP0]]
145
+ ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX_US]], align 4
146
+ ; CHECK-NEXT: tail call void @g(i32 [[TMP2]])
169
147
; CHECK-NEXT: br label [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US]]
170
148
; CHECK: for.cond1.for.cond.cleanup3_crit_edge.us:
171
149
; CHECK-NEXT: [[INDVAR_NEXT3]] = add i64 [[INDVAR2]], 1
@@ -300,20 +278,13 @@ define void @foo2_zext(i32* nocapture readonly %A, i32 %N, i32 %M) {
300
278
; CHECK-NEXT: br label [[FOR_COND1_PREHEADER:%.*]]
301
279
; CHECK: for.cond1.preheader.us:
302
280
; CHECK-NEXT: [[INDVAR1:%.*]] = phi i64 [ [[INDVAR_NEXT2:%.*]], [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND1_PREHEADER_US_PREHEADER]] ]
303
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[INDVAR1]] to i32
304
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul i32 [[TMP2]], [[M]]
305
281
; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR1]] to i32
306
282
; CHECK-NEXT: br label [[FOR_BODY4_US:%.*]]
307
283
; CHECK: for.body4.us:
308
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND1_PREHEADER_US]] ]
309
- ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[INDVAR]] to i32
310
- ; CHECK-NEXT: [[ADD_US:%.*]] = add i32 [[TMP3]], [[MUL_US]]
311
284
; CHECK-NEXT: [[IDXPROM_US:%.*]] = zext i32 [[FLATTEN_TRUNCIV]] to i64
312
285
; CHECK-NEXT: [[ARRAYIDX_US:%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[IDXPROM_US]]
313
- ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[ARRAYIDX_US]], align 4
314
- ; CHECK-NEXT: tail call void @g(i32 [[TMP4]])
315
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
316
- ; CHECK-NEXT: [[CMP2_US:%.*]] = icmp ult i64 [[INDVAR_NEXT]], [[TMP0]]
286
+ ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX_US]], align 4
287
+ ; CHECK-NEXT: tail call void @g(i32 [[TMP2]])
317
288
; CHECK-NEXT: br label [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US]]
318
289
; CHECK: for.cond1.for.cond.cleanup3_crit_edge.us:
319
290
; CHECK-NEXT: [[INDVAR_NEXT2]] = add i64 [[INDVAR1]], 1
@@ -435,21 +406,14 @@ define void @zext(i32 %N, ptr nocapture %A, i16 %val) {
435
406
; CHECK-NEXT: br label [[FOR_COND1_PREHEADER_US:%.*]]
436
407
; CHECK: for.cond1.preheader.us:
437
408
; CHECK-NEXT: [[INDVAR1:%.*]] = phi i64 [ [[INDVAR_NEXT2:%.*]], [[FOR_COND1_FOR_INC7_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND1_PREHEADER_US_PREHEADER]] ]
438
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[INDVAR1]] to i32
439
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul i32 [[TMP2]], [[N]]
440
409
; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR1]] to i32
441
410
; CHECK-NEXT: br label [[FOR_BODY3_US:%.*]]
442
411
; CHECK: for.body3.us:
443
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND1_PREHEADER_US]] ]
444
- ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[INDVAR]] to i32
445
- ; CHECK-NEXT: [[ADD_US:%.*]] = add i32 [[TMP3]], [[MUL_US]]
446
412
; CHECK-NEXT: [[IDXPROM_US:%.*]] = zext i32 [[FLATTEN_TRUNCIV]] to i64
447
413
; CHECK-NEXT: [[ARRAYIDX_US:%.*]] = getelementptr inbounds i16, ptr [[A:%.*]], i64 [[IDXPROM_US]]
448
- ; CHECK-NEXT: [[TMP4 :%.*]] = load i16, ptr [[ARRAYIDX_US]], align 2
449
- ; CHECK-NEXT: [[ADD5_US:%.*]] = add i16 [[TMP4 ]], [[VAL:%.*]]
414
+ ; CHECK-NEXT: [[TMP2 :%.*]] = load i16, ptr [[ARRAYIDX_US]], align 2
415
+ ; CHECK-NEXT: [[ADD5_US:%.*]] = add i16 [[TMP2 ]], [[VAL:%.*]]
450
416
; CHECK-NEXT: store i16 [[ADD5_US]], ptr [[ARRAYIDX_US]], align 2
451
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
452
- ; CHECK-NEXT: [[CMP2_US:%.*]] = icmp ult i64 [[INDVAR_NEXT]], [[TMP0]]
453
417
; CHECK-NEXT: br label [[FOR_COND1_FOR_INC7_CRIT_EDGE_US]]
454
418
; CHECK: for.cond1.for.inc7_crit_edge.us:
455
419
; CHECK-NEXT: [[INDVAR_NEXT2]] = add i64 [[INDVAR1]], 1
@@ -553,18 +517,11 @@ define void @test(i8 %n, i8 %m) {
553
517
; CHECK-NEXT: br label [[FOR_COND3_PREHEADER_US:%.*]]
554
518
; CHECK: for.cond3.preheader.us:
555
519
; CHECK-NEXT: [[INDVAR2:%.*]] = phi i64 [ [[INDVAR_NEXT3:%.*]], [[FOR_COND3_FOR_COND_CLEANUP8_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND3_PREHEADER_US_PREHEADER]] ]
556
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[INDVAR2]] to i8
557
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul i8 [[TMP2]], [[M]]
558
520
; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR2]] to i8
559
521
; CHECK-NEXT: br label [[FOR_BODY9_US:%.*]]
560
522
; CHECK: for.body9.us:
561
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND3_PREHEADER_US]] ]
562
- ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[INDVAR]] to i8
563
- ; CHECK-NEXT: [[ADD_US:%.*]] = add i8 [[TMP3]], [[MUL_US]]
564
523
; CHECK-NEXT: [[CONV14_US:%.*]] = zext i8 [[FLATTEN_TRUNCIV]] to i32
565
524
; CHECK-NEXT: [[CALL_US:%.*]] = tail call i32 @use_32(i32 [[CONV14_US]])
566
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
567
- ; CHECK-NEXT: [[CMP6_US:%.*]] = icmp ult i64 [[INDVAR_NEXT]], [[TMP0]]
568
525
; CHECK-NEXT: br label [[FOR_COND3_FOR_COND_CLEANUP8_CRIT_EDGE_US]]
569
526
; CHECK: for.cond3.for.cond.cleanup8_crit_edge.us:
570
527
; CHECK-NEXT: [[INDVAR_NEXT3]] = add i64 [[INDVAR2]], 1
@@ -695,14 +652,9 @@ define void @test3(i8 %n, i8 %m) {
695
652
; CHECK-NEXT: br label [[FOR_COND3_PREHEADER_US:%.*]]
696
653
; CHECK: for.cond3.preheader.us:
697
654
; CHECK-NEXT: [[INDVAR2:%.*]] = phi i64 [ [[INDVAR_NEXT3:%.*]], [[FOR_COND3_FOR_COND_CLEANUP8_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND3_PREHEADER_US_PREHEADER]] ]
698
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[INDVAR2]] to i8
699
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul i8 [[TMP2]], [[M]]
700
655
; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR2]] to i8
701
656
; CHECK-NEXT: br label [[FOR_BODY9_US:%.*]]
702
657
; CHECK: for.body9.us:
703
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND3_PREHEADER_US]] ]
704
- ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[INDVAR]] to i8
705
- ; CHECK-NEXT: [[ADD_US:%.*]] = add i8 [[TMP3]], [[MUL_US]]
706
658
; CHECK-NEXT: [[CONV14_US:%.*]] = zext i8 [[FLATTEN_TRUNCIV]] to i32
707
659
; CHECK-NEXT: [[CALL_US:%.*]] = tail call i32 @use_32(i32 [[CONV14_US]])
708
660
; CHECK-NEXT: [[CONV15_US:%.*]] = zext i8 [[FLATTEN_TRUNCIV]] to i16
@@ -711,8 +663,6 @@ define void @test3(i8 %n, i8 %m) {
711
663
; CHECK-NEXT: [[CALL20_US:%.*]] = tail call i32 @use_16(i16 [[CONV15_US]])
712
664
; CHECK-NEXT: [[CONV21_US:%.*]] = zext i8 [[FLATTEN_TRUNCIV]] to i64
713
665
; CHECK-NEXT: [[CALL22_US:%.*]] = tail call i32 @use_64(i64 [[CONV21_US]])
714
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
715
- ; CHECK-NEXT: [[CMP6_US:%.*]] = icmp ult i64 [[INDVAR_NEXT]], [[TMP0]]
716
666
; CHECK-NEXT: br label [[FOR_COND3_FOR_COND_CLEANUP8_CRIT_EDGE_US]]
717
667
; CHECK: for.cond3.for.cond.cleanup8_crit_edge.us:
718
668
; CHECK-NEXT: [[INDVAR_NEXT3]] = add i64 [[INDVAR2]], 1
@@ -855,23 +805,16 @@ define void @test4(i16 %n, i16 %m) {
855
805
; CHECK-NEXT: br label [[FOR_COND3_PREHEADER_US:%.*]]
856
806
; CHECK: for.cond3.preheader.us:
857
807
; CHECK-NEXT: [[INDVAR2:%.*]] = phi i64 [ [[INDVAR_NEXT3:%.*]], [[FOR_COND3_FOR_COND_CLEANUP8_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND3_PREHEADER_US_PREHEADER]] ]
858
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[INDVAR2]] to i16
859
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul i16 [[TMP2]], [[M]]
860
808
; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR2]] to i16
861
809
; CHECK-NEXT: br label [[FOR_BODY9_US:%.*]]
862
810
; CHECK: for.body9.us:
863
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND3_PREHEADER_US]] ]
864
- ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[INDVAR]] to i16
865
- ; CHECK-NEXT: [[ADD_US:%.*]] = add i16 [[TMP3]], [[MUL_US]]
866
811
; CHECK-NEXT: [[CONV14_US:%.*]] = sext i16 [[FLATTEN_TRUNCIV]] to i32
867
812
; CHECK-NEXT: [[CALL_US:%.*]] = tail call i32 @use_32(i32 [[CONV14_US]])
868
813
; CHECK-NEXT: [[CALL15_US:%.*]] = tail call i32 @use_16(i16 [[FLATTEN_TRUNCIV]])
869
814
; CHECK-NEXT: [[CALL17_US:%.*]] = tail call i32 @use_32(i32 [[CONV14_US]])
870
815
; CHECK-NEXT: [[CALL18_US:%.*]] = tail call i32 @use_16(i16 [[FLATTEN_TRUNCIV]])
871
816
; CHECK-NEXT: [[CONV19_US:%.*]] = sext i16 [[FLATTEN_TRUNCIV]] to i64
872
817
; CHECK-NEXT: [[CALL20_US:%.*]] = tail call i32 @use_64(i64 [[CONV19_US]])
873
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
874
- ; CHECK-NEXT: [[CMP6_US:%.*]] = icmp slt i64 [[INDVAR_NEXT]], [[TMP0]]
875
818
; CHECK-NEXT: br label [[FOR_COND3_FOR_COND_CLEANUP8_CRIT_EDGE_US]]
876
819
; CHECK: for.cond3.for.cond.cleanup8_crit_edge.us:
877
820
; CHECK-NEXT: [[INDVAR_NEXT3]] = add i64 [[INDVAR2]], 1
@@ -991,10 +934,7 @@ define i32 @constTripCount() {
991
934
; CHECK-NEXT: [[INDVAR1:%.*]] = phi i64 [ [[INDVAR_NEXT2:%.*]], [[J_LOOPDONE:%.*]] ], [ 0, [[ENTRY:%.*]] ]
992
935
; CHECK-NEXT: br label [[J_LOOP:%.*]]
993
936
; CHECK: j.loop:
994
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[I_LOOP]] ]
995
937
; CHECK-NEXT: call void @payload()
996
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
997
- ; CHECK-NEXT: [[J_ATEND:%.*]] = icmp eq i64 [[INDVAR_NEXT]], 20
998
938
; CHECK-NEXT: br label [[J_LOOPDONE]]
999
939
; CHECK: j.loopdone:
1000
940
; CHECK-NEXT: [[INDVAR_NEXT2]] = add i64 [[INDVAR1]], 1
@@ -1063,19 +1003,12 @@ define void @foo_M_sext(ptr %A, i32 %N, i16 %M) {
1063
1003
; CHECK-NEXT: br label [[FOR_COND1_PREHEADER_US:%.*]]
1064
1004
; CHECK: for.cond1.preheader.us:
1065
1005
; CHECK-NEXT: [[INDVAR1:%.*]] = phi i64 [ [[INDVAR_NEXT2:%.*]], [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US:%.*]] ], [ 0, [[FOR_COND1_PREHEADER_US_PREHEADER]] ]
1066
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc i64 [[INDVAR1]] to i32
1067
- ; CHECK-NEXT: [[MUL_US:%.*]] = mul nsw i32 [[TMP2]], [[M2]]
1068
1006
; CHECK-NEXT: [[FLATTEN_TRUNCIV:%.*]] = trunc i64 [[INDVAR1]] to i32
1069
1007
; CHECK-NEXT: br label [[FOR_BODY4_US:%.*]]
1070
1008
; CHECK: for.body4.us:
1071
- ; CHECK-NEXT: [[INDVAR:%.*]] = phi i64 [ 0, [[FOR_COND1_PREHEADER_US]] ]
1072
- ; CHECK-NEXT: [[TMP3:%.*]] = trunc i64 [[INDVAR]] to i32
1073
- ; CHECK-NEXT: [[ADD_US:%.*]] = add nsw i32 [[TMP3]], [[MUL_US]]
1074
1009
; CHECK-NEXT: [[IDXPROM_US:%.*]] = sext i32 [[FLATTEN_TRUNCIV]] to i64
1075
1010
; CHECK-NEXT: [[ARRAYIDX_US:%.*]] = getelementptr inbounds i32, ptr [[A:%.*]], i64 [[IDXPROM_US]]
1076
1011
; CHECK-NEXT: tail call void @f(ptr [[ARRAYIDX_US]])
1077
- ; CHECK-NEXT: [[INDVAR_NEXT:%.*]] = add i64 [[INDVAR]], 1
1078
- ; CHECK-NEXT: [[CMP2_US:%.*]] = icmp slt i64 [[INDVAR_NEXT]], [[TMP0]]
1079
1012
; CHECK-NEXT: br label [[FOR_COND1_FOR_COND_CLEANUP3_CRIT_EDGE_US]]
1080
1013
; CHECK: for.cond1.for.cond.cleanup3_crit_edge.us:
1081
1014
; CHECK-NEXT: [[INDVAR_NEXT2]] = add i64 [[INDVAR1]], 1
0 commit comments