brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · 5abd142 Raw
110 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 10void NormalFunc() {11  // CHECK-LABEL: NormalFunc12  // CHECK-NEXT: CompoundStmt13 14  int Var;15  // CHECK-NEXT: DeclStmt16  // CHECK-NEXT: VarDecl17 18  // TODO OpenACC: these constructs require the clauses to be legal, but we19  // don't have the clauses implemented yet.  As we implement them, they needed20  // to be added to the 'check' lines.21 22#pragma acc data default(none)23  while (Var);24  // CHECK-NEXT: OpenACCDataConstruct{{.*}}data25  // CHECK-NEXT: default(none)26  // CHECK-NEXT: WhileStmt27  // CHECK: NullStmt28#pragma acc enter data copyin(Var)29  // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}} enter data30  // CHECK-NEXT: copyin clause31  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'int'32#pragma acc exit data copyout(Var)33  // CHECK-NEXT: OpenACCExitDataConstruct{{.*}} exit data34  // CHECK-NEXT: copyout clause35  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'int'36#pragma acc host_data use_device(Var)37  while (Var);38  // CHECK-NEXT: OpenACCHostDataConstruct{{.*}} host_data39  // CHECK-NEXT: use_device clause40  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'int'41  // CHECK-NEXT: WhileStmt42  // CHECK: NullStmt43}44 45template<typename T>46void TemplFunc() {47  // CHECK-LABEL: FunctionTemplateDecl {{.*}}TemplFunc48  // CHECK-NEXT: TemplateTypeParmDecl49  // CHECK-NEXT: FunctionDecl{{.*}}TemplFunc50  // CHECK-NEXT: CompoundStmt51 52  T Var;53  // CHECK-NEXT: DeclStmt54  // CHECK-NEXT: VarDecl55 56#pragma acc data default(none)57  while (Var);58  // CHECK-NEXT: OpenACCDataConstruct{{.*}}data59  // CHECK-NEXT: default(none)60  // CHECK-NEXT: WhileStmt61  // CHECK: NullStmt62#pragma acc enter data copyin(Var)63  // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}} enter data64  // CHECK-NEXT: copyin clause65  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'T'66#pragma acc exit data copyout(Var)67  // CHECK-NEXT: OpenACCExitDataConstruct{{.*}} exit data68  // CHECK-NEXT: copyout clause69  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'T'70#pragma acc host_data use_device(Var)71  while (Var);72  // CHECK-NEXT: OpenACCHostDataConstruct{{.*}} host_data73  // CHECK-NEXT: use_device clause74  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'T'75  // CHECK-NEXT: WhileStmt76  // CHECK: NullStmt77 78  // Instantiation:79  // CHECK-NEXT: FunctionDecl{{.*}} TemplFunc 'void ()' implicit_instantiation80  // CHECK-NEXT: TemplateArgument type 'int'81  // CHECK-NEXT: BuiltinType{{.*}} 'int'82  // CHECK-NEXT: CompoundStmt83 84  // CHECK-NEXT: DeclStmt85  // CHECK-NEXT: VarDecl86 87  // CHECK-NEXT: OpenACCDataConstruct{{.*}}data88  // CHECK-NEXT: default(none)89  // CHECK-NEXT: WhileStmt90  // CHECK: NullStmt91 92  // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}} enter data93  // CHECK-NEXT: copyin clause94  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'int'95 96  // CHECK-NEXT: OpenACCExitDataConstruct{{.*}} exit data97  // CHECK-NEXT: copyout clause98  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'int'99 100  // CHECK-NEXT: OpenACCHostDataConstruct{{.*}} host_data101  // CHECK-NEXT: use_device clause102  // CHECK-NEXT: DeclRefExpr{{.*}}'Var' 'int'103  // CHECK-NEXT: WhileStmt104  // CHECK: NullStmt105}106void use() {107  TemplFunc<int>();108}109#endif110