@@ -64,7 +64,7 @@ define i2 @iv_hoist_both_adds_nsw(i2 %arg) {
6464; CHECK-NEXT: br label [[LOOP:%.*]]
6565; CHECK: loop:
6666; 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
6868; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i2 1, [[ARG:%.*]]
6969; CHECK-NEXT: br i1 [[DOTNOT_NOT]], label [[EXIT:%.*]], label [[LOOP]]
7070; CHECK: exit:
@@ -92,7 +92,7 @@ define i4 @iv_hoist_both_adds_nsw_extra_use(i4 %arg) {
9292; CHECK-NEXT: br label [[LOOP:%.*]]
9393; CHECK: loop:
9494; 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
9696; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
9797; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
9898; 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) {
124124; CHECK-NEXT: br label [[LOOP:%.*]]
125125; CHECK: loop:
126126; 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
128128; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
129129; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
130130; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i4 1, [[ARG:%.*]]
@@ -244,7 +244,7 @@ define i2 @iv_hoist_both_adds_nuw(i2 %arg, i2 %start) {
244244; CHECK-NEXT: br label [[LOOP:%.*]]
245245; CHECK: loop:
246246; 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
248248; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i2 [[START]], [[ARG:%.*]]
249249; CHECK-NEXT: br i1 [[DOTNOT_NOT]], label [[EXIT:%.*]], label [[LOOP]]
250250; CHECK: exit:
@@ -272,7 +272,7 @@ define i4 @iv_hoist_both_adds_nuw_extra_use(i4 %arg, i4 %start) {
272272; CHECK-NEXT: br label [[LOOP:%.*]]
273273; CHECK: loop:
274274; 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
276276; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
277277; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
278278; 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) {
304304; CHECK-NEXT: br label [[LOOP:%.*]]
305305; CHECK: loop:
306306; 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
308308; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
309309; CHECK-NEXT: call void @use(i4 [[IV_0_NEXT]])
310310; CHECK-NEXT: [[DOTNOT_NOT:%.*]] = icmp ult i4 [[START]], [[ARG:%.*]]
0 commit comments