[clang] e27fe2e - [OpenACC][NFC] Add the _Pragma spelling to a bunch of the tests

via cfe-commits cfe-commits at lists.llvm.org
Wed Mar 12 11:01:43 PDT 2025


Author: erichkeane
Date: 2025-03-12T11:01:38-07:00
New Revision: e27fe2e07c040719075da79d6880bf57b2dc5dbc

URL: https://github.com/llvm/llvm-project/commit/e27fe2e07c040719075da79d6880bf57b2dc5dbc
DIFF: https://github.com/llvm/llvm-project/commit/e27fe2e07c040719075da79d6880bf57b2dc5dbc.diff

LOG: [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.

Added: 
    

Modified: 
    clang/test/SemaOpenACC/atomic-construct-ast.cpp
    clang/test/SemaOpenACC/cache-construct-ast.cpp
    clang/test/SemaOpenACC/combined-construct-ast.cpp
    clang/test/SemaOpenACC/compute-construct-ast.cpp
    clang/test/SemaOpenACC/data-construct-default-ast.cpp
    clang/test/SemaOpenACC/declare-construct-ast.cpp
    clang/test/SemaOpenACC/init-construct-ast.cpp
    clang/test/SemaOpenACC/loop-ast.cpp
    clang/test/SemaOpenACC/shutdown-construct-ast.cpp

Removed: 
    


################################################################################
diff  --git a/clang/test/SemaOpenACC/atomic-construct-ast.cpp b/clang/test/SemaOpenACC/atomic-construct-ast.cpp
index 6579b87941e5a..bfd7f32884f1d 100644
--- a/clang/test/SemaOpenACC/atomic-construct-ast.cpp
+++ b/clang/test/SemaOpenACC/atomic-construct-ast.cpp
@@ -21,6 +21,14 @@ void foo(int v, int x) {
 #pragma acc atomic read
   v = x;
 
+// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read
+// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='
+// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'
+// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>
+// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'
+_Pragma("acc atomic read")
+  v = x;
+
 // CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write
 // CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='
 // CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'

diff  --git a/clang/test/SemaOpenACC/cache-construct-ast.cpp b/clang/test/SemaOpenACC/cache-construct-ast.cpp
index 3d2e6a0eb0c3f..44c80beed77a3 100644
--- a/clang/test/SemaOpenACC/cache-construct-ast.cpp
+++ b/clang/test/SemaOpenACC/cache-construct-ast.cpp
@@ -20,6 +20,12 @@ void use() {
   // CHECK-NEXT: ImplicitCastExpr{{.*}}'int *' <ArrayToPointerDecay>
   // CHECK-NEXT: DeclRefExpr{{.*}}'Array' 'int[5]'
   // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
+_Pragma("acc cache(Array[1])")
+  // CHECK-NEXT: OpenACCCacheConstruct{{.*}} cache
+  // CHECK-NEXT: ArraySubscriptExpr{{.*}}'int' lvalue
+  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int *' <ArrayToPointerDecay>
+  // CHECK-NEXT: DeclRefExpr{{.*}}'Array' 'int[5]'
+  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 1
 #pragma acc cache(Array[1:2])
   // CHECK-NEXT: OpenACCCacheConstruct{{.*}} cache
   // CHECK-NEXT: ArraySectionExpr{{.*}}'<array section type>' lvalue

diff  --git a/clang/test/SemaOpenACC/combined-construct-ast.cpp b/clang/test/SemaOpenACC/combined-construct-ast.cpp
index 1b818e3aa12e0..eb59dc919c900 100644
--- a/clang/test/SemaOpenACC/combined-construct-ast.cpp
+++ b/clang/test/SemaOpenACC/combined-construct-ast.cpp
@@ -27,6 +27,22 @@ void NormalFunc() {
   // CHECK-NEXT: DeclRefExpr{{.*}}'i'
   // CHECK-NEXT: NullStmt
 
+_Pragma("acc parallel loop")
+  for(int i = 0; i < 5;++i);
+  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop
+  // CHECK-NEXT: ForStmt
+  // CHECK-NEXT: DeclStmt
+  // CHECK-NEXT: VarDecl{{.*}}i
+  // CHECK-NEXT: IntegerLiteral {{.*}}'int' 0
+  // CHECK-NEXT: <<<NULL>>>
+  // CHECK-NEXT: BinaryOperator {{.*}} 'bool' '<'
+  // CHECK-NEXT: ImplicitCastExpr
+  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'
+  // CHECK-NEXT: IntegerLiteral {{.*}}'int' 5
+  // CHECK-NEXT: UnaryOperator{{.*}} '++'
+  // CHECK-NEXT: DeclRefExpr{{.*}}'i'
+  // CHECK-NEXT: NullStmt
+
 #pragma acc serial loop
   for(int i = 0; i < 5;++i);
   // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop

diff  --git a/clang/test/SemaOpenACC/compute-construct-ast.cpp b/clang/test/SemaOpenACC/compute-construct-ast.cpp
index b24ad91087404..620ec2e4a2e24 100644
--- a/clang/test/SemaOpenACC/compute-construct-ast.cpp
+++ b/clang/test/SemaOpenACC/compute-construct-ast.cpp
@@ -45,6 +45,10 @@ void NormalFunc() {
 #pragma acc kernels
     {}
   }
+  // CHECK-NEXT: OpenACCComputeConstruct {{.*}}kernels
+  // CHECK-NEXT: CompoundStmt
+  _Pragma("acc kernels")
+  {}
 }
 
 template<typename T>

diff  --git a/clang/test/SemaOpenACC/data-construct-default-ast.cpp b/clang/test/SemaOpenACC/data-construct-default-ast.cpp
index ef9b1348c6709..8ab34783dce9e 100644
--- a/clang/test/SemaOpenACC/data-construct-default-ast.cpp
+++ b/clang/test/SemaOpenACC/data-construct-default-ast.cpp
@@ -15,6 +15,9 @@ void NormalFunc() {
   // CHECK: OpenACCDataConstruct {{.*}}data
   // CHECK-NEXT: default(present)
 #pragma acc data default(present)
+  // CHECK-NEXT: OpenACCDataConstruct {{.*}}data
+  // CHECK-NEXT: default(present)
+_Pragma("acc data default(present)")
     ;
 }
 template<typename T>

diff  --git a/clang/test/SemaOpenACC/declare-construct-ast.cpp b/clang/test/SemaOpenACC/declare-construct-ast.cpp
index dfc79039fc9e6..ab49c9e42ea4e 100644
--- a/clang/test/SemaOpenACC/declare-construct-ast.cpp
+++ b/clang/test/SemaOpenACC/declare-construct-ast.cpp
@@ -18,6 +18,17 @@ int GlobalArray[5];
 // CHECK-NEXT: copyin clause
 // CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray' 'int[5]'
 
+int *Global1;
+// CHECK-NEXT: VarDecl{{.*}}Global1 'int *'
+int GlobalArray1[5];
+// CHECK-NEXT: VarDecl{{.*}}GlobalArray1 'int[5]'
+_Pragma("acc declare deviceptr(Global1), copyin(GlobalArray1)")
+// CHECK-NEXT: OpenACCDeclareDecl
+// CHECK-NEXT: deviceptr clause
+// CHECK-NEXT: DeclRefExpr{{.*}}'Global1' 'int *'
+// CHECK-NEXT: copyin clause
+// CHECK-NEXT: DeclRefExpr{{.*}}'GlobalArray1' 'int[5]'
+
 int *Global2;
 // CHECK: VarDecl{{.*}}Global2 'int *'
 int GlobalArray2[5];

diff  --git a/clang/test/SemaOpenACC/init-construct-ast.cpp b/clang/test/SemaOpenACC/init-construct-ast.cpp
index 7c7d07a450d51..ba0ca1ec36327 100644
--- a/clang/test/SemaOpenACC/init-construct-ast.cpp
+++ b/clang/test/SemaOpenACC/init-construct-ast.cpp
@@ -15,6 +15,8 @@ void NormalFunc() {
 
 #pragma acc init
   // CHECK-NEXT: OpenACCInitConstruct{{.*}}init
+_Pragma("acc init")
+  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init
 #pragma acc init if (some_int() < some_long())
   // CHECK-NEXT: OpenACCInitConstruct{{.*}}init
   // CHECK-NEXT: if clause

diff  --git a/clang/test/SemaOpenACC/loop-ast.cpp b/clang/test/SemaOpenACC/loop-ast.cpp
index d8ecef9741dee..c926c2252558f 100644
--- a/clang/test/SemaOpenACC/loop-ast.cpp
+++ b/clang/test/SemaOpenACC/loop-ast.cpp
@@ -28,6 +28,22 @@ void NormalFunc() {
   // CHECK-NEXT: DeclRefExpr{{.*}} 'i' 'int'
   // CHECK-NEXT: NullStmt
 
+_Pragma("acc loop")
+  for(int i = 0; i < 5;++i);
+  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} <orphan>
+  // CHECK-NEXT: ForStmt
+  // CHECK-NEXT: DeclStmt
+  // CHECK-NEXT: VarDecl {{.*}} used i 'int'
+  // CHECK-NEXT: IntegerLiteral {{.*}} 'int' 0
+  // CHECK-NEXT: <<<NULL>>
+  // CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'
+  // CHECK-NEXT: ImplicitCastExpr
+  // CHECK-NEXT: DeclRefExpr
+  // CHECK-NEXT: IntegerLiteral {{.*}} 'int' 5
+  // CHECK-NEXT: UnaryOperator{{.*}} prefix '++'
+  // CHECK-NEXT: DeclRefExpr{{.*}} 'i' 'int'
+  // CHECK-NEXT: NullStmt
+
   int array[5];
   // CHECK-NEXT: DeclStmt
   // CHECK-NEXT: VarDecl

diff  --git a/clang/test/SemaOpenACC/shutdown-construct-ast.cpp b/clang/test/SemaOpenACC/shutdown-construct-ast.cpp
index 3ec1c0d936493..13f345799e0cd 100644
--- a/clang/test/SemaOpenACC/shutdown-construct-ast.cpp
+++ b/clang/test/SemaOpenACC/shutdown-construct-ast.cpp
@@ -15,6 +15,8 @@ void NormalFunc() {
 
 #pragma acc shutdown
   // CHECK-NEXT: OpenACCShutdownConstruct{{.*}}shutdown
+_Pragma("acc shutdown")
+  // CHECK-NEXT: OpenACCShutdownConstruct{{.*}}shutdown
 #pragma acc shutdown if (some_int() < some_long())
   // CHECK-NEXT: OpenACCShutdownConstruct{{.*}}shutdown
   // CHECK-NEXT: if clause


        


More information about the cfe-commits mailing list