brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 8f09e74 Raw
76 lines · cpp
1// RUN: %clang_cc1 %s -fopenacc -ast-dump | FileCheck %s2 3// Test this with PCH.4// RUN: %clang_cc1 %s -fopenacc -emit-pch -o %t %s5// RUN: %clang_cc1 %s -fopenacc -include-pch %t -ast-dump-all | FileCheck %s6 7#ifndef PCH_HELPER8#define PCH_HELPER9void NormalFunc() {10  // CHECK-LABEL: NormalFunc11  // CHECK-NEXT: CompoundStmt12  // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}parallel loop13  // CHECK-NEXT: default(none)14#pragma acc parallel loop default(none)15  for (unsigned I = 0; I < 5; ++I) {16#pragma acc kernels loop17  for (unsigned J = 0; J < 5; ++J) {18  }19  // CHECK: OpenACCCombinedConstruct {{.*}}kernels loop20  // CHECK: OpenACCCombinedConstruct {{.*}}serial loop21  // CHECK-NEXT: default(present)22#pragma acc serial loop default(present)23  for (unsigned J = 0; J < 5; ++J) {24  }25  }26}27template<typename T>28void TemplFunc() {29#pragma acc parallel loop default(none)30  for (unsigned i = 0; i < 5; ++i) {31    typename T::type I;32  }33 34#pragma acc serial loop default(present)35  for (unsigned i = 0; i < 5; ++i) {36    typename T::type I;37  }38 39  // CHECK-LABEL: FunctionTemplateDecl {{.*}}TemplFunc40  // CHECK-NEXT: TemplateTypeParmDecl41 42  // Template Pattern:43  // CHECK-NEXT: FunctionDecl44  // CHECK-NEXT: CompoundStmt45  // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}parallel loop46  // CHECK-NEXT: default(none)47  // CHECK: VarDecl{{.*}} I 'typename T::type'48 49  // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}serial loop50  // CHECK-NEXT: default(present)51  // CHECK: VarDecl{{.*}} I 'typename T::type'52 53  // Check instantiation.54  // CHECK-LABEL: FunctionDecl{{.*}} used TemplFunc 'void ()' implicit_instantiation55  // CHECK-NEXT: TemplateArgument type 'S'56  // CHECK-NEXT: RecordType57  // CHECK-NEXT: CXXRecord58  // CHECK-NEXT: CompoundStmt59  // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}parallel loop60  // CHECK-NEXT: default(none)61  // CHECK: VarDecl{{.*}} I 'typename S::type':'int'62  // CHECK-NEXT: OpenACCCombinedConstruct {{.*}}serial loop63  // CHECK-NEXT: default(present)64  // CHECK: VarDecl{{.*}} I 'typename S::type':'int'65 66}67struct S {68  using type = int;69};70 71void use() {72  TemplFunc<S>();73}74 75#endif76