brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.3 KiB · b841beb Raw
479 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 9template<unsigned I, typename ConvertsToInt, typename Int>10void TemplUses(ConvertsToInt CTI, Int IsI) {11  // CHECK: FunctionTemplateDecl{{.*}}TemplUses12  // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'unsigned int' depth 0 index 0 I13  // CHECK-NEXT: TemplateTypeParmDecl{{.*}}typename depth 0 index 1 ConvertsToInt14  // CHECK-NEXT: TemplateTypeParmDecl{{.*}}typename depth 0 index 2 Int15  // CHECK-NEXT: FunctionDecl{{.*}}TemplUses 'void (ConvertsToInt, Int)'16  // CHECK-NEXT: ParmVarDecl{{.*}}CTI 'ConvertsToInt'17  // CHECK-NEXT: ParmVarDecl{{.*}}IsI 'Int'18  // CHECK-NEXT: CompoundStmt19 20  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>21  // CHECK-NEXT: vector clause22  // CHECK-NEXT: ForStmt23  // CHECK-NEXT: DeclStmt24  // CHECK-NEXT: VarDecl{{.*}} i 'int'25  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 026  // CHECK-NEXT: <<<NULL>>>27  // CHECK-NEXT: BinaryOperator{{.*}}'<'28  // CHECK-NEXT: ImplicitCastExpr29  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'30  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 531  // CHECK-NEXT: UnaryOperator{{.*}}++32  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'33  // CHECK-NEXT: NullStmt34#pragma acc loop vector35  for(int i = 0; i < 5; ++i);36 37  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>38  // CHECK-NEXT: vector clause39  // CHECK-NEXT: DeclRefExpr{{.*}}'unsigned int' NonTypeTemplateParm{{.*}}'I' 'unsigned int'40  // CHECK-NEXT: ForStmt41  // CHECK-NEXT: DeclStmt42  // CHECK-NEXT: VarDecl{{.*}} i 'int'43  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 044  // CHECK-NEXT: <<<NULL>>>45  // CHECK-NEXT: BinaryOperator{{.*}}'<'46  // CHECK-NEXT: ImplicitCastExpr47  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'48  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 549  // CHECK-NEXT: UnaryOperator{{.*}}++50  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'51  // CHECK-NEXT: NullStmt52#pragma acc loop vector(I)53  for(int i = 0; i < 5; ++i);54 55  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>56  // CHECK-NEXT: vector clause57  // CHECK-NEXT: DeclRefExpr{{.*}}'ConvertsToInt' lvalue ParmVar{{.*}}'CTI' 'ConvertsToInt'58  // CHECK-NEXT: ForStmt59  // CHECK-NEXT: DeclStmt60  // CHECK-NEXT: VarDecl{{.*}} i 'int'61  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 062  // CHECK-NEXT: <<<NULL>>>63  // CHECK-NEXT: BinaryOperator{{.*}}'<'64  // CHECK-NEXT: ImplicitCastExpr65  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'66  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 567  // CHECK-NEXT: UnaryOperator{{.*}}++68  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'69  // CHECK-NEXT: NullStmt70#pragma acc loop vector(length:CTI)71  for(int i = 0; i < 5; ++i);72 73  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel74  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel75  // CHECK-NEXT: vector clause76  // CHECK-NEXT: DeclRefExpr{{.*}}'Int' lvalue ParmVar{{.*}}'IsI' 'Int'77  // CHECK-NEXT: ForStmt78  // CHECK-NEXT: DeclStmt79  // CHECK-NEXT: VarDecl{{.*}} i 'int'80  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 081  // CHECK-NEXT: <<<NULL>>>82  // CHECK-NEXT: BinaryOperator{{.*}}'<'83  // CHECK-NEXT: ImplicitCastExpr84  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'85  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 586  // CHECK-NEXT: UnaryOperator{{.*}}++87  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'88  // CHECK-NEXT: NullStmt89#pragma acc parallel90#pragma acc loop vector(length:IsI)91  for(int i = 0; i < 5; ++i);92 93  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial94  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial95  // CHECK-NEXT: vector clause96  // CHECK-NEXT: ForStmt97  // CHECK-NEXT: DeclStmt98  // CHECK-NEXT: VarDecl{{.*}} i 'int'99  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0100  // CHECK-NEXT: <<<NULL>>>101  // CHECK-NEXT: BinaryOperator{{.*}}'<'102  // CHECK-NEXT: ImplicitCastExpr103  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'104  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5105  // CHECK-NEXT: UnaryOperator{{.*}}++106  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'107  // CHECK-NEXT: NullStmt108#pragma acc serial109#pragma acc loop vector110  for(int i = 0; i < 5; ++i);111 112  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} kernels113  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: kernels114  // CHECK-NEXT: vector clause115  // CHECK-NEXT: DeclRefExpr{{.*}}'Int' lvalue ParmVar{{.*}}'IsI' 'Int'116  // CHECK-NEXT: ForStmt117  // CHECK-NEXT: DeclStmt118  // CHECK-NEXT: VarDecl{{.*}} i 'int'119  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0120  // CHECK-NEXT: <<<NULL>>>121  // CHECK-NEXT: BinaryOperator{{.*}}'<'122  // CHECK-NEXT: ImplicitCastExpr123  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'124  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5125  // CHECK-NEXT: UnaryOperator{{.*}}++126  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'127  // CHECK-NEXT: NullStmt128#pragma acc kernels129#pragma acc loop vector(length:IsI)130  for(int i = 0; i < 5; ++i);131 132 133  // Instantiations:134  // CHECK-NEXT: FunctionDecl{{.*}} TemplUses 'void (Converts, int)' implicit_instantiation135  // CHECK-NEXT: TemplateArgument integral '3U'136  // CHECK-NEXT: TemplateArgument type 'Converts'137  // CHECK-NEXT: RecordType{{.*}}'Converts'138  // CHECK-NEXT: CXXRecord{{.*}}'Converts139  // CHECK-NEXT: TemplateArgument type 'int'140  // CHECK-NEXT: BuiltinType{{.*}}'int'141  // CHECK-NEXT: ParmVarDecl{{.*}} CTI 'Converts'142  // CHECK-NEXT: ParmVarDecl{{.*}} IsI 'int'143  // CHECK-NEXT: CompoundStmt144 145  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>146  // CHECK-NEXT: vector clause147  // CHECK-NEXT: ForStmt148  // CHECK-NEXT: DeclStmt149  // CHECK-NEXT: VarDecl{{.*}} i 'int'150  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0151  // CHECK-NEXT: <<<NULL>>>152  // CHECK-NEXT: BinaryOperator{{.*}}'<'153  // CHECK-NEXT: ImplicitCastExpr154  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'155  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5156  // CHECK-NEXT: UnaryOperator{{.*}}++157  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'158  // CHECK-NEXT: NullStmt159  //160  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>161  // CHECK-NEXT: vector clause162  // CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}}'unsigned int'163  // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}}'unsigned int' depth 0 index 0 I164  // CHECK-NEXT: IntegerLiteral{{.*}} 'unsigned int' 3165  // CHECK-NEXT: ForStmt166  // CHECK-NEXT: DeclStmt167  // CHECK-NEXT: VarDecl{{.*}} i 'int'168  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0169  // CHECK-NEXT: <<<NULL>>>170  // CHECK-NEXT: BinaryOperator{{.*}}'<'171  // CHECK-NEXT: ImplicitCastExpr172  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'173  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5174  // CHECK-NEXT: UnaryOperator{{.*}}++175  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'176  // CHECK-NEXT: NullStmt177  //178  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>179  // CHECK-NEXT: vector clause180  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <UserDefinedConversion>181  // CHECK-NEXT: CXXMemberCallExpr{{.*}}'int'182  // CHECK-NEXT: MemberExpr{{.*}} .operator int183  // CHECK-NEXT: DeclRefExpr{{.*}}'Converts' lvalue ParmVar{{.*}}'CTI' 'Converts'184  // CHECK-NEXT: ForStmt185  // CHECK-NEXT: DeclStmt186  // CHECK-NEXT: VarDecl{{.*}} i 'int'187  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0188  // CHECK-NEXT: <<<NULL>>>189  // CHECK-NEXT: BinaryOperator{{.*}}'<'190  // CHECK-NEXT: ImplicitCastExpr191  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'192  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5193  // CHECK-NEXT: UnaryOperator{{.*}}++194  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'195  // CHECK-NEXT: NullStmt196  //197  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel198  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel199  // CHECK-NEXT: vector clause200  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>201  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}}'IsI' 'int'202  // CHECK-NEXT: ForStmt203  // CHECK-NEXT: DeclStmt204  // CHECK-NEXT: VarDecl{{.*}} i 'int'205  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0206  // CHECK-NEXT: <<<NULL>>>207  // CHECK-NEXT: BinaryOperator{{.*}}'<'208  // CHECK-NEXT: ImplicitCastExpr209  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'210  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5211  // CHECK-NEXT: UnaryOperator{{.*}}++212  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'213  // CHECK-NEXT: NullStmt214  //215  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial216  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial217  // CHECK-NEXT: vector clause218  // CHECK-NEXT: ForStmt219  // CHECK-NEXT: DeclStmt220  // CHECK-NEXT: VarDecl{{.*}} i 'int'221  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0222  // CHECK-NEXT: <<<NULL>>>223  // CHECK-NEXT: BinaryOperator{{.*}}'<'224  // CHECK-NEXT: ImplicitCastExpr225  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'226  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5227  // CHECK-NEXT: UnaryOperator{{.*}}++228  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'229  // CHECK-NEXT: NullStmt230  //231  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} kernels232  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: kernels233  // CHECK-NEXT: vector clause234  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>235  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}}'IsI' 'int'236  // CHECK-NEXT: ForStmt237  // CHECK-NEXT: DeclStmt238  // CHECK-NEXT: VarDecl{{.*}} i 'int'239  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0240  // CHECK-NEXT: <<<NULL>>>241  // CHECK-NEXT: BinaryOperator{{.*}}'<'242  // CHECK-NEXT: ImplicitCastExpr243  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'244  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5245  // CHECK-NEXT: UnaryOperator{{.*}}++246  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'247  // CHECK-NEXT: NullStmt248 249 250}251 252struct Converts{253  operator int();254};255 256void uses() {257  // CHECK: FunctionDecl{{.*}} uses258  // CHECK-NEXT: CompoundStmt259 260  // CHECK-NEXT: CallExpr261  // CHECK-NEXT: ImplicitCastExpr{{.*}}'void (*)(Converts, int)' <FunctionToPointerDecay>262  // CHECK-NEXT: DeclRefExpr{{.*}} 'void (Converts, int)' lvalue Function{{.*}} 'TemplUses' 'void (Converts, int)'263  // CHECK-NEXT: CXXFunctionalCastExpr{{.*}} 'Converts' functional cast to Converts <NoOp>264  // CHECK-NEXT: InitListExpr265  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5266  TemplUses<3>(Converts{}, 5);267 268  // CHECK-NEXT: DeclStmt269  // CHECK-NEXT: VarDecl{{.*}}270  int i;271  // CHECK-NEXT: DeclStmt272  // CHECK-NEXT: VarDecl{{.*}}273  // CHECK-NEXT: CXXConstructExpr274  Converts C;275 276  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>277  // CHECK-NEXT: vector clause278  // CHECK-NEXT: ForStmt279  // CHECK-NEXT: DeclStmt280  // CHECK-NEXT: VarDecl{{.*}} i 'int'281  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0282  // CHECK-NEXT: <<<NULL>>>283  // CHECK-NEXT: BinaryOperator{{.*}}'<'284  // CHECK-NEXT: ImplicitCastExpr285  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'286  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5287  // CHECK-NEXT: UnaryOperator{{.*}}++288  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'289  // CHECK-NEXT: NullStmt290#pragma acc loop vector291  for(int i = 0; i < 5; ++i);292 293  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>294  // CHECK-NEXT: vector clause295  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>296  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue Var297  // CHECK-NEXT: ForStmt298  // CHECK-NEXT: DeclStmt299  // CHECK-NEXT: VarDecl{{.*}} i 'int'300  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0301  // CHECK-NEXT: <<<NULL>>>302  // CHECK-NEXT: BinaryOperator{{.*}}'<'303  // CHECK-NEXT: ImplicitCastExpr304  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'305  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5306  // CHECK-NEXT: UnaryOperator{{.*}}++307  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'308  // CHECK-NEXT: NullStmt309#pragma acc loop vector(i)310  for(int i = 0; i < 5; ++i);311 312  // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>313  // CHECK-NEXT: vector clause314  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <UserDefinedConversion>315  // CHECK-NEXT: CXXMemberCallExpr{{.*}}'int'316  // CHECK-NEXT: MemberExpr{{.*}} .operator int317  // CHECK-NEXT: DeclRefExpr{{.*}}'Converts' lvalue Var{{.*}}'C' 'Converts'318  // CHECK-NEXT: ForStmt319  // CHECK-NEXT: DeclStmt320  // CHECK-NEXT: VarDecl{{.*}} i 'int'321  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0322  // CHECK-NEXT: <<<NULL>>>323  // CHECK-NEXT: BinaryOperator{{.*}}'<'324  // CHECK-NEXT: ImplicitCastExpr325  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'326  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5327  // CHECK-NEXT: UnaryOperator{{.*}}++328  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'329  // CHECK-NEXT: NullStmt330#pragma acc loop vector(length:C)331  for(int i = 0; i < 5; ++i);332 333  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel334  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel335  // CHECK-NEXT: vector clause336  // CHECK-NEXT: ForStmt337  // CHECK-NEXT: DeclStmt338  // CHECK-NEXT: VarDecl{{.*}} i 'int'339  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0340  // CHECK-NEXT: <<<NULL>>>341  // CHECK-NEXT: BinaryOperator{{.*}}'<'342  // CHECK-NEXT: ImplicitCastExpr343  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'344  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5345  // CHECK-NEXT: UnaryOperator{{.*}}++346  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'347  // CHECK-NEXT: NullStmt348#pragma acc parallel349#pragma acc loop vector350  for(int i = 0; i < 5; ++i);351 352  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel353  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel354  // CHECK-NEXT: vector clause355  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <UserDefinedConversion>356  // CHECK-NEXT: CXXMemberCallExpr{{.*}}'int'357  // CHECK-NEXT: MemberExpr{{.*}} .operator int358  // CHECK-NEXT: DeclRefExpr{{.*}}'Converts' lvalue Var{{.*}}'C' 'Converts'359  // CHECK-NEXT: ForStmt360  // CHECK-NEXT: DeclStmt361  // CHECK-NEXT: VarDecl{{.*}} i 'int'362  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0363  // CHECK-NEXT: <<<NULL>>>364  // CHECK-NEXT: BinaryOperator{{.*}}'<'365  // CHECK-NEXT: ImplicitCastExpr366  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'367  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5368  // CHECK-NEXT: UnaryOperator{{.*}}++369  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'370  // CHECK-NEXT: NullStmt371#pragma acc parallel372#pragma acc loop vector(C)373  for(int i = 0; i < 5; ++i);374 375  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel376  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel377  // CHECK-NEXT: vector clause378  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>379  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue Var380  // CHECK-NEXT: ForStmt381  // CHECK-NEXT: DeclStmt382  // CHECK-NEXT: VarDecl{{.*}} i 'int'383  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0384  // CHECK-NEXT: <<<NULL>>>385  // CHECK-NEXT: BinaryOperator{{.*}}'<'386  // CHECK-NEXT: ImplicitCastExpr387  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'388  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5389  // CHECK-NEXT: UnaryOperator{{.*}}++390  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'391  // CHECK-NEXT: NullStmt392#pragma acc parallel393#pragma acc loop vector(length:i)394  for(int i = 0; i < 5; ++i);395 396  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} kernels397  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: kernels398  // CHECK-NEXT: vector clause399  // CHECK-NEXT: ForStmt400  // CHECK-NEXT: DeclStmt401  // CHECK-NEXT: VarDecl{{.*}} i 'int'402  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0403  // CHECK-NEXT: <<<NULL>>>404  // CHECK-NEXT: BinaryOperator{{.*}}'<'405  // CHECK-NEXT: ImplicitCastExpr406  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'407  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5408  // CHECK-NEXT: UnaryOperator{{.*}}++409  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'410  // CHECK-NEXT: NullStmt411#pragma acc kernels412#pragma acc loop vector413  for(int i = 0; i < 5; ++i);414 415  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} kernels416  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: kernels417  // CHECK-NEXT: vector clause418  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <UserDefinedConversion>419  // CHECK-NEXT: CXXMemberCallExpr{{.*}}'int'420  // CHECK-NEXT: MemberExpr{{.*}} .operator int421  // CHECK-NEXT: DeclRefExpr{{.*}}'Converts' lvalue Var{{.*}}'C' 'Converts'422  // CHECK-NEXT: ForStmt423  // CHECK-NEXT: DeclStmt424  // CHECK-NEXT: VarDecl{{.*}} i 'int'425  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0426  // CHECK-NEXT: <<<NULL>>>427  // CHECK-NEXT: BinaryOperator{{.*}}'<'428  // CHECK-NEXT: ImplicitCastExpr429  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'430  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5431  // CHECK-NEXT: UnaryOperator{{.*}}++432  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'433  // CHECK-NEXT: NullStmt434#pragma acc kernels435#pragma acc loop vector(C)436  for(int i = 0; i < 5; ++i);437 438  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} kernels439  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: kernels440  // CHECK-NEXT: vector clause441  // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>442  // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue Var443  // CHECK-NEXT: ForStmt444  // CHECK-NEXT: DeclStmt445  // CHECK-NEXT: VarDecl{{.*}} i 'int'446  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0447  // CHECK-NEXT: <<<NULL>>>448  // CHECK-NEXT: BinaryOperator{{.*}}'<'449  // CHECK-NEXT: ImplicitCastExpr450  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'451  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5452  // CHECK-NEXT: UnaryOperator{{.*}}++453  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'454  // CHECK-NEXT: NullStmt455#pragma acc kernels456#pragma acc loop vector(length:i)457  for(int i = 0; i < 5; ++i);458 459  // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial460  // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial461  // CHECK-NEXT: vector clause462  // CHECK-NEXT: ForStmt463  // CHECK-NEXT: DeclStmt464  // CHECK-NEXT: VarDecl{{.*}} i 'int'465  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0466  // CHECK-NEXT: <<<NULL>>>467  // CHECK-NEXT: BinaryOperator{{.*}}'<'468  // CHECK-NEXT: ImplicitCastExpr469  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'470  // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5471  // CHECK-NEXT: UnaryOperator{{.*}}++472  // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'473  // CHECK-NEXT: NullStmt474#pragma acc serial475#pragma acc loop vector476  for(int i = 0; i < 5; ++i);477}478#endif // PCH_HELPER479