aboutsummaryrefslogtreecommitdiff
path: root/clang/test/AST/ast-print-openacc-routine-construct.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/AST/ast-print-openacc-routine-construct.cpp')
-rw-r--r--clang/test/AST/ast-print-openacc-routine-construct.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/clang/test/AST/ast-print-openacc-routine-construct.cpp b/clang/test/AST/ast-print-openacc-routine-construct.cpp
new file mode 100644
index 0000000..64628d5
--- /dev/null
+++ b/clang/test/AST/ast-print-openacc-routine-construct.cpp
@@ -0,0 +1,89 @@
+// RUN: %clang_cc1 -fopenacc -ast-print %s -o - | FileCheck %s
+
+auto Lambda = [](){};
+// CHECK: #pragma acc routine(Lambda)
+#pragma acc routine(Lambda)
+int function();
+// CHECK: #pragma acc routine(function)
+#pragma acc routine (function)
+
+namespace NS {
+ int NSFunc();
+auto Lambda = [](){};
+}
+// CHECK: #pragma acc routine(NS::NSFunc)
+#pragma acc routine(NS::NSFunc)
+// CHECK: #pragma acc routine(NS::Lambda)
+#pragma acc routine(NS::Lambda)
+
+struct S {
+ void MemFunc();
+ static void StaticMemFunc();
+ constexpr static auto Lambda = [](){};
+// CHECK: #pragma acc routine(S::MemFunc)
+#pragma acc routine(S::MemFunc)
+// CHECK: #pragma acc routine(S::StaticMemFunc)
+#pragma acc routine(S::StaticMemFunc)
+// CHECK: #pragma acc routine(S::Lambda)
+#pragma acc routine(S::Lambda)
+
+// CHECK: #pragma acc routine(MemFunc)
+#pragma acc routine(MemFunc)
+// CHECK: #pragma acc routine(StaticMemFunc)
+#pragma acc routine(StaticMemFunc)
+// CHECK: #pragma acc routine(Lambda)
+#pragma acc routine(Lambda)
+};
+
+// CHECK: #pragma acc routine(S::MemFunc)
+#pragma acc routine(S::MemFunc)
+// CHECK: #pragma acc routine(S::StaticMemFunc)
+#pragma acc routine(S::StaticMemFunc)
+// CHECK: #pragma acc routine(S::Lambda)
+#pragma acc routine(S::Lambda)
+
+template<typename T>
+struct DepS {
+ void MemFunc();
+ static void StaticMemFunc();
+ constexpr static auto Lambda = [](){};
+
+// CHECK: #pragma acc routine(Lambda)
+#pragma acc routine(Lambda)
+// CHECK: #pragma acc routine(MemFunc)
+#pragma acc routine(MemFunc)
+// CHECK: #pragma acc routine(StaticMemFunc)
+#pragma acc routine(StaticMemFunc)
+
+// CHECK: #pragma acc routine(DepS<T>::Lambda)
+#pragma acc routine(DepS::Lambda)
+// CHECK: #pragma acc routine(DepS<T>::MemFunc)
+#pragma acc routine(DepS::MemFunc)
+// CHECK: #pragma acc routine(DepS<T>::StaticMemFunc)
+#pragma acc routine(DepS::StaticMemFunc)
+
+// CHECK: #pragma acc routine(DepS<T>::Lambda)
+#pragma acc routine(DepS<T>::Lambda)
+// CHECK: #pragma acc routine(DepS<T>::MemFunc)
+#pragma acc routine(DepS<T>::MemFunc)
+// CHECK: #pragma acc routine(DepS<T>::StaticMemFunc)
+#pragma acc routine(DepS<T>::StaticMemFunc)
+};
+
+// CHECK: #pragma acc routine(DepS<int>::Lambda)
+#pragma acc routine(DepS<int>::Lambda)
+// CHECK: #pragma acc routine(DepS<int>::MemFunc)
+#pragma acc routine(DepS<int>::MemFunc)
+// CHECK: #pragma acc routine(DepS<int>::StaticMemFunc)
+#pragma acc routine(DepS<int>::StaticMemFunc)
+
+
+template<typename T>
+void TemplFunc() {
+// CHECK: #pragma acc routine(T::MemFunc)
+#pragma acc routine(T::MemFunc)
+// CHECK: #pragma acc routine(T::StaticMemFunc)
+#pragma acc routine(T::StaticMemFunc)
+// CHECK: #pragma acc routine(T::Lambda)
+#pragma acc routine(T::Lambda)
+}