diff options
Diffstat (limited to 'clang/test/OpenMP/atomic_ast_print.cpp')
-rw-r--r-- | clang/test/OpenMP/atomic_ast_print.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/clang/test/OpenMP/atomic_ast_print.cpp b/clang/test/OpenMP/atomic_ast_print.cpp index ce8ebd52347..31c08920136 100644 --- a/clang/test/OpenMP/atomic_ast_print.cpp +++ b/clang/test/OpenMP/atomic_ast_print.cpp @@ -8,6 +8,7 @@ template <class T> T foo(T argc) { + T b = T(); T a = T(); #pragma omp atomic a++; @@ -17,6 +18,13 @@ T foo(T argc) { a = argc + argc; #pragma omp atomic update a = a + argc; +#pragma omp atomic capture + a = b++; +#pragma omp atomic capture + { + a = b; + b++; + } return T(); } @@ -29,6 +37,13 @@ T foo(T argc) { // CHECK-NEXT: a = argc + argc; // CHECK-NEXT: #pragma omp atomic update // CHECK-NEXT: a = a + argc; +// CHECK-NEXT: #pragma omp atomic capture +// CHECK-NEXT: a = b++; +// CHECK-NEXT: #pragma omp atomic capture +// CHECK-NEXT: { +// CHECK-NEXT: a = b; +// CHECK-NEXT: b++; +// CHECK-NEXT: } // CHECK: T a = T(); // CHECK-NEXT: #pragma omp atomic // CHECK-NEXT: a++; @@ -38,8 +53,16 @@ T foo(T argc) { // CHECK-NEXT: a = argc + argc; // CHECK-NEXT: #pragma omp atomic update // CHECK-NEXT: a = a + argc; +// CHECK-NEXT: #pragma omp atomic capture +// CHECK-NEXT: a = b++; +// CHECK-NEXT: #pragma omp atomic capture +// CHECK-NEXT: { +// CHECK-NEXT: a = b; +// CHECK-NEXT: b++; +// CHECK-NEXT: } int main(int argc, char **argv) { + int b = 0; int a = 0; // CHECK: int a = 0; #pragma omp atomic @@ -50,6 +73,13 @@ int main(int argc, char **argv) { a = argc + argc; #pragma omp atomic update a = a + argc; +#pragma omp atomic capture + a = b++; +#pragma omp atomic capture + { + a = b; + b++; + } // CHECK-NEXT: #pragma omp atomic // CHECK-NEXT: a++; // CHECK-NEXT: #pragma omp atomic read @@ -58,6 +88,13 @@ int main(int argc, char **argv) { // CHECK-NEXT: a = argc + argc; // CHECK-NEXT: #pragma omp atomic update // CHECK-NEXT: a = a + argc; + // CHECK-NEXT: #pragma omp atomic capture + // CHECK-NEXT: a = b++; + // CHECK-NEXT: #pragma omp atomic capture + // CHECK-NEXT: { + // CHECK-NEXT: a = b; + // CHECK-NEXT: b++; + // CHECK-NEXT: } return foo(a); } |