@@ -12,7 +12,9 @@ __attribute__((sycl_kernel)) void kernel(const Func &kernelFunc) {
12
12
13
13
struct test_struct {
14
14
int data;
15
- int *ptr; // Unused pointer in struct
15
+ int *ptr;
16
+ int *ptr_array1[2 ];
17
+ int *ptr_array2[2 ][3 ];
16
18
};
17
19
18
20
void test (const int some_const) {
@@ -26,6 +28,7 @@ int main() {
26
28
int data = 5 ;
27
29
int * data_addr = &data;
28
30
int * new_data_addr = nullptr ;
31
+ int *ptr_array[2 ];
29
32
test_struct s;
30
33
s.data = data;
31
34
kernel<class kernel_int >(
@@ -40,7 +43,9 @@ int main() {
40
43
kernel<class kernel_pointer >(
41
44
[=]() {
42
45
new_data_addr[0 ] = data_addr[0 ];
46
+ int *local = ptr_array[1 ];
43
47
});
48
+
44
49
const int some_const = 10 ;
45
50
test (some_const);
46
51
return 0 ;
@@ -66,9 +71,18 @@ int main() {
66
71
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} '_arg_' 'int'
67
72
68
73
// Check kernel parameters
69
- // CHECK: {{.*}}kernel_struct{{.*}} 'void (int, __wrapper_class)'
74
+ // CHECK: {{.*}}kernel_struct{{.*}} 'void (int, __wrapper_class, __wrapper_class, __wrapper_class
75
+ // CHECK-SAME: __wrapper_class, __wrapper_class, __wrapper_class, __wrapper_class, __wrapper_class, __wrapper_class)'
70
76
// CHECK: ParmVarDecl {{.*}} used _arg_data 'int'
71
77
// CHECK: ParmVarDecl {{.*}} used _arg_ptr '__wrapper_class'
78
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array1 '__wrapper_class'
79
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array1 '__wrapper_class'
80
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array2 '__wrapper_class'
81
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array2 '__wrapper_class'
82
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array2 '__wrapper_class'
83
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array2 '__wrapper_class'
84
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array2 '__wrapper_class'
85
+ // CHECK: ParmVarDecl {{.*}} used _arg_ptr_array2 '__wrapper_class'
72
86
73
87
// Check that lambda field of struct type is initialized
74
88
// CHECK: VarDecl {{.*}}'(lambda at {{.*}}built-in-type-kernel-arg.cpp{{.*}})'
@@ -77,20 +91,66 @@ int main() {
77
91
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int' <LValueToRValue>
78
92
// CHECK-NEXT: DeclRefExpr {{.*}} 'int' lvalue ParmVar {{.*}} '_arg_data' 'int'
79
93
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
94
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
80
95
// CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
81
96
// CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr' '__wrapper_class'
97
+ // CHECK-NEXT: InitListExpr {{.*}} 'int *[2]'
98
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
99
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
100
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
101
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array1' '__wrapper_class'
102
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
103
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
104
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
105
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array1' '__wrapper_class'
106
+ // CHECK-NEXT: InitListExpr {{.*}} 'int *[2][3]'
107
+ // CHECK-NEXT: InitListExpr {{.*}} 'int *[3]'
108
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
109
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
110
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
111
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array2' '__wrapper_class'
112
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
113
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
114
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
115
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array2' '__wrapper_class'
116
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
117
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
118
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
119
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array2' '__wrapper_class'
120
+ // CHECK-NEXT: InitListExpr {{.*}} 'int *[3]'
121
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
122
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
123
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
124
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array2' '__wrapper_class'
125
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
126
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
127
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
128
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array2' '__wrapper_class'
129
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
130
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
131
+ // CHECK-NEXT: MemberExpr {{.*}} '__global int *' lvalue . {{.*}}
132
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__wrapper_class' lvalue ParmVar {{.*}} '_arg_ptr_array2' '__wrapper_class'
82
133
83
134
// Check kernel parameters
84
- // CHECK: {{.*}}kernel_pointer{{.*}} 'void (__global int *, __global int *)'
135
+ // CHECK: {{.*}}kernel_pointer{{.*}} 'void (__global int *, __global int *, __global int *, __global int *)'
136
+ // CHECK: ParmVarDecl {{.*}} used _arg_ '__global int *'
137
+ // CHECK: ParmVarDecl {{.*}} used _arg_ '__global int *'
85
138
// CHECK: ParmVarDecl {{.*}} used _arg_ '__global int *'
86
139
// CHECK: ParmVarDecl {{.*}} used _arg_ '__global int *'
87
140
// CHECK: VarDecl {{.*}}'(lambda at {{.*}}built-in-type-kernel-arg.cpp{{.*}})'
88
141
89
142
// Check that lambda fields of pointer types are initialized
90
143
// CHECK: InitListExpr
91
144
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
145
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
92
146
// CHECK-NEXT: DeclRefExpr {{.*}} '__global int *' lvalue ParmVar {{.*}} '_arg_' '__global int *'
93
147
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
148
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
149
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__global int *' lvalue ParmVar {{.*}} '_arg_' '__global int *'
150
+ // CHECK: InitListExpr {{.*}} 'int *[2]'
151
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
152
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
153
+ // CHECK-NEXT: DeclRefExpr {{.*}} '__global int *' lvalue ParmVar {{.*}} '_arg_' '__global int *'
154
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} 'int *' <AddressSpaceConversion>
155
+ // CHECK-NEXT: ImplicitCastExpr {{.*}} '__global int *' <LValueToRValue>
94
156
// CHECK-NEXT: DeclRefExpr {{.*}} '__global int *' lvalue ParmVar {{.*}} '_arg_' '__global int *'
95
-
96
- // Check kernel parameters
0 commit comments