66 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 9void Uses() {10 // CHECK: FunctionDecl{{.*}}Uses11 // CHECK-NEXT: CompoundStmt12 13 int I;14 // CHECK-NEXT: DeclStmt15 // CHECK-NEXT: VarDecl16 17#pragma acc host_data use_device(I) if_present18 ;19 // CHECK-NEXT: OpenACCHostDataConstruct{{.*}}host_data20 // CHECK-NEXT: use_device clause21 // CHECK-NEXT: DeclRefExpr{{.*}}'I' 'int'22 // CHECK-NEXT: if_present clause23 // CHECK-NEXT: NullStmt24}25 26template<typename T>27void TemplUses() {28 // CHECK: FunctionTemplateDecl{{.*}}TemplUses29 // CHECK-NEXT: TemplateTypeParmDecl{{.*}}T30 // CHECK-NEXT: FunctionDecl{{.*}}TemplUses31 // CHECK-NEXT: CompoundStmt32 33 T I;34 // CHECK-NEXT: DeclStmt35 // CHECK-NEXT: VarDecl36 37#pragma acc host_data use_device(I) if_present38 ;39 // CHECK-NEXT: OpenACCHostDataConstruct{{.*}}host_data40 // CHECK-NEXT: use_device clause41 // CHECK-NEXT: DeclRefExpr{{.*}}'I' 'T'42 // CHECK-NEXT: if_present clause43 // CHECK-NEXT: NullStmt44 45 // Instantiations46 // CHECK-NEXT: FunctionDecl{{.*}} TemplUses 'void ()' implicit_instantiation47 // CHECK-NEXT: TemplateArgument type 'int'48 // CHECK-NEXT: BuiltinType{{.*}} 'int'49 // CHECK-NEXT: CompoundStmt50 51 // CHECK-NEXT: DeclStmt52 // CHECK-NEXT: VarDecl53 54 // CHECK-NEXT: OpenACCHostDataConstruct{{.*}}host_data55 // CHECK-NEXT: use_device clause56 // CHECK-NEXT: DeclRefExpr{{.*}}'I' 'int'57 // CHECK-NEXT: if_present clause58 // CHECK-NEXT: NullStmt59}60void Inst() {61 TemplUses<int>();62}63 64 65#endif // PCH_HELPER66