@@ -64,7 +64,7 @@ define i2 @iv_hoist_both_adds_nsw(i2 %arg) {
64
64
; CHECK-NEXT: br label [[LOOP:%.*]]
65
65
; CHECK: loop:
66
66
; CHECK-NEXT: [[IV_0:%.*]] = phi i2 [ 1, [[BB:%.*]] ], [ [[IV_0_NEXT:%.*]], [[LOOP]] ]
67
- ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw i2 [[IV_0]], 1
67
+ ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw nsw i2 [[IV_0]], 1
68
68
; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i2 1, [[ARG:%.*]]
69
69
; CHECK-NEXT: br i1 [[DOTNOT_NOT]], label [[EXIT:%.*]], label [[LOOP]]
70
70
; CHECK: exit:
@@ -92,7 +92,7 @@ define i4 @iv_hoist_both_adds_nsw_extra_use(i4 %arg) {
92
92
; CHECK-NEXT: br label [[LOOP:%.*]]
93
93
; CHECK: loop:
94
94
; CHECK-NEXT: [[IV_0:%.*]] = phi i4 [ 1, [[BB:%.*]] ], [ [[IV_0_NEXT:%.*]], [[LOOP]] ]
95
- ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw i4 [[IV_0]], 1
95
+ ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw nsw i4 [[IV_0]], 1
96
96
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
97
97
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
98
98
; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i4 1, [[ARG:%.*]]
@@ -124,7 +124,7 @@ define i4 @iv_hoist_both_adds_nsw_extra_use_incs_reordered(i4 %arg) {
124
124
; CHECK-NEXT: br label [[LOOP:%.*]]
125
125
; CHECK: loop:
126
126
; CHECK-NEXT: [[IV_0:%.*]] = phi i4 [ 1, [[BB:%.*]] ], [ [[IV_0_NEXT:%.*]], [[LOOP]] ]
127
- ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw i4 [[IV_0]], 1
127
+ ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw nsw i4 [[IV_0]], 1
128
128
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
129
129
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
130
130
; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i4 1, [[ARG:%.*]]
@@ -244,7 +244,7 @@ define i2 @iv_hoist_both_adds_nuw(i2 %arg, i2 %start) {
244
244
; CHECK-NEXT: br label [[LOOP:%.*]]
245
245
; CHECK: loop:
246
246
; CHECK-NEXT: [[IV_0:%.*]] = phi i2 [ [[START:%.*]], [[BB:%.*]] ], [ [[IV_0_NEXT:%.*]], [[LOOP]] ]
247
- ; CHECK-NEXT: [[IV_0_NEXT]] = add i2 [[IV_0]], 1
247
+ ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw i2 [[IV_0]], 1
248
248
; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i2 [[START]], [[ARG:%.*]]
249
249
; CHECK-NEXT: br i1 [[DOTNOT_NOT]], label [[EXIT:%.*]], label [[LOOP]]
250
250
; CHECK: exit:
@@ -272,7 +272,7 @@ define i4 @iv_hoist_both_adds_nuw_extra_use(i4 %arg, i4 %start) {
272
272
; CHECK-NEXT: br label [[LOOP:%.*]]
273
273
; CHECK: loop:
274
274
; CHECK-NEXT: [[IV_0:%.*]] = phi i4 [ [[START:%.*]], [[BB:%.*]] ], [ [[IV_0_NEXT:%.*]], [[LOOP]] ]
275
- ; CHECK-NEXT: [[IV_0_NEXT]] = add i4 [[IV_0]], 1
275
+ ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw i4 [[IV_0]], 1
276
276
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
277
277
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
278
278
; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i4 [[START]], [[ARG:%.*]]
@@ -304,7 +304,7 @@ define i4 @iv_hoist_both_adds_nuw_extra_use_incs_reordered(i4 %arg, i4 %start) {
304
304
; CHECK-NEXT: br label [[LOOP:%.*]]
305
305
; CHECK: loop:
306
306
; CHECK-NEXT: [[IV_0:%.*]] = phi i4 [ [[START:%.*]], [[BB:%.*]] ], [ [[IV_0_NEXT:%.*]], [[LOOP]] ]
307
- ; CHECK-NEXT: [[IV_0_NEXT]] = add i4 [[IV_0]], 1
307
+ ; CHECK-NEXT: [[IV_0_NEXT]] = add nuw i4 [[IV_0]], 1
308
308
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
309
309
; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
310
310
; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i4 [[START]], [[ARG:%.*]]
0 commit comments