Skip to content

Commit ef9c027

Browse files
committed
Fixed regression tests
1 parent b0da99d commit ef9c027

11 files changed

+31
-68
lines changed

llvm/test/Transforms/ConstraintElimination/and-implied-by-operands.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,8 @@ define void @test_monotonic_ptr_iv_inc_1_eq_to_uge(ptr %start, i16 %len) {
326326
; CHECK-NEXT: [[AND_0:%.*]] = and i1 [[LEN_NEG]], [[C]]
327327
; CHECK-NEXT: br i1 [[AND_0]], label [[FOR_BODY:%.*]], label [[EXIT:%.*]]
328328
; CHECK: for.body:
329-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
330329
; CHECK-NEXT: [[T_2:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
331-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[T_1]], [[T_2]]
330+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[T_2]]
332331
; CHECK-NEXT: br i1 [[AND]], label [[LOOP_LATCH]], label [[EXIT]]
333332
; CHECK: loop.latch:
334333
; CHECK-NEXT: call void @use(ptr [[PTR_IV]])

llvm/test/Transforms/ConstraintElimination/loops-bottom-tested-base.ll

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,8 @@ define void @loop_iv_cond_variable_bound(i32 %n) {
1111
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]
1212
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i32 [[IV]], [[N:%.*]]
1313
; CHECK-NEXT: call void @use(i1 [[T_1]])
14-
; CHECK-NEXT: [[T_2:%.*]] = icmp sge i32 [[IV]], 0
15-
; CHECK-NEXT: call void @use(i1 [[T_2]])
16-
; CHECK-NEXT: [[T_3:%.*]] = icmp sge i32 [[IV]], -1
17-
; CHECK-NEXT: call void @use(i1 [[T_3]])
14+
; CHECK-NEXT: call void @use(i1 true)
15+
; CHECK-NEXT: call void @use(i1 true)
1816
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i32 [[IV]], [[N]]
1917
; CHECK-NEXT: call void @use(i1 [[C_1]])
2018
; CHECK-NEXT: [[C_2:%.*]] = icmp ugt i32 [[IV]], 1
@@ -58,10 +56,8 @@ define void @loop_iv_cond_constant_bound() {
5856
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP]] ]
5957
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i32 [[IV]], 2
6058
; CHECK-NEXT: call void @use(i1 [[T_1]])
61-
; CHECK-NEXT: [[T_2:%.*]] = icmp sge i32 [[IV]], 0
62-
; CHECK-NEXT: call void @use(i1 [[T_2]])
63-
; CHECK-NEXT: [[T_3:%.*]] = icmp sge i32 [[IV]], -1
64-
; CHECK-NEXT: call void @use(i1 [[T_3]])
59+
; CHECK-NEXT: call void @use(i1 true)
60+
; CHECK-NEXT: call void @use(i1 true)
6561
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i32 [[IV]], 2
6662
; CHECK-NEXT: call void @use(i1 [[C_1]])
6763
; CHECK-NEXT: [[C_2:%.*]] = icmp ugt i32 [[IV]], 1

