brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 8ab3478 Raw
72 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: OpenACCDataConstruct {{.*}}data13  // CHECK-NEXT: default(none)14#pragma acc data  default(none)15  // CHECK: OpenACCDataConstruct {{.*}}data16  // CHECK-NEXT: default(present)17#pragma acc data default(present)18  // CHECK-NEXT: OpenACCDataConstruct {{.*}}data19  // CHECK-NEXT: default(present)20_Pragma("acc data default(present)")21    ;22}23template<typename T>24void TemplFunc() {25#pragma acc data default(none)26  for (unsigned i = 0; i < 5; ++i) {27    typename T::type I;28  }29 30#pragma acc data default(present)31  for (unsigned i = 0; i < 5; ++i) {32    typename T::type I;33  }34 35  // CHECK-LABEL: FunctionTemplateDecl {{.*}}TemplFunc36  // CHECK-NEXT: TemplateTypeParmDecl37 38  // Template Pattern:39  // CHECK-NEXT: FunctionDecl40  // CHECK-NEXT: CompoundStmt41  // CHECK-NEXT: OpenACCDataConstruct {{.*}}data42  // CHECK-NEXT: default(none)43  // CHECK: VarDecl{{.*}} I 'typename T::type'44 45  // CHECK-NEXT: OpenACCDataConstruct {{.*}}data46  // CHECK-NEXT: default(present)47  // CHECK: VarDecl{{.*}} I 'typename T::type'48 49  // Check instantiation.50  // CHECK-LABEL: FunctionDecl{{.*}} used TemplFunc 'void ()' implicit_instantiation51  // CHECK-NEXT: TemplateArgument type 'S'52  // CHECK-NEXT: RecordType53  // CHECK-NEXT: CXXRecord54  // CHECK-NEXT: CompoundStmt55  // CHECK-NEXT: OpenACCDataConstruct {{.*}}data56  // CHECK-NEXT: default(none)57  // CHECK: VarDecl{{.*}} I 'typename S::type':'int'58  // CHECK-NEXT: OpenACCDataConstruct {{.*}}data59  // CHECK-NEXT: default(present)60  // CHECK: VarDecl{{.*}} I 'typename S::type':'int'61 62}63struct S {64  using type = int;65};66 67void use() {68  TemplFunc<S>();69}70 71#endif72