| //RUN: %clang_cc1 -triple x86_64-pc-linux-gnu\ | |
| //RUN: -fopenmp -fopenmp-version=51 \ | |
| //RUN: -x c++ -std=c++14 -fexceptions -fcxx-exceptions \ | |
| //RUN: -Wno-source-uses-openmp -Wno-openmp-clauses \ | |
| //RUN: -ast-print %s | FileCheck %s --check-prefix=PRINT | |
| //RUN: %clang_cc1 -triple x86_64-pc-linux-gnu\ | |
| //RUN: -fopenmp -fopenmp-version=51 \ | |
| //RUN: -x c++ -std=c++14 -fexceptions -fcxx-exceptions \ | |
| //RUN: -Wno-source-uses-openmp -Wno-openmp-clauses \ | |
| //RUN: -ast-dump %s | FileCheck %s --check-prefix=DUMP | |
| //RUN: %clang_cc1 -triple x86_64-pc-linux-gnu\ | |
| //RUN: -fopenmp -fopenmp-version=51 \ | |
| //RUN: -x c++ -std=c++14 -fexceptions -fcxx-exceptions \ | |
| //RUN: -Wno-source-uses-openmp -Wno-openmp-clauses \ | |
| //RUN: -emit-pch -o %t %s | |
| //RUN: %clang_cc1 -triple x86_64-pc-linux-gnu\ | |
| //RUN: -fopenmp -fopenmp-version=51 \ | |
| //RUN: -x c++ -std=c++14 -fexceptions -fcxx-exceptions \ | |
| //RUN: -Wno-source-uses-openmp -Wno-openmp-clauses \ | |
| //RUN: -include-pch %t -ast-print %s | FileCheck %s --check-prefix=PRINT | |
| //RUN: %clang_cc1 -triple x86_64-pc-linux-gnu\ | |
| //RUN: -fopenmp -fopenmp-version=51 \ | |
| //RUN: -x c++ -std=c++14 -fexceptions -fcxx-exceptions \ | |
| //RUN: -Wno-source-uses-openmp -Wno-openmp-clauses \ | |
| //RUN: -include-pch %t -ast-dump-all %s | FileCheck %s --check-prefix=DUMP | |
| #ifndef HEADER | |
| #define HEADER | |
| int foo1() { | |
| int a; | |
| int i = 1; | |
| #pragma omp scope private(a) reduction(+:i) nowait | |
| { | |
| a = 123; | |
| ++i; | |
| } | |
| return i; | |
| } | |
| //DUMP: FunctionDecl {{.*}}foo1 'int ()' | |
| //DUMP: OMPScopeDirective | |
| //DUMP: OMPPrivateClause | |
| //DUMP: DeclRefExpr {{.*}}'int' lvalue Var{{.*}}'a' 'int' | |
| //DUMP: OMPReductionClause | |
| //DUMP: DeclRefExpr {{.*}}'int' lvalue Var{{.*}}'i' 'int' | |
| //DUMP: OMPNowaitClause | |
| //PRINT: #pragma omp scope private(a) reduction(+: i) nowait | |
| template <typename T> | |
| T run() { | |
| T a; | |
| T b; | |
| #pragma omp scope private(a) reduction(*:b) | |
| { | |
| b *= a; | |
| } | |
| return b; | |
| } | |
| int template_test() { | |
| double d; | |
| d = run<double>(); | |
| return 0; | |
| } | |
| //DUMP: FunctionTemplateDecl {{.*}}run | |
| //DUMP: TemplateTypeParmDecl {{.*}}referenced typename depth 0 index 0 T | |
| //DUMP: FunctionDecl {{.*}}run 'T ()' | |
| //DUMP: OMPScopeDirective | |
| //DUMP: OMPPrivateClause | |
| //DUMP: DeclRefExpr {{.*}}'T' lvalue Var {{.*}} 'a' 'T' | |
| //DUMP: OMPReductionClause | |
| //DUMP: DeclRefExpr {{.*}}'T' lvalue Var {{.*}} 'b' 'T' | |
| //DUMP: FunctionDecl {{.*}}used run 'double ()' | |
| //DUMP: TemplateArgument type 'double' | |
| //DUMP: BuiltinType {{.*}}'double' | |
| //DUMP: OMPScopeDirective | |
| //DUMP: OMPPrivateClause | |
| //DUMP: DeclRefExpr {{.*}}'double' lvalue Var {{.*}} 'a' 'double' | |
| //DUMP: OMPReductionClause | |
| //DUMP: DeclRefExpr {{.*}}'double' lvalue Var {{.*}} 'b' 'double' | |
| //PRINT: #pragma omp scope private(a) reduction(*: b) | |
| #endif // HEADER |