brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.5 KiB · a147125 Raw
138 lines · cpp
1// RUN: %clang_cc1 %s -fopenacc -Wno-openacc-deprecated-clause-alias -ast-dump | FileCheck %s2 3// Test this with PCH.4// RUN: %clang_cc1 %s -fopenacc -Wno-openacc-deprecated-clause-alias -emit-pch -o %t %s5// RUN: %clang_cc1 %s -fopenacc -Wno-openacc-deprecated-clause-alias -include-pch %t -ast-dump-all | FileCheck %s6 7#ifndef PCH_HELPER8#define PCH_HELPER9 10int Global;11short GlobalArray[5];12void NormalUses(float *PointerParam) {13  // CHECK: FunctionDecl{{.*}}NormalUses14  // CHECK: ParmVarDecl15  // CHECK-NEXT: CompoundStmt16 17#pragma acc data create(GlobalArray) pcreate(zero:PointerParam[Global]) present_or_create(Global)18  ;19  // CHECK-NEXT: OpenACCDataConstruct{{.*}} data20  // CHECK-NEXT: create clause21  // CHECK-NEXT: DeclRefExpr{{.*}}'short[5]' lvalue Var{{.*}}'GlobalArray' 'short[5]'22  // CHECK-NEXT: pcreate clause modifiers: zero23  // CHECK-NEXT: ArraySubscriptExpr{{.*}}'float' lvalue24  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'float *' <LValueToRValue>25  // CHECK-NEXT: DeclRefExpr{{.*}}'float *' lvalue ParmVar{{.*}}'PointerParam' 'float *'26  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'int' <LValueToRValue>27  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue Var{{.*}}'Global' 'int'28  // CHECK-NEXT: present_or_create clause29  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue Var{{.*}}'Global' 'int'30  // CHECK-NEXT: NullStmt31 32#pragma acc enter data create(GlobalArray) pcreate(zero:PointerParam[Global]) present_or_create(Global)33  // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}} enter data34  // CHECK-NEXT: create clause35  // CHECK-NEXT: DeclRefExpr{{.*}}'short[5]' lvalue Var{{.*}}'GlobalArray' 'short[5]'36  // CHECK-NEXT: pcreate clause modifiers: zero37  // CHECK-NEXT: ArraySubscriptExpr{{.*}}'float' lvalue38  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'float *' <LValueToRValue>39  // CHECK-NEXT: DeclRefExpr{{.*}}'float *' lvalue ParmVar{{.*}}'PointerParam' 'float *'40  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'int' <LValueToRValue>41  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue Var{{.*}}'Global' 'int'42  // CHECK-NEXT: present_or_create clause43  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue Var{{.*}}'Global' 'int'44}45 46template<auto &NTTP, typename T, typename U>47void TemplUses(T t, U u) {48  // CHECK-NEXT: FunctionTemplateDecl49  // CHECK-NEXT: NonTypeTemplateParmDecl {{.*}}referenced 'auto &' depth 0 index 0 NTTP50  // CHECK-NEXT: TemplateTypeParmDecl{{.*}}typename depth 0 index 1 T51  // CHECK-NEXT: TemplateTypeParmDecl{{.*}}typename depth 0 index 2 U52  // CHECK-NEXT: FunctionDecl{{.*}} TemplUses 'void (T, U)'53  // CHECK-NEXT: ParmVarDecl{{.*}} referenced t 'T'54  // CHECK-NEXT: ParmVarDecl{{.*}} referenced u 'U'55  // CHECK-NEXT: CompoundStmt56 57#pragma acc data create(t) pcreate(zero: NTTP, u) present_or_create(u[0:t])58  ;59  // CHECK-NEXT: OpenACCDataConstruct{{.*}} data60  // CHECK-NEXT: create clause61  // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 't' 'T'62  // CHECK-NEXT: pcreate clause modifiers: zero63  // CHECK-NEXT: DeclRefExpr{{.*}}'auto' lvalue NonTypeTemplateParm{{.*}} 'NTTP' 'auto &'64  // CHECK-NEXT: DeclRefExpr{{.*}}'U' lvalue ParmVar{{.*}} 'u' 'U'65  // CHECK-NEXT: present_or_create clause66  // CHECK-NEXT: ArraySectionExpr67  // CHECK-NEXT: DeclRefExpr{{.*}}'U' lvalue ParmVar{{.*}} 'u' 'U'68  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 069  // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 't' 'T'70  // CHECK-NEXT: NullStmt71 72#pragma acc enter data create(t) pcreate(zero: NTTP, u) present_or_create(u[0:t])73  // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}} enter data74  // CHECK-NEXT: create clause75  // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 't' 'T'76  // CHECK-NEXT: pcreate clause modifiers: zero77  // CHECK-NEXT: DeclRefExpr{{.*}}'auto' lvalue NonTypeTemplateParm{{.*}} 'NTTP' 'auto &'78  // CHECK-NEXT: DeclRefExpr{{.*}}'U' lvalue ParmVar{{.*}} 'u' 'U'79  // CHECK-NEXT: present_or_create clause80  // CHECK-NEXT: ArraySectionExpr81  // CHECK-NEXT: DeclRefExpr{{.*}}'U' lvalue ParmVar{{.*}} 'u' 'U'82  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 083  // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 't' 'T'84 85  // Check the instantiated versions of the above.86  // CHECK-NEXT: FunctionDecl{{.*}} used TemplUses 'void (int, int *)' implicit_instantiation87  // CHECK-NEXT: TemplateArgument decl88  // CHECK-NEXT: Var{{.*}} 'CEVar' 'const unsigned int'89  // CHECK-NEXT: TemplateArgument type 'int'90  // CHECK-NEXT: BuiltinType{{.*}} 'int'91  // CHECK-NEXT: TemplateArgument type 'int *'92  // CHECK-NEXT: PointerType{{.*}} 'int *'93  // CHECK-NEXT: BuiltinType{{.*}} 'int'94  // CHECK-NEXT: ParmVarDecl{{.*}} used t 'int'95  // CHECK-NEXT: ParmVarDecl{{.*}} used u 'int *'96  // CHECK-NEXT: CompoundStmt97 98  // CHECK-NEXT: OpenACCDataConstruct{{.*}} data99  // CHECK-NEXT: create clause100  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 't' 'int'101  // CHECK-NEXT: pcreate clause modifiers: zero102  // CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}}'const unsigned int' lvalue103  // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} referenced 'auto &' depth 0 index 0 NTTP104  // CHECK-NEXT: DeclRefExpr{{.*}}'const unsigned int' lvalue Var{{.*}} 'CEVar' 'const unsigned int'105  // CHECK-NEXT: DeclRefExpr{{.*}}'int *' lvalue ParmVar{{.*}} 'u' 'int *'106  // CHECK-NEXT: present_or_create clause107  // CHECK-NEXT: ArraySectionExpr108  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'int *' <LValueToRValue>109  // CHECK-NEXT: DeclRefExpr{{.*}}'int *' lvalue ParmVar{{.*}} 'u' 'int *'110  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0111  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'int' <LValueToRValue>112  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 't' 'int'113  // CHECK-NEXT: NullStmt114 115  // CHECK-NEXT: OpenACCEnterDataConstruct{{.*}} enter data116  // CHECK-NEXT: create clause117  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 't' 'int'118  // CHECK-NEXT: pcreate clause modifiers: zero119  // CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}}'const unsigned int' lvalue120  // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} referenced 'auto &' depth 0 index 0 NTTP121  // CHECK-NEXT: DeclRefExpr{{.*}}'const unsigned int' lvalue Var{{.*}} 'CEVar' 'const unsigned int'122  // CHECK-NEXT: DeclRefExpr{{.*}}'int *' lvalue ParmVar{{.*}} 'u' 'int *'123  // CHECK-NEXT: present_or_create clause124  // CHECK-NEXT: ArraySectionExpr125  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'int *' <LValueToRValue>126  // CHECK-NEXT: DeclRefExpr{{.*}}'int *' lvalue ParmVar{{.*}} 'u' 'int *'127  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0128  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'int' <LValueToRValue>129  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 't' 'int'130}131 132void Inst() {133  static constexpr unsigned CEVar = 1;134  int i;135  TemplUses<CEVar>(i, &i);136}137#endif138