Skip to content

Commit 72790fd

Browse files
committed
Add AST test
1 parent e769fcb commit 72790fd

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// RUN: %clang_cc1 -internal-isystem %S/Inputs -fsycl-is-device -ast-dump \
2+
// RUN: %s -o - | FileCheck %s
3+
4+
// This test checks parameter rewriting for free functions with parameters
5+
// of type struct with array and array of pointers.
6+
7+
#include "sycl.hpp"
8+
9+
constexpr int TestArrSize = 3;
10+
11+
template <int ArrSize>
12+
struct KArgWithPtrArray {
13+
int *data[ArrSize];
14+
int start[ArrSize];
15+
int end[ArrSize];
16+
constexpr int getArrSize() { return ArrSize; }
17+
};
18+
19+
template <int ArrSize>
20+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 0)]]
21+
void ff_6(KArgWithPtrArray<ArrSize> KArg) {
22+
for (int j = 0; j < ArrSize; j++)
23+
for (int i = KArg.start[j]; i <= KArg.end[j]; i++)
24+
KArg.data[j][i] = KArg.start[j] + KArg.end[j];
25+
}
26+
27+
template void ff_6(KArgWithPtrArray<TestArrSize> KArg);
28+
29+
// CHECK: FunctionDecl {{.*}}__sycl_kernel_ff_6{{.*}}'void (__generated_KArgWithPtrArray)'
30+
// CHECK-NEXT: ParmVarDecl {{.*}} used __arg_KArg '__generated_KArgWithPtrArray'
31+
// CHECK-NEXT: CompoundStmt
32+
// CHECK-NEXT: CallExpr
33+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'void (*)(KArgWithPtrArray<3>)' <FunctionToPointerDecay>
34+
// CHECK-NEXT: DeclRefExpr {{.*}} 'void (KArgWithPtrArray<3>)' lvalue Function {{.*}} 'ff_6' 'void (KArgWithPtrArray<3>)'
35+
// CHECK-NEXT: CXXConstructExpr {{.*}} 'KArgWithPtrArray<3>' 'void (const KArgWithPtrArray<3> &) noexcept'
36+
// CHECK-NEXT: ImplicitCastExpr {{.*}} 'const KArgWithPtrArray<3>' lvalue <NoOp>
37+
// CHECK-NEXT: UnaryOperator {{.*}} 'KArgWithPtrArray<3>' lvalue prefix '*' cannot overflow
38+
// CHECK-NEXT: CXXReinterpretCastExpr {{.*}} 'KArgWithPtrArray<3> *' reinterpret_cast<KArgWithPtrArray<3> *> <BitCast>
39+
// CHECK-NEXT: UnaryOperator {{.*}} '__generated_KArgWithPtrArray *' prefix '&' cannot overflow
40+
// CHECK-NEXT: DeclRefExpr {{.*}} '__generated_KArgWithPtrArray' lvalue ParmVar {{.*}} '__arg_KArg' '__generated_KArgWithPtrArray'

0 commit comments

Comments
 (0)