brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 6ac0fdb Raw
136 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_HELPER8void NormalUses() {9  // CHECK: FunctionDecl{{.*}}NormalUses10  // CHECK-NEXT: CompoundStmt11 12  int Val;13 14#pragma acc parallel loop worker15  for(int i = 0; i < 5; ++i);16  // CHECK: OpenACCCombinedConstruct{{.*}} parallel loop17  // CHECK-NEXT: worker clause18  // CHECK-NEXT: ForStmt19  // CHECK: NullStmt20#pragma acc serial loop worker21  for(int i = 0; i < 5; ++i);22  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop23  // CHECK-NEXT: worker clause24  // CHECK-NEXT: ForStmt25  // CHECK: NullStmt26 27#pragma acc kernels loop worker(Val)28  for(int i = 0; i < 5; ++i);29  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop30  // CHECK-NEXT: worker clause31  // CHECK-NEXT: ImplicitCastExpr32  // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'33  // CHECK-NEXT: ForStmt34  // CHECK: NullStmt35#pragma acc kernels loop worker(num:Val)36  for(int i = 0; i < 5; ++i);37  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop38  // CHECK-NEXT: worker clause39  // CHECK-NEXT: ImplicitCastExpr40  // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'41  // CHECK-NEXT: ForStmt42  // CHECK: NullStmt43}44 45template<typename T, unsigned One>46void TemplateUses(T Val) {47  // CHECK: FunctionTemplateDecl{{.*}}TemplateUses48  // CHECK-NEXT: TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T49  // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} referenced 'unsigned int' depth 0 index 1 One50  // CHECK-NEXT: FunctionDecl{{.*}} TemplateUses 'void (T)'51  // CHECK-NEXT: ParmVarDecl{{.*}} referenced Val 'T'52  // CHECK-NEXT: CompoundStmt53 54#pragma acc parallel loop worker55  for(int i = 0; i < 5; ++i);56  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop57  // CHECK-NEXT: worker clause58  // CHECK-NEXT: ForStmt59  // CHECK: NullStmt60#pragma acc serial loop worker61  for(int i = 0; i < 5; ++i);62  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop63  // CHECK-NEXT: worker clause64  // CHECK-NEXT: ForStmt65  // CHECK: NullStmt66 67#pragma acc kernels loop worker(Val)68  for(int i = 0; i < 5; ++i);69  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop70  // CHECK-NEXT: worker clause71  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'T'72  // CHECK-NEXT: ForStmt73  // CHECK: NullStmt74#pragma acc kernels loop worker(num:Val)75  for(int i = 0; i < 5; ++i);76  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop77  // CHECK-NEXT: worker clause78  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'T'79  // CHECK-NEXT: ForStmt80  // CHECK: NullStmt81 82#pragma acc kernels loop worker(num:One)83  for(int i = 0; i < 5; ++i);84  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop85  // CHECK-NEXT: worker clause86  // CHECK-NEXT: DeclRefExpr{{.*}}'One' 'unsigned int'87  // CHECK-NEXT: ForStmt88  // CHECK: NullStmt89 90  // Instantiation:91  // CHECK-NEXT: FunctionDecl{{.*}} used TemplateUses 'void (int)' implicit_instantiation92  // CHECK-NEXT: TemplateArgument type 'int'93  // CHECK-NEXT: BuiltinType{{.*}} 'int'94  // CHECK-NEXT: TemplateArgument integral '1U'95  // CHECK-NEXT: ParmVarDecl{{.*}} used Val 'int'96  // CHECK-NEXT: CompoundStmt97 98  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} parallel loop99  // CHECK-NEXT: worker clause100  // CHECK-NEXT: ForStmt101  // CHECK: NullStmt102 103  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} serial loop104  // CHECK-NEXT: worker clause105  // CHECK-NEXT: ForStmt106  // CHECK: NullStmt107 108  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop109  // CHECK-NEXT: worker clause110  // CHECK-NEXT: ImplicitCastExpr111  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'112  // CHECK-NEXT: ForStmt113  // CHECK: NullStmt114 115  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop116  // CHECK-NEXT: worker clause117  // CHECK-NEXT: ImplicitCastExpr118  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'119  // CHECK-NEXT: ForStmt120  // CHECK: NullStmt121 122  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}} kernels loop123  // CHECK-NEXT: worker clause124  // CHECK-NEXT: SubstNonTypeTemplateParmExpr125  // CHECK-NEXT: NonTypeTemplateParmDecl126  // CHECK-NEXT: IntegerLiteral{{.*}}'unsigned int' 1127  // CHECK-NEXT: ForStmt128  // CHECK: NullStmt129}130 131void inst() {132  TemplateUses<int, 1>(5);133}134 135#endif // PCH_HELPER136