@@ -36,14 +36,14 @@ void *f4(void *a, int b) { return a - b; }
36
36
// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
37
37
// CIR: %[[STRIDE:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!s32i>, !s32i
38
38
// 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>
40
40
41
41
// LLVM-LABEL: f4
42
42
// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
43
43
// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
44
44
// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
45
45
// LLVM: %[[SUB:.*]] = sub i64 0, %[[STRIDE]]
46
- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[SUB]]
46
+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[SUB]]
47
47
48
48
// Similar to f4, just make sure it does not crash.
49
49
void * f4_1 (void * a , int b ) { return (a -= b ); }
@@ -52,13 +52,13 @@ FP f5(FP a, int b) { return a + b; }
52
52
// CIR-LABEL: f5
53
53
// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!cir.func<()>>>, !cir.ptr<!cir.func<()>>
54
54
// 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<()>>
56
56
57
57
// LLVM-LABEL: f5
58
58
// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
59
59
// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
60
60
// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
61
- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[STRIDE]]
61
+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[STRIDE]]
62
62
63
63
// These test the same paths above, just make sure it does not crash.
64
64
FP f5_1 (FP a , int b ) { return (a += b ); }
@@ -70,14 +70,14 @@ FP f7(FP a, int b) { return a - b; }
70
70
// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!cir.func<()>>>, !cir.ptr<!cir.func<()>>
71
71
// CIR: %[[STRIDE:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!s32i>, !s32i
72
72
// 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<()>>
74
74
75
75
// LLVM-LABEL: f7
76
76
// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
77
77
// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
78
78
// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
79
79
// LLVM: %[[SUB:.*]] = sub i64 0, %[[STRIDE]]
80
- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[SUB]]
80
+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[SUB]]
81
81
82
82
// Similar to f7, just make sure it does not crash.
83
83
FP f7_1 (FP a , int b ) { return (a -= b ); }
@@ -87,14 +87,14 @@ void f8(void *a, int b) { return *(id(a + b)); }
87
87
// CIR-LABEL: f8
88
88
// CIR: %[[PTR:.*]] = cir.load{{.*}} {{.*}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
89
89
// 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>
91
91
// CIR: cir.return
92
92
93
93
// LLVM-LABEL: f8
94
94
// LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
95
95
// LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
96
96
// LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
97
- // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[STRIDE]]
97
+ // LLVM: getelementptr inbounds i8, ptr %[[PTR]], i64 %[[STRIDE]]
98
98
// LLVM: ret void
99
99
100
100
void f8_1 (void * a , int b ) { return a [b ]; }
@@ -119,7 +119,8 @@ unsigned char *p(unsigned int x) {
119
119
120
120
// CIR-LABEL: @p
121
121
// 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>
123
123
124
124
// LLVM-LABEL: @p
125
- // LLVM: getelementptr i8, ptr {{.*}}
125
+ // LLVM: getelementptr inbounds nuw i8, ptr {{.*}}
126
+
0 commit comments