@@ -55,8 +55,34 @@ void *f4_1(void *a, int b) { return (a -= b); }
55
55
// FP f6_1(int a, FP b) { return (a += b); }
56
56
// FP f7(FP a, int b) { return a - b; }
57
57
// FP f7_1(FP a, int b) { return (a -= b); }
58
- // void f8(void *a, int b) { return *(a + b); }
59
- // void f8_1(void *a, int b) { return a[b]; }
58
+
59
+ void f8 (void * a , int b ) { return * (a + b ); }
60
+ // CIR-LABEL: f8
61
+ // CIR: %[[PTR:.*]] = cir.load {{.*}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
62
+ // CIR: %[[STRIDE:.*]] = cir.load {{.*}} : !cir.ptr<!s32i>, !s32i
63
+ // CIR: cir.ptr_stride(%[[PTR]] : !cir.ptr<!void>, %[[STRIDE]] : !s32i)
64
+ // CIR: cir.return
65
+
66
+ // LLVM-LABEL: f8
67
+ // LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
68
+ // LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
69
+ // LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
70
+ // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[STRIDE]]
71
+ // LLVM: ret void
72
+
73
+ void f8_1 (void * a , int b ) { return a [b ]; }
74
+ // CIR-LABEL: f8_1
75
+ // CIR: %[[PTR:.*]] = cir.load {{.*}} : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
76
+ // CIR: %[[STRIDE:.*]] = cir.load {{.*}} : !cir.ptr<!s32i>, !s32i
77
+ // CIR: cir.ptr_stride(%[[PTR]] : !cir.ptr<!void>, %[[STRIDE]] : !s32i)
78
+ // CIR: cir.return
79
+
80
+ // LLVM-LABEL: f8_1
81
+ // LLVM: %[[PTR:.*]] = load ptr, ptr {{.*}}, align 8
82
+ // LLVM: %[[TOEXT:.*]] = load i32, ptr {{.*}}, align 4
83
+ // LLVM: %[[STRIDE:.*]] = sext i32 %[[TOEXT]] to i64
84
+ // LLVM: getelementptr i8, ptr %[[PTR]], i64 %[[STRIDE]]
85
+ // LLVM: ret void
60
86
61
87
unsigned char * p (unsigned int x ) {
62
88
unsigned char * p ;
0 commit comments