@@ -36,14 +36,14 @@ void *f4(void *a, int b) { return a - b; }
3636// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
3737// CIR: %[[STRIDE:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!s32i>, !s32i
3838// CIR: %[[SUB:.*]] = cir.unary(minus, %[[STRIDE]]) : !s32i, !s32i
39- // CIR: cir.ptr_stride %[[PTR]], %[[SUB]] : (!cir.ptr<!void>, !s32i) -> !cir.ptr<!void>
39+ // CIR: cir.ptr_stride inbounds %[[PTR]], %[[SUB]] : (!cir.ptr<!void>, !s32i) -> !cir.ptr<!void>
4040
4141// LLVM-LABEL: f4
4242// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
4343// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
4444// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
4545// LLVM: %[[SUB:.*]] = sub i64 0, %[[STRIDE]]
46- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[SUB]]
46+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[SUB]]
4747
4848// Similar to f4, just make sure it does not crash.
4949void * f4_1 (void * a , int b ) { return (a -= b ); }
@@ -52,13 +52,13 @@ FP f5(FP a, int b) { return a + b; }
5252// CIR-LABEL: f5
5353// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!cir.func<()>>>, !cir.ptr<!cir.func<()>>
5454// CIR: %[[STRIDE:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!s32i>, !s32i
55- // CIR: cir.ptr_stride %[[PTR]], %[[STRIDE]] : (!cir.ptr<!cir.func<()>>, !s32i) -> !cir.ptr<!cir.func<()>>
55+ // CIR: cir.ptr_stride inbounds %[[PTR]], %[[STRIDE]] : (!cir.ptr<!cir.func<()>>, !s32i) -> !cir.ptr<!cir.func<()>>
5656
5757// LLVM-LABEL: f5
5858// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
5959// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
6060// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
61- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[STRIDE]]
61+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[STRIDE]]
6262
6363// These test the same paths above, just make sure it does not crash.
6464FP f5_1 (FP a , int b ) { return (a += b ); }
@@ -70,14 +70,14 @@ FP f7(FP a, int b) { return a - b; }
7070// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!cir.func<()>>>, !cir.ptr<!cir.func<()>>
7171// CIR: %[[STRIDE:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!s32i>, !s32i
7272// CIR: %[[SUB:.*]] = cir.unary(minus, %[[STRIDE]]) : !s32i, !s32i
73- // CIR: cir.ptr_stride %[[PTR]], %[[SUB]] : (!cir.ptr<!cir.func<()>>, !s32i) -> !cir.ptr<!cir.func<()>>
73+ // CIR: cir.ptr_stride inbounds %[[PTR]], %[[SUB]] : (!cir.ptr<!cir.func<()>>, !s32i) -> !cir.ptr<!cir.func<()>>
7474
7575// LLVM-LABEL: f7
7676// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
7777// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
7878// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
7979// LLVM: %[[SUB:.*]] = sub i64 0, %[[STRIDE]]
80- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[SUB]]
80+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[SUB]]
8181
8282// Similar to f7, just make sure it does not crash.
8383FP f7_1 (FP a , int b ) { return (a -= b ); }
@@ -87,14 +87,14 @@ void f8(void *a, int b) { return *(id(a + b)); }
8787// CIR-LABEL: f8
8888// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
8989// CIR: %[[STRIDE:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!s32i>, !s32i
90- // CIR: cir.ptr_stride %[[PTR]], %[[STRIDE]] : (!cir.ptr<!void>, !s32i) -> !cir.ptr<!void>
90+ // CIR: cir.ptr_stride inbounds %[[PTR]], %[[STRIDE]] : (!cir.ptr<!void>, !s32i) -> !cir.ptr<!void>
9191// CIR: cir.return
9292
9393// LLVM-LABEL: f8
9494// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
9595// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
9696// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
97- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[STRIDE]]
97+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[STRIDE]]
9898// LLVM: ret void
9999
100100void f8_1 (void * a , int b ) { return a [b ]; }
@@ -119,7 +119,8 @@ unsigned char *p(unsigned int x) {
119119
120120// CIR-LABEL: @p
121121// CIR: %[[SUB:.*]] = cir.binop(sub
122- // CIR: cir.ptr_stride {{.*}}, %[[SUB]] : (!cir.ptr<!u8i>, !u32i) -> !cir.ptr<!u8i>
122+ // CIR: cir.ptr_stride inbounds|nuw {{.*}}, %[[SUB]] : (!cir.ptr<!u8i>, !u32i) -> !cir.ptr<!u8i>
123123
124124// LLVM-LABEL: @p
125- // LLVM: getelementptr i8, ptr {{.*}}
125+ // LLVM: getelementptr inbounds nuw i8, ptr {{.*}}
126+
0 commit comments