brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 750b28d Raw
161 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_HELPER8 9void NormalUses() {10  // CHECK: FunctionDecl{{.*}}NormalUses11  // CHECK-NEXT: CompoundStmt12 13#pragma acc loop auto14  for(int i = 0; i < 5; ++i){}15  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}16  // CHECK-NEXT: auto clause17  // CHECK-NEXT: ForStmt18  // CHECK-NEXT: DeclStmt19  // CHECK-NEXT: VarDecl{{.*}} i 'int'20  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 021  // CHECK-NEXT: <<<NULL>>>22  // CHECK-NEXT: BinaryOperator{{.*}}'<'23  // CHECK-NEXT: ImplicitCastExpr24  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'25  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 526  // CHECK-NEXT: UnaryOperator{{.*}}++27  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'28  // CHECK-NEXT: CompoundStmt29 30#pragma acc loop seq31  for(;;){}32  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}33  // CHECK-NEXT: seq clause34  // CHECK-NEXT: ForStmt35  // CHECK-NEXT: <<<NULL>>>36  // CHECK-NEXT: <<<NULL>>>37  // CHECK-NEXT: <<<NULL>>>38  // CHECK-NEXT: <<<NULL>>>39  // CHECK-NEXT: CompoundStmt40 41#pragma acc loop independent42  for(int i = 0; i < 5; ++i){}43  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}44  // CHECK-NEXT: independent clause45  // CHECK-NEXT: ForStmt46  // CHECK-NEXT: DeclStmt47  // CHECK-NEXT: VarDecl{{.*}} i 'int'48  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 049  // CHECK-NEXT: <<<NULL>>>50  // CHECK-NEXT: BinaryOperator{{.*}}'<'51  // CHECK-NEXT: ImplicitCastExpr52  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'53  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 554  // CHECK-NEXT: UnaryOperator{{.*}}++55  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'56  // CHECK-NEXT: CompoundStmt57}58 59template<typename T>60void TemplUses() {61  // CHECK: FunctionTemplateDecl{{.*}}TemplUses62  // CHECK-NEXT: TemplateTypeParmDecl63  // CHECK-NEXT: FunctionDecl{{.*}} TemplUses64  // CHECK-NEXT: CompoundStmt65 66#pragma acc loop auto67  for(int i = 0; i < 5; ++i){}68  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}69  // CHECK-NEXT: auto clause70  // CHECK-NEXT: ForStmt71  // CHECK-NEXT: DeclStmt72  // CHECK-NEXT: VarDecl{{.*}} i 'int'73  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 074  // CHECK-NEXT: <<<NULL>>>75  // CHECK-NEXT: BinaryOperator{{.*}}'<'76  // CHECK-NEXT: ImplicitCastExpr77  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'78  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 579  // CHECK-NEXT: UnaryOperator{{.*}}++80  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'81  // CHECK-NEXT: CompoundStmt82 83#pragma acc loop seq84  for(;;){}85  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}86  // CHECK-NEXT: seq clause87  // CHECK-NEXT: ForStmt88  // CHECK-NEXT: <<<NULL>>>89  // CHECK-NEXT: <<<NULL>>>90  // CHECK-NEXT: <<<NULL>>>91  // CHECK-NEXT: <<<NULL>>>92  // CHECK-NEXT: CompoundStmt93 94#pragma acc loop independent95  for(int i = 0; i < 5; ++i){}96  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}97  // CHECK-NEXT: independent clause98  // CHECK-NEXT: ForStmt99  // CHECK-NEXT: DeclStmt100  // CHECK-NEXT: VarDecl{{.*}} i 'int'101  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0102  // CHECK-NEXT: <<<NULL>>>103  // CHECK-NEXT: BinaryOperator{{.*}}'<'104  // CHECK-NEXT: ImplicitCastExpr105  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'106  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5107  // CHECK-NEXT: UnaryOperator{{.*}}++108  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'109  // CHECK-NEXT: CompoundStmt110 111  // Instantiations.112  // CHECK-NEXT: FunctionDecl{{.*}}TemplUses 'void ()' implicit_instantiation113  // CHECK-NEXT: TemplateArgument114  // CHECK-NEXT: BuiltinType115  // CHECK-NEXT: CompoundStmt116 117  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}118  // CHECK-NEXT: auto clause119  // CHECK-NEXT: ForStmt120  // CHECK-NEXT: DeclStmt121  // CHECK-NEXT: VarDecl{{.*}} i 'int'122  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0123  // CHECK-NEXT: <<<NULL>>>124  // CHECK-NEXT: BinaryOperator{{.*}}'<'125  // CHECK-NEXT: ImplicitCastExpr126  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'127  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5128  // CHECK-NEXT: UnaryOperator{{.*}}++129  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'130  // CHECK-NEXT: CompoundStmt131 132  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}133  // CHECK-NEXT: seq clause134  // CHECK-NEXT: ForStmt135  // CHECK-NEXT: <<<NULL>>>136  // CHECK-NEXT: <<<NULL>>>137  // CHECK-NEXT: <<<NULL>>>138  // CHECK-NEXT: <<<NULL>>>139  // CHECK-NEXT: CompoundStmt140 141  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}142  // CHECK-NEXT: independent clause143  // CHECK-NEXT: ForStmt144  // CHECK-NEXT: DeclStmt145  // CHECK-NEXT: VarDecl{{.*}} i 'int'146  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0147  // CHECK-NEXT: <<<NULL>>>148  // CHECK-NEXT: BinaryOperator{{.*}}'<'149  // CHECK-NEXT: ImplicitCastExpr150  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'151  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5152  // CHECK-NEXT: UnaryOperator{{.*}}++153  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'154  // CHECK-NEXT: CompoundStmt155}156 157void Inst() {158  TemplUses<int>();159}160#endif // PCH_HELPER161