llvm/test/Transforms/ConstraintElimination/loops-bottom-tested-pointer-cmps.ll

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ define void @checks_in_loops_removable(ptr %ptr, ptr %lower, ptr %upper, i8 %n)
2121
; CHECK: loop.header:
2222
; CHECK-NEXT: [[IV:%.*]] = phi i16 [ 0, [[PRE_2]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
2323
; CHECK-NEXT: [[PTR_IV:%.*]] = getelementptr inbounds i8, ptr [[PTR]], i16 [[IV]]
24-
; CHECK-NEXT: [[CMP_PTR_IV_LOWER:%.*]] = icmp ugt ptr [[LOWER]], [[PTR_IV]]
2524
; CHECK-NEXT: [[CMP_PTR_IV_UPPER:%.*]] = icmp ule ptr [[UPPER]], [[PTR_IV]]
2625
; CHECK-NEXT: [[OR:%.*]] = or i1 false, [[CMP_PTR_IV_UPPER]]
2726
; CHECK-NEXT: br i1 [[OR]], label [[TRAP]], label [[LOOP_LATCH]]
@@ -86,7 +85,6 @@ define void @some_checks_in_loops_removable(ptr %ptr, ptr %lower, ptr %upper, i8
8685
; CHECK: loop.header:
8786
; CHECK-NEXT: [[IV:%.*]] = phi i16 [ 0, [[PRE_2]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
8887
; CHECK-NEXT: [[PTR_IV:%.*]] = getelementptr inbounds i8, ptr [[PTR]], i16 [[IV]]
89-
; CHECK-NEXT: [[CMP_PTR_IV_LOWER:%.*]] = icmp ugt ptr [[LOWER]], [[PTR_IV]]
9088
; CHECK-NEXT: [[CMP_PTR_IV_UPPER:%.*]] = icmp ule ptr [[UPPER]], [[PTR_IV]]
9189
; CHECK-NEXT: [[OR:%.*]] = or i1 false, [[CMP_PTR_IV_UPPER]]
9290
; CHECK-NEXT: br i1 [[OR]], label [[TRAP]], label [[LOOP_BODY:%.*]]
@@ -163,7 +161,6 @@ define void @no_checks_in_loops_removable(ptr %ptr, ptr %lower, ptr %upper, i8 %
163161
; CHECK: loop.header:
164162
; CHECK-NEXT: [[IV:%.*]] = phi i16 [ 0, [[PRE_1]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
165163
; CHECK-NEXT: [[PTR_IV:%.*]] = getelementptr inbounds i8, ptr [[PTR]], i16 [[IV]]
166-
; CHECK-NEXT: [[CMP_PTR_IV_LOWER:%.*]] = icmp ugt ptr [[LOWER]], [[PTR_IV]]
167164
; CHECK-NEXT: [[CMP_PTR_IV_UPPER:%.*]] = icmp ule ptr [[UPPER]], [[PTR_IV]]
168165
; CHECK-NEXT: [[OR:%.*]] = or i1 false, [[CMP_PTR_IV_UPPER]]
169166
; CHECK-NEXT: br i1 [[OR]], label [[TRAP]], label [[LOOP_BODY:%.*]]

llvm/test/Transforms/ConstraintElimination/loops-header-tested-base.ll

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,11 @@ define void @loop_phi_pos_start_value(i32 %y, i1 %c, i32 %n) {
1414
; CHECK: loop.latch:
1515
; CHECK-NEXT: call void @use(i1 true)
1616
; CHECK-NEXT: call void @use(i1 false)
17-
; CHECK-NEXT: [[T_2:%.*]] = icmp sge i32 [[X]], 10
18-
; CHECK-NEXT: call void @use(i1 [[T_2]])
19-
; CHECK-NEXT: [[C_2:%.*]] = icmp sle i32 [[X]], 9
20-
; CHECK-NEXT: call void @use(i1 [[C_2]])
21-
; CHECK-NEXT: [[C_3:%.*]] = icmp sgt i32 [[X]], 9
22-
; CHECK-NEXT: call void @use(i1 [[C_3]])
2317
; CHECK-NEXT: call void @use(i1 true)
24-
; CHECK-NEXT: [[C_5:%.*]] = icmp sge i32 [[X]], 9
25-
; CHECK-NEXT: call void @use(i1 [[C_5]])
18+
; CHECK-NEXT: call void @use(i1 false)
19+
; CHECK-NEXT: call void @use(i1 true)
20+
; CHECK-NEXT: call void @use(i1 true)
21+
; CHECK-NEXT: call void @use(i1 true)
2622
; CHECK-NEXT: [[X_NEXT]] = add nsw i32 [[X]], 1
2723
; CHECK-NEXT: br label [[LOOP_HEADER]]
2824
; CHECK: exit:
@@ -75,8 +71,7 @@ define void @loop_phi_neg_start_value(i32 %y, i1 %c, i32 %n) {
7571
; CHECK: loop.latch:
7672
; CHECK-NEXT: call void @use(i1 true)
7773
; CHECK-NEXT: call void @use(i1 false)
78-
; CHECK-NEXT: [[T_2:%.*]] = icmp sge i32 [[X]], -10
79-
; CHECK-NEXT: call void @use(i1 [[T_2]])
74+
; CHECK-NEXT: call void @use(i1 true)
8075
; CHECK-NEXT: [[C_2:%.*]] = icmp sle i32 [[X]], 9
8176
; CHECK-NEXT: call void @use(i1 [[C_2]])
8277
; CHECK-NEXT: [[C_3:%.*]] = icmp sgt i32 [[X]], 9
@@ -299,10 +294,8 @@ define void @loop_iv_cond_variable_bound(i32 %n) {
299294
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
300295
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i32 [[IV]], [[N:%.*]]
301296
; CHECK-NEXT: call void @use(i1 [[T_1]])
302-
; CHECK-NEXT: [[T_2:%.*]] = icmp sge i32 [[IV]], 0
303-
; CHECK-NEXT: call void @use(i1 [[T_2]])
304-
; CHECK-NEXT: [[T_3:%.*]] = icmp sge i32 [[IV]], -1
305-
; CHECK-NEXT: call void @use(i1 [[T_3]])
297+
; CHECK-NEXT: call void @use(i1 true)
298+
; CHECK-NEXT: call void @use(i1 true)
306299
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i32 [[IV]], [[N]]
307300
; CHECK-NEXT: call void @use(i1 [[C_1]])
308301
; CHECK-NEXT: [[C_2:%.*]] = icmp ugt i32 [[IV]], 1
@@ -364,10 +357,8 @@ define void @loop_iv_cond_constant_bound() {
364357
; CHECK-NEXT: [[IV:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
365358
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i32 [[IV]], 2
366359
; CHECK-NEXT: call void @use(i1 [[T_1]])
367-
; CHECK-NEXT: [[T_2:%.*]] = icmp sge i32 [[IV]], 0
368-
; CHECK-NEXT: call void @use(i1 [[T_2]])
369-
; CHECK-NEXT: [[T_3:%.*]] = icmp sge i32 [[IV]], -1
370-
; CHECK-NEXT: call void @use(i1 [[T_3]])
360+
; CHECK-NEXT: call void @use(i1 true)
361+
; CHECK-NEXT: call void @use(i1 true)
371362
; CHECK-NEXT: [[C_1:%.*]] = icmp ult i32 [[IV]], 2
372363
; CHECK-NEXT: call void @use(i1 [[C_1]])
373364
; CHECK-NEXT: [[C_2:%.*]] = icmp ugt i32 [[IV]], 1

llvm/test/Transforms/ConstraintElimination/loops-header-tested-pointer-cmps.ll

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,6 @@ define void @test2_with_ne(ptr %src, ptr %lower, ptr %upper, i8 %N) {
210210
; CHECK-NEXT: br i1 [[EC]], label [[EXIT:%.*]], label [[LOOP_BODY:%.*]]
211211
; CHECK: loop.body:
212212
; CHECK-NEXT: [[SRC_IV:%.*]] = getelementptr inbounds i8, ptr [[SRC]], i8 [[IV]]
213-
; CHECK-NEXT: [[CMP_IV_START:%.*]] = icmp ult ptr [[SRC_IV]], [[LOWER]]
214213
; CHECK-NEXT: [[CMP_IV_END:%.*]] = icmp uge ptr [[SRC_IV]], [[UPPER]]
215214
; CHECK-NEXT: [[OR_1:%.*]] = or i1 false, [[CMP_IV_END]]
216215
; CHECK-NEXT: br i1 [[OR_1]], label [[TRAP_BB]], label [[LOOP_BODY_1:%.*]]
@@ -304,7 +303,6 @@ define void @test3(ptr %src, ptr %lower, ptr %upper, i8 %N) {
304303
; CHECK-NEXT: br i1 [[EC]], label [[LOOP_BODY:%.*]], label [[EXIT:%.*]]
305304
; CHECK: loop.body:
306305
; CHECK-NEXT: [[SRC_IV:%.*]] = getelementptr inbounds i8, ptr [[SRC]], i8 [[IV]]
307-
; CHECK-NEXT: [[CMP_IV_START:%.*]] = icmp ult ptr [[SRC_IV]], [[LOWER]]
308306
; CHECK-NEXT: [[CMP_IV_END:%.*]] = icmp uge ptr [[SRC_IV]], [[UPPER]]
309307
; CHECK-NEXT: [[OR_1:%.*]] = or i1 false, [[CMP_IV_END]]
310308
; CHECK-NEXT: br i1 [[OR_1]], label [[TRAP_BB]], label [[LOOP_BODY_1:%.*]]

llvm/test/Transforms/ConstraintElimination/loops-header-tested-pointer-iv.ll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ define void @loop_pointer_iv(ptr %start, ptr %end, ptr %upper) {
1212
; CHECK-NEXT: [[IV:%.*]] = phi ptr [ [[START:%.*]], [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
1313
; CHECK-NEXT: [[C_2:%.*]] = icmp ule ptr [[IV]], [[END]]
1414
; CHECK-NEXT: call void @use(i1 [[C_2]])
15-
; CHECK-NEXT: [[T_2:%.*]] = icmp uge ptr [[IV]], [[START]]
16-
; CHECK-NEXT: call void @use(i1 [[T_2]])
15+
; CHECK-NEXT: call void @use(i1 true)
1716
; CHECK-NEXT: [[C_1:%.*]] = icmp ule ptr [[IV]], [[END]]
1817
; CHECK-NEXT: br i1 [[C_1]], label [[LOOP_LATCH]], label [[EXIT]]
1918
; CHECK: loop.latch:

llvm/test/Transforms/ConstraintElimination/monotonic-int-phis-wrapping.ll

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ define void @test_iv_nuw_nsw_1_uge_start(i8 %len.n, i8 %a) {
4949
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
5050
; CHECK: loop.header:
5151
; CHECK-NEXT: [[IV:%.*]] = phi i8 [ -1, [[LOOP_PH:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
52-
; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[IV]], 1
53-
; CHECK-NEXT: br i1 [[C]], label [[EXIT:%.*]], label [[FOR_BODY:%.*]]
52+
; CHECK-NEXT: br i1 false, label [[EXIT:%.*]], label [[FOR_BODY:%.*]]
5453
; CHECK: for.body:
5554
; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
5655
; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_LATCH]], label [[EXIT]]
@@ -90,8 +89,7 @@ define void @test_iv_nuw_nsw_2_uge_start(i8 %len.n, i8 %a) {
9089
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
9190
; CHECK: loop.header:
9291
; CHECK-NEXT: [[IV:%.*]] = phi i8 [ [[START]], [[LOOP_PH:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
93-
; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[IV]], 1
94-
; CHECK-NEXT: br i1 [[C]], label [[EXIT:%.*]], label [[FOR_BODY:%.*]]
92+
; CHECK-NEXT: br i1 false, label [[EXIT:%.*]], label [[FOR_BODY:%.*]]
9593
; CHECK: for.body:
9694
; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
9795
; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_LATCH]], label [[EXIT]]
@@ -131,8 +129,7 @@ define void @test_iv_nsw_nuw_1_ult_end(i8 %len.n, i8 %a) {
131129
; CHECK-NEXT: br label [[LOOP_HEADER:%.*]]
132130
; CHECK: loop.header:
133131
; CHECK-NEXT: [[IV:%.*]] = phi i8 [ -2, [[LOOP_PH:%.*]] ], [ [[IV_NEXT:%.*]], [[LOOP_LATCH:%.*]] ]
134-
; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[IV]], 1
135-
; CHECK-NEXT: br i1 [[C]], label [[EXIT:%.*]], label [[FOR_BODY:%.*]]
132+
; CHECK-NEXT: br i1 false, label [[EXIT:%.*]], label [[FOR_BODY:%.*]]
136133
; CHECK: for.body:
137134
; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
138135
; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_LATCH]], label [[EXIT]]

llvm/test/Transforms/ConstraintElimination/monotonic-pointer-phis-chain-of-exits.ll

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@ define void @test_monotonic_ptr_iv_inc_1_different_element_types_1_chain_of_2_ex
2525
; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
2626
; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_NEXT:%.*]], label [[EXIT]]
2727
; CHECK: loop.next:
28-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
2928
; CHECK-NEXT: [[T_2:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
30-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[T_1]], [[T_2]]
29+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[T_2]]
3130
; CHECK-NEXT: br i1 [[AND]], label [[LOOP_LATCH]], label [[EXIT]]
3231
; CHECK: loop.latch:
3332
; CHECK-NEXT: call void @use(ptr [[PTR_IV]])
@@ -94,9 +93,8 @@ define void @test_monotonic_ptr_iv_inc_1_different_element_types_1_chain_of_3_ex
9493
; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
9594
; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_NEXT:%.*]], label [[EXIT]]
9695
; CHECK: loop.next:
97-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
9896
; CHECK-NEXT: [[T_2:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
99-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[T_1]], [[T_2]]
97+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[T_2]]
10098
; CHECK-NEXT: br i1 [[AND]], label [[LOOP_LATCH]], label [[EXIT]]
10199
; CHECK: loop.latch:
102100
; CHECK-NEXT: call void @use(ptr [[PTR_IV]])
@@ -163,9 +161,8 @@ define void @test_monotonic_ptr_iv_inc_1_different_element_types_1_chain_of_2_ex
163161
; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
164162
; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_NEXT:%.*]], label [[EXIT]]
165163
; CHECK: loop.next:
166-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
167164
; CHECK-NEXT: [[T_2:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
168-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[T_1]], [[T_2]]
165+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[T_2]]
169166
; CHECK-NEXT: br i1 [[AND]], label [[LOOP_LATCH]], label [[EXIT]]
170167
; CHECK: loop.latch:
171168
; CHECK-NEXT: call void @use(ptr [[PTR_IV]])
@@ -227,9 +224,8 @@ define void @test_header_not_exiting(ptr %start, i16 %len, i16 %x) {
227224
; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond()
228225
; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_NEXT:%.*]], label [[EXIT]]
229226
; CHECK: loop.next:
230-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
231227
; CHECK-NEXT: [[T_2:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
232-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[T_1]], [[T_2]]
228+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[T_2]]
233229
; CHECK-NEXT: br i1 [[AND]], label [[LOOP_LATCH]], label [[EXIT]]
234230
; CHECK: loop.latch:
235231
; CHECK-NEXT: call void @use(ptr [[PTR_IV]])

llvm/test/Transforms/ConstraintElimination/monotonic-pointer-phis-early-exits.ll

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,8 @@ define void @test_monotonic_ptr_iv_cond_doesnt_control_exit(ptr %start, i16 %len
376376
; CHECK-NEXT: [[C_1:%.*]] = icmp ne ptr [[PTR_IV]], [[UPPER]]
377377
; CHECK-NEXT: br i1 [[C_1]], label [[THEN:%.*]], label [[LOOP_LATCH]]
378378
; CHECK: then:
379-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
380379
; CHECK-NEXT: [[T_2:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
381-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[T_1]], [[T_2]]
380+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[T_2]]
382381
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
383382
; CHECK-NEXT: br label [[LOOP_LATCH]]
384383
; CHECK: loop.latch:
@@ -437,9 +436,8 @@ define void @test_monotonic_ptr_iv_cond_doesnt_control_exit2(ptr %start, i16 %le
437436
; CHECK-NEXT: [[C_0:%.*]] = call i1 @cond()
438437
; CHECK-NEXT: br i1 [[C_0]], label [[EXIT]], label [[LOOP_LATCH]]
439438
; CHECK: then:
440-
; CHECK-NEXT: [[T_1:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
441439
; CHECK-NEXT: [[T_2:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
442-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[T_1]], [[T_2]]
440+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[T_2]]
443441
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
444442
; CHECK-NEXT: br label [[LOOP_LATCH]]
445443
; CHECK: loop.latch:
@@ -500,9 +498,8 @@ define void @test_monotonic_ptr_iv_cond_doesnt_dominate_checks(ptr %start, i16 %
500498
; CHECK: then:
501499
; CHECK-NEXT: br label [[LOOP_LATCH]]
502500
; CHECK: loop.latch:
503-
; CHECK-NEXT: [[C_2:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
504501
; CHECK-NEXT: [[C_3:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
505-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[C_2]], [[C_3]]
502+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[C_3]]
506503
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
507504
; CHECK-NEXT: call void @use(ptr [[PTR_IV]])
508505
; CHECK-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i32, ptr [[PTR_IV]], i16 1
@@ -619,9 +616,8 @@ define void @test_monotonic_ptr_iv_step_2_cond_doesnt_control_exit(ptr %start, i
619616
; CHECK-NEXT: [[C_1:%.*]] = icmp ne ptr [[PTR_IV]], [[UPPER]]
620617
; CHECK-NEXT: br i1 [[C_1]], label [[THEN:%.*]], label [[LOOP_LATCH]]
621618
; CHECK: then:
622-
; CHECK-NEXT: [[C_2:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
623619
; CHECK-NEXT: [[C_3:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
624-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[C_2]], [[C_3]]
620+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[C_3]]
625621
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
626622
; CHECK-NEXT: br label [[LOOP_LATCH]]
627623
; CHECK: loop.latch:
@@ -680,9 +676,8 @@ define void @test_monotonic_ptr_iv_step_64_cond_doesnt_control_exit(ptr %start,
680676
; CHECK-NEXT: [[C_1:%.*]] = icmp ne ptr [[PTR_IV]], [[UPPER]]
681677
; CHECK-NEXT: br i1 [[C_1]], label [[THEN:%.*]], label [[LOOP_LATCH]]
682678
; CHECK: then:
683-
; CHECK-NEXT: [[C_2:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
684679
; CHECK-NEXT: [[C_3:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
685-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[C_2]], [[C_3]]
680+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[C_3]]
686681
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
687682
; CHECK-NEXT: br label [[LOOP_LATCH]]
688683
; CHECK: loop.latch:
@@ -741,9 +736,8 @@ define void @test_monotonic_ptr_iv_step_80_cond_doesnt_control_exit(ptr %start,
741736
; CHECK-NEXT: [[C_1:%.*]] = icmp ne ptr [[PTR_IV]], [[UPPER]]
742737
; CHECK-NEXT: br i1 [[C_1]], label [[THEN:%.*]], label [[LOOP_LATCH]]
743738
; CHECK: then:
744-
; CHECK-NEXT: [[C_2:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
745739
; CHECK-NEXT: [[C_3:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
746-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[C_2]], [[C_3]]
740+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[C_3]]
747741
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
748742
; CHECK-NEXT: br label [[LOOP_LATCH]]
749743
; CHECK: loop.latch:
@@ -807,9 +801,8 @@ define void @test_monotonic_ptr_iv_inc_1_check_outside_loop(ptr %start, i16 %len
807801
; CHECK-NEXT: [[C_1:%.*]] = icmp ne ptr [[PTR_IV]], [[UPPER]]
808802
; CHECK-NEXT: br i1 [[C_1]], label [[THEN:%.*]], label [[EXIT_2:%.*]]
809803
; CHECK: then:
810-
; CHECK-NEXT: [[C_2:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
811804
; CHECK-NEXT: [[C_3:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
812-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[C_2]], [[C_3]]
805+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[C_3]]
813806
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
814807
; CHECK-NEXT: br label [[EXIT_2]]
815808
; CHECK: exit.2:

llvm/test/Transforms/ConstraintElimination/monotonic-pointer-phis.ll

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -996,9 +996,8 @@ define void @test_monotonic_ptr_iv_inc_1_loop_exits_on_ne(ptr %start, i16 %len)
996996
; CHECK-NEXT: [[PTR_IV_NEXT]] = getelementptr inbounds i32, ptr [[PTR_IV]], i16 1
997997
; CHECK-NEXT: br label [[LOOP_HEADER]]
998998
; CHECK: exit:
999-
; CHECK-NEXT: [[C_2:%.*]] = icmp uge ptr [[PTR_IV]], [[START]]
1000999
; CHECK-NEXT: [[C_3:%.*]] = icmp ult ptr [[PTR_IV]], [[UPPER]]
1001-
; CHECK-NEXT: [[AND:%.*]] = and i1 [[C_2]], [[C_3]]
1000+
; CHECK-NEXT: [[AND:%.*]] = and i1 true, [[C_3]]
10021001
; CHECK-NEXT: call void @use.i1(i1 [[AND]])
10031002
; CHECK-NEXT: ret void
10041003
;
@@ -1083,4 +1082,3 @@ loop.latch:
10831082
exit:
10841083
ret void
10851084
}
1086-

0 commit comments

Comments
 (0)