66 lines · cpp
1// RUN: %clang_cc1 -fopenacc -ast-print %s -o - | FileCheck %s2 3void foo(int v, int x) {4// CHECK: #pragma acc atomic read5// CHECK-NEXT: v = x;6#pragma acc atomic read7 v = x;8// CHECK-NEXT: pragma acc atomic write9// CHECK-NEXT: v = x + 1;10#pragma acc atomic write11 v = x + 1;12// CHECK-NEXT: pragma acc atomic update13// CHECK-NEXT: x++;14#pragma acc atomic update15 x++;16// CHECK-NEXT: pragma acc atomic 17// CHECK-NEXT: x--;18#pragma acc atomic19 x--;20// CHECK-NEXT: pragma acc atomic capture21// CHECK-NEXT: v = x++;22#pragma acc atomic capture23 v = x++;24 25// CHECK-NEXT: #pragma acc atomic capture26// CHECK-NEXT: { 27// CHECK-NEXT: x--;28// CHECK-NEXT: v = x;29// CHECK-NEXT: }30#pragma acc atomic capture31 { x--; v = x; }32 33}34 35void foo2(int v, int x) {36// CHECK: #pragma acc atomic read if(v)37// CHECK-NEXT: v = x;38#pragma acc atomic read if (v)39 v = x;40// CHECK-NEXT: pragma acc atomic write if(x)41// CHECK-NEXT: v = x + 1;42#pragma acc atomic write if (x)43 v = x + 1;44// CHECK-NEXT: pragma acc atomic update if(true)45// CHECK-NEXT: x++;46#pragma acc atomic update if (true)47 x++;48// CHECK-NEXT: pragma acc atomic if(false)49// CHECK-NEXT: x--;50#pragma acc atomic if (false)51 x--;52// CHECK-NEXT: pragma acc atomic capture if(v < x)53// CHECK-NEXT: v = x++;54#pragma acc atomic capture if (v < x)55 v = x++;56 57// CHECK-NEXT: #pragma acc atomic capture if(x > v)58// CHECK-NEXT: { 59// CHECK-NEXT: x--;60// CHECK-NEXT: v = x;61// CHECK-NEXT: }62#pragma acc atomic capture if (x > v)63 { x--; v = x; }64 65}66