1 // RUN: %clang_cc1 %s -fopenacc -ast-dump | FileCheck %s
4 // RUN: %clang_cc1 %s -fopenacc -emit-pch -o %t %s
5 // RUN: %clang_cc1 %s -fopenacc -include-pch %t -ast-dump-all | FileCheck %s
10 // CHECK-LABEL: NormalFunc
11 // CHECK-NEXT: CompoundStmt
12 // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}parallel loop
13 // CHECK-NEXT: default(none)
14 #pragma acc parallel loop default(none)
15 for (unsigned I
= 0; I
< 5; ++I
) {
16 #pragma acc kernels loop
17 for (unsigned J
= 0; J
< 5; ++J
) {
19 // CHECK: OpenACCCombinedConstruct {{.*}}kernels loop
20 // CHECK: OpenACCCombinedConstruct {{.*}}serial loop
21 // CHECK-NEXT: default(present)
22 #pragma acc serial loop default(present)
23 for (unsigned J
= 0; J
< 5; ++J
) {
29 #pragma acc parallel loop default(none)
30 for (unsigned i
= 0; i
< 5; ++i
) {
34 #pragma acc serial loop default(present)
35 for (unsigned i
= 0; i
< 5; ++i
) {
39 // CHECK-LABEL: FunctionTemplateDecl {{.*}}TemplFunc
40 // CHECK-NEXT: TemplateTypeParmDecl
43 // CHECK-NEXT: FunctionDecl
44 // CHECK-NEXT: CompoundStmt
45 // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}parallel loop
46 // CHECK-NEXT: default(none)
47 // CHECK: VarDecl{{.*}} I 'typename T::type'
49 // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}serial loop
50 // CHECK-NEXT: default(present)
51 // CHECK: VarDecl{{.*}} I 'typename T::type'
53 // Check instantiation.
54 // CHECK-LABEL: FunctionDecl{{.*}} used TemplFunc 'void ()' implicit_instantiation
55 // CHECK-NEXT: TemplateArgument type 'S'
56 // CHECK-NEXT: RecordType
57 // CHECK-NEXT: CXXRecord
58 // CHECK-NEXT: CompoundStmt
59 // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}parallel loop
60 // CHECK-NEXT: default(none)
61 // CHECK: VarDecl{{.*}} I 'typename S::type':'int'
62 // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}serial loop
63 // CHECK-NEXT: default(present)
64 // CHECK: VarDecl{{.*}} I 'typename S::type':'int'