62 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_HELPER9 10int Global;11short GlobalArray[5];12 13void NormalUses(float *PointerParam) {14 // CHECK: FunctionDecl{{.*}}NormalUses15 // CHECK: ParmVarDecl16 // CHECK-NEXT: CompoundStmt17 18#pragma acc exit data copyout(Global) detach(PointerParam)19 // CHECK-NEXT: OpenACCExitDataConstruct{{.*}} exit data20 // CHECK-NEXT: copyout clause21 // CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'22 // CHECK-NEXT: detach clause23 // CHECK-NEXT: DeclRefExpr{{.*}}'float *' lvalue ParmVar{{.*}} 'PointerParam' 'float *'24}25 26template<typename T>27void TemplUses(T *t) {28 // CHECK-NEXT: FunctionTemplateDecl29 // CHECK-NEXT: TemplateTypeParmDecl{{.*}}typename depth 0 index 0 T30 // CHECK-NEXT: FunctionDecl{{.*}} TemplUses 'void (T *)'31 // CHECK-NEXT: ParmVarDecl{{.*}} referenced t 'T *'32 // CHECK-NEXT: CompoundStmt33 34#pragma acc exit data copyout(Global) detach(t)35 // CHECK-NEXT: OpenACCExitDataConstruct{{.*}} exit data36 // CHECK-NEXT: copyout clause37 // CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'38 // CHECK-NEXT: detach clause39 // CHECK-NEXT: DeclRefExpr{{.*}}'T *' lvalue ParmVar{{.*}} 't' 'T *'40 41 42 // Check the instantiated versions of the above.43 // CHECK-NEXT: FunctionDecl{{.*}} used TemplUses 'void (int *)' implicit_instantiation44 // CHECK-NEXT: TemplateArgument type 'int'45 // CHECK-NEXT: BuiltinType{{.*}} 'int'46 // CHECK-NEXT: ParmVarDecl{{.*}} used t 'int *'47 // CHECK-NEXT: CompoundStmt48 49 // CHECK-NEXT: OpenACCExitDataConstruct{{.*}} exit data50 // CHECK-NEXT: copyout clause51 // CHECK-NEXT: DeclRefExpr{{.*}}'Global' 'int'52 // CHECK-NEXT: detach clause53 // CHECK-NEXT: DeclRefExpr{{.*}}'int *' lvalue ParmVar{{.*}} 't' 'int *'54 55}56 57void Inst() {58 int i;59 TemplUses(&i);60}61#endif62