1 // RUN: %clang_cc1 -fopenacc -Wno-openacc-deprecated-clause-alias -ast-print %s -o - | FileCheck %s 2 3 struct SomeStruct{}; 4 5 constexpr int get_value() { return 1; } 6 void foo() { 7 // CHECK: #pragma acc loop 8 // CHECK-NEXT: for (;;) 9 // CHECK-NEXT: ; 10 #pragma acc loop 11 for(;;); 12 13 // CHECK: #pragma acc loop device_type(SomeStruct) 14 // CHECK-NEXT: for (;;) 15 // CHECK-NEXT: ; 16 #pragma acc loop device_type(SomeStruct) 17 for(;;); 18 19 // CHECK: #pragma acc loop device_type(int) 20 // CHECK-NEXT: for (;;) 21 // CHECK-NEXT: ; 22 #pragma acc loop device_type(int) 23 for(;;); 24 25 // CHECK: #pragma acc loop dtype(bool) 26 // CHECK-NEXT: for (;;) 27 // CHECK-NEXT: ; 28 #pragma acc loop dtype(bool) 29 for(;;); 30 31 // CHECK: #pragma acc loop dtype(AnotherIdent) 32 // CHECK-NEXT: for (;;) 33 // CHECK-NEXT: ; 34 #pragma acc loop dtype(AnotherIdent) 35 for(;;); 36 37 // CHECK: #pragma acc loop independent 38 // CHECK-NEXT: for (;;) 39 // CHECK-NEXT: ; 40 #pragma acc loop independent 41 for(;;); 42 // CHECK: #pragma acc loop seq 43 // CHECK-NEXT: for (;;) 44 // CHECK-NEXT: ; 45 #pragma acc loop seq 46 for(;;); 47 // CHECK: #pragma acc loop auto 48 // CHECK-NEXT: for (;;) 49 // CHECK-NEXT: ; 50 #pragma acc loop auto 51 for(;;); 52 53 int i; 54 float array[5]; 55 56 // CHECK: #pragma acc loop private(i, array[1], array, array[1:2]) 57 // CHECK-NEXT: for (;;) 58 // CHECK-NEXT: ; 59 #pragma acc loop private(i, array[1], array, array[1:2]) 60 for(;;); 61 62 // CHECK: #pragma acc loop collapse(1) 63 // CHECK-NEXT: for (;;) 64 // CHECK-NEXT: ; 65 #pragma acc loop collapse(1) 66 for(;;); 67 // CHECK: #pragma acc loop collapse(force:1) 68 // CHECK-NEXT: for (;;) 69 // CHECK-NEXT: ; 70 #pragma acc loop collapse(force:1) 71 for(;;); 72 // CHECK: #pragma acc loop collapse(2) 73 // CHECK-NEXT: for (;;) 74 // CHECK-NEXT: for (;;) 75 // CHECK-NEXT: ; 76 #pragma acc loop collapse(2) 77 for(;;) 78 for(;;); 79 // CHECK: #pragma acc loop collapse(force:2) 80 // CHECK-NEXT: for (;;) 81 // CHECK-NEXT: for (;;) 82 // CHECK-NEXT: ; 83 #pragma acc loop collapse(force:2) 84 for(;;) 85 for(;;); 86 87 // CHECK: #pragma acc loop tile(1, 3, *, get_value()) 88 // CHECK-NEXT: for (;;) 89 // CHECK-NEXT: for (;;) 90 // CHECK-NEXT: for (;;) 91 // CHECK-NEXT: for (;;) 92 // CHECK-NEXT: ; 93 #pragma acc loop tile(1, 3, *, get_value()) 94 for(;;) 95 for(;;) 96 for(;;) 97 for(;;); 98 } 99