Skip to content

Commit e27fe2e

Browse files
committed
[OpenACC][NFC] Add the _Pragma spelling to a bunch of the tests
OpenACC PR 475(targetting OpenACC3.4) added support for the _Pragma spelling of an OpenACC pragma. We already implemented this, as clang doesn't really differentiate between the spellings (so we did it as an inadvertent extension). This patch adds a few spot-check tests to make sure we support this spelling and that it results in the same AST as the traditional spelling.
1 parent 96be34e commit e27fe2e

9 files changed

+68
-0
lines changed

clang/test/SemaOpenACC/atomic-construct-ast.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ void foo(int v, int x) {
2121
#pragma acc atomic read
2222
v = x;
2323

24+
// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read
25+
// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='
26+
// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'
27+
// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>
28+
// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'
29+
_Pragma("acc atomic read")
30+
v = x;
31+
2432
// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write
2533
// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='
2634
// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'

clang/test/SemaOpenACC/cache-construct-ast.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ void use() {
2020
// CHECK-NEXT: ImplicitCastExpr{{.*}}'int *' <ArrayToPointerDecay>
2121
// CHECK-NEXT: DeclRefExpr{{.*}}'Array' 'int[5]'
2222
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
23+
_Pragma("acc cache(Array[1])")
24+
// CHECK-NEXT: OpenACCCacheConstruct{{.*}} cache
25+
// CHECK-NEXT: ArraySubscriptExpr{{.*}}'int' lvalue
26+
// CHECK-NEXT: ImplicitCastExpr{{.*}}'int *' <ArrayToPointerDecay>
27+
// CHECK-NEXT: DeclRefExpr{{.*}}'Array' 'int[5]'
28+
// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
2329
#pragma acc cache(Array[1:2])
2430
// CHECK-NEXT: OpenACCCacheConstruct{{.*}} cache
2531
// CHECK-NEXT: ArraySectionExpr{{.*}}'<array section type>' lvalue

clang/test/SemaOpenACC/combined-construct-ast.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@ void NormalFunc() {
2727
// CHECK-NEXT: DeclRefExpr{{.*}}'i'
2828
// CHECK-NEXT: NullStmt
2929

30+
_Pragma("acc parallel loop")
31+
for(int i = 0; i < 5;++i);
32+
// CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop
33+
// CHECK-NEXT: ForStmt
34+
// CHECK-NEXT: DeclStmt
35+
// CHECK-NEXT: VarDecl{{.*}}i
36+
// CHECK-NEXT: IntegerLiteral {{.*}}'int' 0
37+
// CHECK-NEXT: <<<NULL>>>
38+
// CHECK-NEXT: BinaryOperator {{.*}} 'bool' '<'
39+
// CHECK-NEXT: ImplicitCastExpr
40+
// CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
41+
// CHECK-NEXT: IntegerLiteral {{.*}}'int' 5
42+
// CHECK-NEXT: UnaryOperator{{.*}} '++'
43+
// CHECK-NEXT: DeclRefExpr{{.*}}'i'
44+
// CHECK-NEXT: NullStmt
45+
3046
#pragma acc serial loop
3147
for(int i = 0; i < 5;++i);
3248
// CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop

clang/test/SemaOpenACC/compute-construct-ast.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ void NormalFunc() {
4545
#pragma acc kernels
4646
{}
4747
}
48+
// CHECK-NEXT: OpenACCComputeConstruct {{.*}}kernels
49+
// CHECK-NEXT: CompoundStmt
50+
_Pragma("acc kernels")
51+
{}
4852
}
4953

5054
template<typename T>

clang/test/SemaOpenACC/data-construct-default-ast.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ void NormalFunc() {
1515
// CHECK: OpenACCDataConstruct {{.*}}data
1616
// CHECK-NEXT: default(present)
1717
#pragma acc data default(present)
18+
// CHECK-NEXT: OpenACCDataConstruct {{.*}}data
19+
// CHECK-NEXT: default(present)
20+
_Pragma("acc data default(present)")
1821
;
1922
}
2023
template<typename T>

clang/test/SemaOpenACC/declare-construct-ast.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ int GlobalArray[5];
1818
// CHECK-NEXT: copyin clause
1919
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'int[5]'
2020

21+
int *Global1;
22+
// CHECK-NEXT: VarDecl{{.*}}Global1 'int *'
23+
int GlobalArray1[5];
24+
// CHECK-NEXT: VarDecl{{.*}}GlobalArray1 'int[5]'
25+
_Pragma("acc declare deviceptr(Global1), copyin(GlobalArray1)")
26+
// CHECK-NEXT: OpenACCDeclareDecl
27+
// CHECK-NEXT: deviceptr clause
28+
// CHECK-NEXT: DeclRefExpr{{.*}}'Global1' 'int *'
29+
// CHECK-NEXT: copyin clause
30+
// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray1' 'int[5]'
31+
2132
int *Global2;
2233
// CHECK: VarDecl{{.*}}Global2 'int *'
2334
int GlobalArray2[5];

clang/test/SemaOpenACC/init-construct-ast.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ void NormalFunc() {
1515

1616
#pragma acc init
1717
// CHECK-NEXT: OpenACCInitConstruct{{.*}}init
18+
_Pragma("acc init")
19+
// CHECK-NEXT: OpenACCInitConstruct{{.*}}init
1820
#pragma acc init if (some_int() < some_long())
1921
// CHECK-NEXT: OpenACCInitConstruct{{.*}}init
2022
// CHECK-NEXT: if clause

clang/test/SemaOpenACC/loop-ast.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@ void NormalFunc() {
2828
// CHECK-NEXT: DeclRefExpr{{.*}} 'i' 'int'
2929
// CHECK-NEXT: NullStmt
3030

31+
_Pragma("acc loop")
32+
for(int i = 0; i < 5;++i);
33+
// CHECK-NEXT: OpenACCLoopConstruct{{.*}} <orphan>
34+
// CHECK-NEXT: ForStmt
35+
// CHECK-NEXT: DeclStmt
36+
// CHECK-NEXT: VarDecl {{.*}} used i 'int'
37+
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 0
38+
// CHECK-NEXT: <<<NULL>>
39+
// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'
40+
// CHECK-NEXT: ImplicitCastExpr
41+
// CHECK-NEXT: DeclRefExpr
42+
// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 5
43+
// CHECK-NEXT: UnaryOperator{{.*}} prefix '++'
44+
// CHECK-NEXT: DeclRefExpr{{.*}} 'i' 'int'
45+
// CHECK-NEXT: NullStmt
46+
3147
int array[5];
3248
// CHECK-NEXT: DeclStmt
3349
// CHECK-NEXT: VarDecl

clang/test/SemaOpenACC/shutdown-construct-ast.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ void NormalFunc() {
1515

1616
#pragma acc shutdown
1717
// CHECK-NEXT: OpenACCShutdownConstruct{{.*}}shutdown
18+
_Pragma("acc shutdown")
19+
// CHECK-NEXT: OpenACCShutdownConstruct{{.*}}shutdown
1820
#pragma acc shutdown if (some_int() < some_long())
1921
// CHECK-NEXT: OpenACCShutdownConstruct{{.*}}shutdown
2022
// CHECK-NEXT: if clause

0 commit comments

Comments
 (0)