summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP/atomic_ast_print.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/OpenMP/atomic_ast_print.cpp')
-rw-r--r--clang/test/OpenMP/atomic_ast_print.cpp37
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);
}
OpenPOWER on IntegriCloud