// RUN: %clang_cc1 -fopenacc -ast-print %s -o - | FileCheck %s void foo(int v, int x) { // CHECK: #pragma acc atomic read // CHECK-NEXT: v = x; #pragma acc atomic read v = x; // CHECK-NEXT: pragma acc atomic write // CHECK-NEXT: v = x + 1; #pragma acc atomic write v = x + 1; // CHECK-NEXT: pragma acc atomic update // CHECK-NEXT: x++; #pragma acc atomic update x++; // CHECK-NEXT: pragma acc atomic // CHECK-NEXT: x--; #pragma acc atomic x--; // CHECK-NEXT: pragma acc atomic capture // CHECK-NEXT: v = x++; #pragma acc atomic capture v = x++; // CHECK-NEXT: #pragma acc atomic capture // CHECK-NEXT: { // CHECK-NEXT: x--; // CHECK-NEXT: v = x; // CHECK-NEXT: } #pragma acc atomic capture { x--; v = x; } } void foo2(int v, int x) { // CHECK: #pragma acc atomic read if(v) // CHECK-NEXT: v = x; #pragma acc atomic read if (v) v = x; // CHECK-NEXT: pragma acc atomic write if(x) // CHECK-NEXT: v = x + 1; #pragma acc atomic write if (x) v = x + 1; // CHECK-NEXT: pragma acc atomic update if(true) // CHECK-NEXT: x++; #pragma acc atomic update if (true) x++; // CHECK-NEXT: pragma acc atomic if(false) // CHECK-NEXT: x--; #pragma acc atomic if (false) x--; // CHECK-NEXT: pragma acc atomic capture if(v < x) // CHECK-NEXT: v = x++; #pragma acc atomic capture if (v < x) v = x++; // CHECK-NEXT: #pragma acc atomic capture if(x > v) // CHECK-NEXT: { // CHECK-NEXT: x--; // CHECK-NEXT: v = x; // CHECK-NEXT: } #pragma acc atomic capture if (x > v) { x--; v = x; } }