brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 7b10302 Raw
177 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 vector15  for(int i = 0; i < 5; ++i);16  // CHECK: OpenACCCombinedConstruct{{.*}}parallel loop17  // CHECK-NEXT: vector clause18  // CHECK-NEXT: ForStmt19  // CHECK: NullStmt20 21#pragma acc parallel loop vector(Val)22  for(int i = 0; i < 5; ++i);23  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}parallel loop24  // CHECK-NEXT: vector clause25  // CHECK-NEXT: ImplicitCastExpr26  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'27  // CHECK-NEXT: ForStmt28  // CHECK: NullStmt29 30#pragma acc serial loop vector31  for(int i = 0; i < 5; ++i);32  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}serial loop33  // CHECK-NEXT: vector clause34  // CHECK-NEXT: ForStmt35  // CHECK: NullStmt36 37#pragma acc kernels loop vector38  for(int i = 0; i < 5; ++i);39  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop40  // CHECK-NEXT: vector clause41  // CHECK-NEXT: ForStmt42  // CHECK: NullStmt43 44#pragma acc kernels loop vector(Val)45  for(int i = 0; i < 5; ++i);46  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop47  // CHECK-NEXT: vector clause48  // CHECK-NEXT: ImplicitCastExpr49  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'int'50  // CHECK-NEXT: ForStmt51  // CHECK: NullStmt52}53 54template<typename T, unsigned One>55void TemplateUses(T Val) {56  // CHECK: FunctionTemplateDecl{{.*}}TemplateUses57  // CHECK-NEXT: TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T58  // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} referenced 'unsigned int' depth 0 index 1 One59  // CHECK-NEXT: FunctionDecl{{.*}} TemplateUses 'void (T)'60  // CHECK-NEXT: ParmVarDecl{{.*}} referenced Val 'T'61  // CHECK-NEXT: CompoundStmt62 63 64#pragma acc parallel loop vector65  for(int i = 0; i < 5; ++i);66  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}parallel loop67  // CHECK-NEXT: vector clause68  // CHECK-NEXT: ForStmt69  // CHECK: NullStmt70 71#pragma acc parallel loop vector(Val)72  for(int i = 0; i < 5; ++i);73  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}parallel loop74  // CHECK-NEXT: vector clause75  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'T'76  // CHECK-NEXT: ForStmt77  // CHECK: NullStmt78 79#pragma acc parallel loop vector(length:One)80  for(int i = 0; i < 5; ++i);81  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}parallel loop82  // CHECK-NEXT: vector clause83  // CHECK-NEXT: DeclRefExpr{{.*}}'One' 'unsigned int'84  // CHECK-NEXT: ForStmt85  // CHECK: NullStmt86 87#pragma acc serial loop vector88  for(int i = 0; i < 5; ++i);89  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}serial loop90  // CHECK-NEXT: vector clause91  // CHECK-NEXT: ForStmt92  // CHECK: NullStmt93 94#pragma acc kernels loop vector95  for(int i = 0; i < 5; ++i);96  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop97  // CHECK-NEXT: vector clause98  // CHECK-NEXT: ForStmt99  // CHECK: NullStmt100 101#pragma acc kernels loop vector(Val)102  for(int i = 0; i < 5; ++i);103  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop104  // CHECK-NEXT: vector clause105  // CHECK-NEXT: DeclRefExpr{{.*}}'Val' 'T'106  // CHECK-NEXT: ForStmt107  // CHECK: NullStmt108 109#pragma acc kernels loop vector(length:One)110  for(int i = 0; i < 5; ++i);111  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop112  // CHECK-NEXT: vector clause113  // CHECK-NEXT: DeclRefExpr{{.*}}'One' 'unsigned int'114  // CHECK-NEXT: ForStmt115  // CHECK: NullStmt116 117 118  // Instantiation:119  // CHECK-NEXT: FunctionDecl{{.*}} used TemplateUses 'void (int)' implicit_instantiation120  // CHECK-NEXT: TemplateArgument type 'int'121  // CHECK-NEXT: BuiltinType{{.*}} 'int'122  // CHECK-NEXT: TemplateArgument integral '1U'123  // CHECK-NEXT: ParmVarDecl{{.*}} used Val 'int'124  // CHECK-NEXT: CompoundStmt125 126  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}parallel loop127  // CHECK-NEXT: vector clause128  // CHECK-NEXT: ForStmt129  // CHECK: NullStmt130 131  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}parallel loop132  // CHECK-NEXT: vector clause133  // CHECK-NEXT: ImplicitCastExpr134  // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'135  // CHECK-NEXT: ForStmt136  // CHECK: NullStmt137 138  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}parallel loop139  // CHECK-NEXT: vector clause140  // CHECK-NEXT: SubstNonTypeTemplateParmExpr141  // CHECK-NEXT: NonTypeTemplateParmDecl142  // CHECK-NEXT: IntegerLiteral{{.*}}1143  // CHECK-NEXT: ForStmt144  // CHECK: NullStmt145 146  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}serial loop147  // CHECK-NEXT: vector clause148  // CHECK-NEXT: ForStmt149  // CHECK: NullStmt150 151  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop152  // CHECK-NEXT: vector clause153  // CHECK-NEXT: ForStmt154  // CHECK: NullStmt155 156  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop157  // CHECK-NEXT: vector clause158  // CHECK-NEXT: ImplicitCastExpr159  // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'160  // CHECK-NEXT: ForStmt161  // CHECK: NullStmt162 163  // CHECK-NEXT: OpenACCCombinedConstruct{{.*}}kernels loop164  // CHECK-NEXT: vector clause165  // CHECK-NEXT: SubstNonTypeTemplateParmExpr166  // CHECK-NEXT: NonTypeTemplateParmDecl167  // CHECK-NEXT: IntegerLiteral{{.*}}1168  // CHECK-NEXT: ForStmt169  // CHECK: NullStmt170}171 172void inst() {173  TemplateUses<int, 1>(5);174}175 176#endif // PCH_HELPER177