diff options
Diffstat (limited to 'test/OpenMP/declare_target_ast_print.cpp')
-rw-r--r-- | test/OpenMP/declare_target_ast_print.cpp | 81 |
1 files changed, 75 insertions, 6 deletions
diff --git a/test/OpenMP/declare_target_ast_print.cpp b/test/OpenMP/declare_target_ast_print.cpp index bd1acc28dc6c2..613926d5f614d 100644 --- a/test/OpenMP/declare_target_ast_print.cpp +++ b/test/OpenMP/declare_target_ast_print.cpp @@ -1,15 +1,34 @@ -// RUN: %clang_cc1 -verify -fopenmp -ast-print %s | FileCheck %s -// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s -// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s +// RUN: %clang_cc1 -verify -fopenmp -I %S/Inputs -ast-print %s | FileCheck %s +// RUN: %clang_cc1 -fopenmp -x c++ -std=c++11 -I %S/Inputs -emit-pch -o %t %s +// RUN: %clang_cc1 -fopenmp -std=c++11 -include-pch %t -fsyntax-only -I %S/Inputs -verify %s -ast-print | FileCheck %s -// RUN: %clang_cc1 -verify -fopenmp-simd -ast-print %s | FileCheck %s -// RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s -// RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -fsyntax-only -verify %s -ast-print | FileCheck %s +// RUN: %clang_cc1 -verify -fopenmp-simd -I %S/Inputs -ast-print %s | FileCheck %s +// RUN: %clang_cc1 -fopenmp-simd -x c++ -std=c++11 -I %S/Inputs -emit-pch -o %t %s +// RUN: %clang_cc1 -fopenmp-simd -std=c++11 -include-pch %t -fsyntax-only -I %S/Inputs -verify %s -ast-print | FileCheck %s // expected-no-diagnostics #ifndef HEADER #define HEADER +int out_decl_target = 0; +// CHECK: #pragma omp declare target{{$}} +// CHECK: int out_decl_target = 0; +// CHECK: #pragma omp end declare target{{$}} +// CHECK: #pragma omp declare target{{$}} +// CHECK: void lambda() +// CHECK: #pragma omp end declare target{{$}} + +#pragma omp declare target +void lambda () { +#ifdef __cpp_lambdas + (void)[&] { ++out_decl_target; }; +#else + #pragma clang __debug captured + (void)out_decl_target; +#endif +}; +#pragma omp end declare target + #pragma omp declare target // CHECK: #pragma omp declare target{{$}} void foo() {} @@ -150,11 +169,61 @@ struct SSSTt { // CHECK: #pragma omp end declare target // CHECK: int b; +#pragma omp declare target +template <typename T> +T baz() { return T(); } +#pragma omp end declare target + +template <> +int baz() { return 1; } + +// CHECK: #pragma omp declare target +// CHECK: template <typename T> T baz() { +// CHECK: return T(); +// CHECK: } +// CHECK: #pragma omp end declare target +// CHECK: #pragma omp declare target +// CHECK: template<> float baz<float>() { +// CHECK: return float(); +// CHECK: } +// CHECK: template<> int baz<int>() { +// CHECK: return 1; +// CHECK: } +// CHECK: #pragma omp end declare target + +#pragma omp declare target + #include "declare_target_include.h" + void xyz(); +#pragma omp end declare target + +// CHECK: #pragma omp declare target +// CHECK: void zyx(); +// CHECK: #pragma omp end declare target +// CHECK: #pragma omp declare target +// CHECK: void xyz(); +// CHECK: #pragma omp end declare target + +#pragma omp declare target + #pragma omp declare target + void abc(); + #pragma omp end declare target + void cba(); +#pragma omp end declare target + +// CHECK: #pragma omp declare target +// CHECK: void abc(); +// CHECK: #pragma omp end declare target +// CHECK: #pragma omp declare target +// CHECK: void cba(); +// CHECK: #pragma omp end declare target + int main (int argc, char **argv) { foo(); foo_c(); foo_cpp(); test1(); + baz<float>(); + baz<int>(); return (0); } |