brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.4 KiB · 64ef8b1 Raw
151 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 some_int();11long some_long();12void NormalFunc() {13  // CHECK-LABEL: NormalFunc14  // CHECK-NEXT: CompoundStmt15 16#pragma acc init17  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init18_Pragma("acc init")19  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init20#pragma acc init if (some_int() < some_long())21  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init22  // CHECK-NEXT: if clause23  // CHECK-NEXT: BinaryOperator{{.*}} 'bool' '<'24  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'long'25  // CHECK-NEXT: CallExpr26  // CHECK-NEXT: ImplicitCastExpr27  // CHECK-NEXT: DeclRefExpr{{.*}}'some_int' 'int ()'28  // CHECK-NEXT: CallExpr29  // CHECK-NEXT: ImplicitCastExpr30  // CHECK-NEXT: DeclRefExpr{{.*}}'some_long' 'long ()'31#pragma acc init device_num(some_int())32  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init33  // CHECK-NEXT: device_num clause34  // CHECK-NEXT: CallExpr35  // CHECK-NEXT: ImplicitCastExpr36  // CHECK-NEXT: DeclRefExpr{{.*}}'some_int' 'int ()'37#pragma acc init device_type(default)38  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init39  // CHECK-NEXT: device_type(default)40#pragma acc init if (some_int() < some_long()) device_type(nvidia) device_num(some_int())41  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init42  // CHECK-NEXT: if clause43  // CHECK-NEXT: BinaryOperator{{.*}} 'bool' '<'44  // CHECK-NEXT: ImplicitCastExpr{{.*}} 'long'45  // CHECK-NEXT: CallExpr46  // CHECK-NEXT: ImplicitCastExpr47  // CHECK-NEXT: DeclRefExpr{{.*}}'some_int' 'int ()'48  // CHECK-NEXT: CallExpr49  // CHECK-NEXT: ImplicitCastExpr50  // CHECK-NEXT: DeclRefExpr{{.*}}'some_long' 'long ()'51  // CHECK-NEXT: device_type(nvidia)52  // CHECK-NEXT: device_num clause53  // CHECK-NEXT: CallExpr54  // CHECK-NEXT: ImplicitCastExpr55  // CHECK-NEXT: DeclRefExpr{{.*}}'some_int' 'int ()'56}57 58template<typename T>59void TemplFunc(T t) {60  // CHECK-LABEL: FunctionTemplateDecl {{.*}}TemplFunc61  // CHECK-NEXT: TemplateTypeParmDecl62  // CHECK-NEXT: FunctionDecl{{.*}}TemplFunc63  // CHECK-NEXT: ParmVarDecl{{.*}} t 'T'64  // CHECK-NEXT: CompoundStmt65 66#pragma acc init67  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init68#pragma acc init if (T::value > t)69  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init70  // CHECK-NEXT: if clause71  // CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '>'72  // CHECK-NEXT: DependentScopeDeclRefExpr73  // CHECK-NEXT: NestedNameSpecifier{{.*}} 'T'74  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'75#pragma acc init device_num(t)76  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init77  // CHECK-NEXT: device_num clause78  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'79#pragma acc init device_type(radeon)80  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init81  // CHECK-NEXT: device_type(radeon)82#pragma acc init if (T::value > t) device_type(host) device_num(t)83  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init84  // CHECK-NEXT: if clause85  // CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '>'86  // CHECK-NEXT: DependentScopeDeclRefExpr87  // CHECK-NEXT: NestedNameSpecifier{{.*}} 'T'88  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'89  // CHECK-NEXT: device_type(host)90  // CHECK-NEXT: device_num clause91  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'T'92 93  // Instantiation:94  // CHECK-NEXT: FunctionDecl{{.*}} TemplFunc 'void (SomeStruct)' implicit_instantiation95  // CHECK-NEXT: TemplateArgument type 'SomeStruct'96  // CHECK-NEXT: RecordType{{.*}} 'SomeStruct'97  // CHECK-NEXT: CXXRecord{{.*}} 'SomeStruct'98  // CHECK-NEXT: ParmVarDecl{{.*}} t 'SomeStruct'99  // CHECK-NEXT: CompoundStmt100 101  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init102 103  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init104  // CHECK-NEXT: if clause105  // CHECK-NEXT: BinaryOperator{{.*}} 'bool' '>'106  // CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'107  // CHECK-NEXT: DeclRefExpr{{.*}}'value' 'const unsigned int'108  // CHECK-NEXT: NestedNameSpecifier{{.*}} 'SomeStruct'109  // CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'110  // CHECK-NEXT: CXXMemberCallExpr{{.*}} 'unsigned int'111  // CHECK-NEXT: MemberExpr{{.*}} .operator unsigned int112  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'113 114  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init115  // CHECK-NEXT: device_num clause116  // CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'117  // CHECK-NEXT: CXXMemberCallExpr{{.*}}'unsigned int'118  // CHECK-NEXT: MemberExpr{{.*}} .operator unsigned int119  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'120 121  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init122  // CHECK-NEXT: device_type(radeon)123 124  // CHECK-NEXT: OpenACCInitConstruct{{.*}}init125  // CHECK-NEXT: if clause126  // CHECK-NEXT: BinaryOperator{{.*}} 'bool' '>'127  // CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'128  // CHECK-NEXT: DeclRefExpr{{.*}}'value' 'const unsigned int'129  // CHECK-NEXT: NestedNameSpecifier{{.*}} 'SomeStruct'130  // CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'131  // CHECK-NEXT: CXXMemberCallExpr{{.*}} 'unsigned int'132  // CHECK-NEXT: MemberExpr{{.*}} .operator unsigned int133  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'134  // CHECK-NEXT: device_type(host)135  // CHECK-NEXT: device_num clause136  // CHECK-NEXT: ImplicitCastExpr{{.*}}'unsigned int'137  // CHECK-NEXT: CXXMemberCallExpr{{.*}}'unsigned int'138  // CHECK-NEXT: MemberExpr{{.*}} .operator unsigned int139  // CHECK-NEXT: DeclRefExpr{{.*}} 't' 'SomeStruct'140}141 142struct SomeStruct{143  static constexpr unsigned value = 5;144  operator unsigned();145};146 147void use() {148  TemplFunc(SomeStruct{});149}150#endif151