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