79 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#ifndef PCH_HELPER7#define PCH_HELPER8 9int some_int();10 11template<typename T>12void TemplUses() {13 // CHECK: FunctionTemplateDecl{{.*}}TemplUses14 // CHECK-NEXT: TemplateTypeParmDecl{{.*}}T15 // CHECK-NEXT: FunctionDecl{{.*}}TemplUses16 // CHECK-NEXT: CompoundStmt17 18 // CHECK-NEXT: DeclStmt19 // CHECK-NEXT: VarDecl20 T t;21 22#pragma acc data default(none) async(some_int())23 ;24 // CHECK-NEXT: OpenACCDataConstruct{{.*}}data25 // CHECK-NEXT: default(none)26 // CHECK-NEXT: async clause27 // CHECK-NEXT: CallExpr{{.*}}'int'28 // CHECK-NEXT: ImplicitCastExpr29 // CHECK-NEXT: DeclRefExpr{{.*}}'some_int' 'int ()'30 // CHECK-NEXT: NullStmt31#pragma acc enter data copyin(t) async(T{})32 // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}}enter data33 // CHECK-NEXT: copyin clause34 // CHECK-NEXT: DeclRefExpr{{.*}}'t' 'T'35 // CHECK-NEXT: async clause36 // CHECK-NEXT: CXXUnresolvedConstructExpr{{.*}} 'T' 'T' list37 // CHECK-NEXT: InitListExpr{{.*}}'void'38#pragma acc exit data copyout(t) async39 // CHECK-NEXT: OpenACCExitDataConstruct{{.*}}exit data40 // CHECK-NEXT: copyout clause41 // CHECK-NEXT: DeclRefExpr{{.*}}'t' 'T'42 // CHECK-NEXT: async clause43 44 // Instantiations45 // CHECK-NEXT: FunctionDecl{{.*}} TemplUses 'void ()' implicit_instantiation46 // CHECK-NEXT: TemplateArgument type 'int'47 // CHECK-NEXT: BuiltinType{{.*}} 'int'48 // CHECK-NEXT: CompoundStmt49 50 // CHECK-NEXT: DeclStmt51 // CHECK-NEXT: VarDecl52 53 // CHECK-NEXT: OpenACCDataConstruct{{.*}}data54 // CHECK-NEXT: default(none)55 // CHECK-NEXT: async clause56 // CHECK-NEXT: CallExpr{{.*}}'int'57 // CHECK-NEXT: ImplicitCastExpr58 // CHECK-NEXT: DeclRefExpr{{.*}}'some_int' 'int ()'59 // CHECK-NEXT: NullStmt60 61 // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}}enter data62 // CHECK-NEXT: copyin clause63 // CHECK-NEXT: DeclRefExpr{{.*}}'t' 'int'64 // CHECK-NEXT: async clause65 // CHECK-NEXT: CXXFunctionalCastExpr66 // CHECK-NEXT: InitListExpr{{.*}}'int'67 68 // CHECK-NEXT: OpenACCExitDataConstruct{{.*}}exit data69 // CHECK-NEXT: copyout clause70 // CHECK-NEXT: DeclRefExpr{{.*}}'t' 'int'71 // CHECK-NEXT: async clause72}73void Inst() {74 TemplUses<int>();75}76 77 78#endif // PCH_HELPER79