457 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 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>14 // CHECK-NEXT: gang clause dim15 // CHECK-NEXT: ConstantExpr{{.*}} 'int'16 // CHECK-NEXT: value: Int 117 // CHECK-NEXT: IntegerLiteral{{.*}}'int' 118 // CHECK-NEXT: ForStmt19 // CHECK-NEXT: DeclStmt20 // CHECK-NEXT: VarDecl{{.*}} i 'int'21 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 022 // CHECK-NEXT: <<<NULL>>>23 // CHECK-NEXT: BinaryOperator{{.*}}'<'24 // CHECK-NEXT: ImplicitCastExpr25 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'26 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 527 // CHECK-NEXT: UnaryOperator{{.*}}++28 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'29 // CHECK-NEXT: NullStmt30#pragma acc loop gang(dim:1)31 for(int i = 0; i < 5; ++i);32 33 int Val;34 // CHECK-NEXT: DeclStmt35 // CHECK-NEXT: VarDecl{{.*}} used Val 'int'36 37 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>38 // CHECK-NEXT: gang clause static39 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>40 // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'41 // CHECK-NEXT: ForStmt42 // CHECK-NEXT: DeclStmt43 // CHECK-NEXT: VarDecl{{.*}} i 'int'44 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 045 // CHECK-NEXT: <<<NULL>>>46 // CHECK-NEXT: BinaryOperator{{.*}}'<'47 // CHECK-NEXT: ImplicitCastExpr48 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'49 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 550 // CHECK-NEXT: UnaryOperator{{.*}}++51 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'52 // CHECK-NEXT: NullStmt53#pragma acc loop gang(static:Val)54 for(int i = 0; i < 5; ++i);55 56 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} kernels57 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: kernels58 // CHECK-NEXT: gang clause num59 // CHECK-NEXT: IntegerLiteral{{.*}}'int' 160 // CHECK-NEXT: gang clause static61 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>62 // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'63 // CHECK-NEXT: ForStmt64 // CHECK-NEXT: DeclStmt65 // CHECK-NEXT: VarDecl{{.*}} i 'int'66 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 067 // CHECK-NEXT: <<<NULL>>>68 // CHECK-NEXT: BinaryOperator{{.*}}'<'69 // CHECK-NEXT: ImplicitCastExpr70 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'71 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 572 // CHECK-NEXT: UnaryOperator{{.*}}++73 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'74 // CHECK-NEXT: NullStmt75#pragma acc kernels76#pragma acc loop gang(num:1) gang(static:Val)77 for(int i = 0; i < 5; ++i);78 79 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel80 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel81 // CHECK-NEXT: gang clause dim static82 // CHECK-NEXT: ConstantExpr{{.*}} 'int'83 // CHECK-NEXT: value: Int 184 // CHECK-NEXT: IntegerLiteral{{.*}}'int' 185 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>86 // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'87 // CHECK-NEXT: ForStmt88 // CHECK-NEXT: DeclStmt89 // CHECK-NEXT: VarDecl{{.*}} i 'int'90 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 091 // CHECK-NEXT: <<<NULL>>>92 // CHECK-NEXT: BinaryOperator{{.*}}'<'93 // CHECK-NEXT: ImplicitCastExpr94 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'95 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 596 // CHECK-NEXT: UnaryOperator{{.*}}++97 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'98 // CHECK-NEXT: NullStmt99#pragma acc parallel100#pragma acc loop gang(dim:1, static:Val)101 for(int i = 0; i < 5; ++i);102 103 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial104 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial105 // CHECK-NEXT: gang clause static106 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>107 // CHECK-NEXT: DeclRefExpr{{.*}} 'Val' 'int'108 // CHECK-NEXT: ForStmt109 // CHECK-NEXT: DeclStmt110 // CHECK-NEXT: VarDecl{{.*}} i 'int'111 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0112 // CHECK-NEXT: <<<NULL>>>113 // CHECK-NEXT: BinaryOperator{{.*}}'<'114 // CHECK-NEXT: ImplicitCastExpr115 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'116 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5117 // CHECK-NEXT: UnaryOperator{{.*}}++118 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'119 // CHECK-NEXT: NullStmt120#pragma acc serial121#pragma acc loop gang(static:Val)122 for(int i = 0; i < 5; ++i);123 124 // CHECK-NEXT: OpenACCComputeConstruct {{.*}}serial125 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial126 // CHECK-NEXT: gang clause static127 // CHECK-NEXT: OpenACCAsteriskSizeExpr128 // CHECK-NEXT: ForStmt129 // CHECK-NEXT: DeclStmt130 // CHECK-NEXT: VarDecl{{.*}} i 'int'131 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0132 // CHECK-NEXT: <<<NULL>>>133 // CHECK-NEXT: BinaryOperator{{.*}}'<'134 // CHECK-NEXT: ImplicitCastExpr135 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'136 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5137 // CHECK-NEXT: UnaryOperator{{.*}}++138 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'139 // CHECK-NEXT: NullStmt140#pragma acc serial141#pragma acc loop gang(static:*)142 for(int i = 0; i < 5; ++i);143 144 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial145 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial146 // CHECK-NEXT: gang 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#pragma acc serial160#pragma acc loop gang161 for(int i = 0; i < 5; ++i);162}163 164template<typename T, unsigned One>165void TemplateUses(T Val) {166 // CHECK: FunctionTemplateDecl{{.*}}TemplateUses167 // CHECK-NEXT: TemplateTypeParmDecl {{.*}} referenced typename depth 0 index 0 T168 // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} referenced 'unsigned int' depth 0 index 1 One169 // CHECK-NEXT: FunctionDecl{{.*}} TemplateUses 'void (T)'170 // CHECK-NEXT: ParmVarDecl{{.*}} referenced Val 'T'171 // CHECK-NEXT: CompoundStmt172 173 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>174 // CHECK-NEXT: gang clause dim175 // CHECK-NEXT: DeclRefExpr{{.*}}'unsigned int' NonTypeTemplateParm{{.*}} 'One' 'unsigned int'176 // CHECK-NEXT: ForStmt177 // CHECK-NEXT: DeclStmt178 // CHECK-NEXT: VarDecl{{.*}} i 'int'179 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0180 // CHECK-NEXT: <<<NULL>>>181 // CHECK-NEXT: BinaryOperator{{.*}}'<'182 // CHECK-NEXT: ImplicitCastExpr183 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'184 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5185 // CHECK-NEXT: UnaryOperator{{.*}}++186 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'187 // CHECK-NEXT: NullStmt188#pragma acc loop gang(dim:One)189 for(int i = 0; i < 5; ++i);190 191 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>192 // CHECK-NEXT: gang clause static193 // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 'Val' 'T'194 // CHECK-NEXT: ForStmt195 // CHECK-NEXT: DeclStmt196 // CHECK-NEXT: VarDecl{{.*}} i 'int'197 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0198 // CHECK-NEXT: <<<NULL>>>199 // CHECK-NEXT: BinaryOperator{{.*}}'<'200 // CHECK-NEXT: ImplicitCastExpr201 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'202 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5203 // CHECK-NEXT: UnaryOperator{{.*}}++204 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'205 // CHECK-NEXT: NullStmt206#pragma acc loop gang(static:Val)207 for(int i = 0; i < 5; ++i);208 209 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>210 // CHECK-NEXT: gang clause static211 // CHECK-NEXT: OpenACCAsteriskSizeExpr212 // CHECK-NEXT: ForStmt213 // CHECK-NEXT: DeclStmt214 // CHECK-NEXT: VarDecl{{.*}} i 'int'215 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0216 // CHECK-NEXT: <<<NULL>>>217 // CHECK-NEXT: BinaryOperator{{.*}}'<'218 // CHECK-NEXT: ImplicitCastExpr219 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'220 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5221 // CHECK-NEXT: UnaryOperator{{.*}}++222 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'223 // CHECK-NEXT: NullStmt224#pragma acc loop gang(static:*)225 for(int i = 0; i < 5; ++i);226 227 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel228 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel229 // CHECK-NEXT: gang clause dim230 // CHECK-NEXT: DeclRefExpr{{.*}}'unsigned int' NonTypeTemplateParm{{.*}} 'One' 'unsigned int'231 // CHECK-NEXT: gang clause static232 // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 'Val' 'T'233 // CHECK-NEXT: ForStmt234 // CHECK-NEXT: DeclStmt235 // CHECK-NEXT: VarDecl{{.*}} i 'int'236 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0237 // CHECK-NEXT: <<<NULL>>>238 // CHECK-NEXT: BinaryOperator{{.*}}'<'239 // CHECK-NEXT: ImplicitCastExpr240 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'241 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5242 // CHECK-NEXT: UnaryOperator{{.*}}++243 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'244 // CHECK-NEXT: NullStmt245#pragma acc parallel246#pragma acc loop gang(dim:One) gang(static:Val)247 for(int i = 0; i < 5; ++i);248 249 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel250 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel251 // CHECK-NEXT: gang clause dim static252 // CHECK-NEXT: DeclRefExpr{{.*}}'unsigned int' NonTypeTemplateParm{{.*}} 'One' 'unsigned int'253 // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 'Val' 'T'254 // CHECK-NEXT: ForStmt255 // CHECK-NEXT: DeclStmt256 // CHECK-NEXT: VarDecl{{.*}} i 'int'257 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0258 // CHECK-NEXT: <<<NULL>>>259 // CHECK-NEXT: BinaryOperator{{.*}}'<'260 // CHECK-NEXT: ImplicitCastExpr261 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'262 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5263 // CHECK-NEXT: UnaryOperator{{.*}}++264 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'265 // CHECK-NEXT: NullStmt266#pragma acc parallel267#pragma acc loop gang(dim:One, static:Val)268 for(int i = 0; i < 5; ++i);269 270 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial271 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial272 // CHECK-NEXT: gang clause static273 // CHECK-NEXT: DeclRefExpr{{.*}}'T' lvalue ParmVar{{.*}} 'Val' 'T'274 // CHECK-NEXT: ForStmt275 // CHECK-NEXT: DeclStmt276 // CHECK-NEXT: VarDecl{{.*}} i 'int'277 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0278 // CHECK-NEXT: <<<NULL>>>279 // CHECK-NEXT: BinaryOperator{{.*}}'<'280 // CHECK-NEXT: ImplicitCastExpr281 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'282 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5283 // CHECK-NEXT: UnaryOperator{{.*}}++284 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'285 // CHECK-NEXT: NullStmt286#pragma acc serial287#pragma acc loop gang(static:Val)288 for(int i = 0; i < 5; ++i);289 290 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial291 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial292 // CHECK-NEXT: gang clause293 // CHECK-NEXT: ForStmt294 // CHECK-NEXT: DeclStmt295 // CHECK-NEXT: VarDecl{{.*}} i 'int'296 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0297 // CHECK-NEXT: <<<NULL>>>298 // CHECK-NEXT: BinaryOperator{{.*}}'<'299 // CHECK-NEXT: ImplicitCastExpr300 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'301 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5302 // CHECK-NEXT: UnaryOperator{{.*}}++303 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'304 // CHECK-NEXT: NullStmt305#pragma acc serial306#pragma acc loop gang307 for(int i = 0; i < 5; ++i);308 309 // Instantiation:310 // CHECK-NEXT: FunctionDecl{{.*}} used TemplateUses 'void (int)' implicit_instantiation311 // CHECK-NEXT: TemplateArgument type 'int'312 // CHECK-NEXT: BuiltinType{{.*}} 'int'313 // CHECK-NEXT: TemplateArgument integral '1U'314 // CHECK-NEXT: ParmVarDecl{{.*}} used Val 'int'315 // CHECK-NEXT: CompoundStmt316 //317 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>318 // CHECK-NEXT: gang clause dim319 // CHECK-NEXT: ConstantExpr{{.*}} 'unsigned int'320 // CHECK-NEXT: value: Int 1321 // CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}}'unsigned int'322 // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'unsigned int' depth 0 index 1 One323 // CHECK-NEXT: IntegerLiteral{{.*}}'unsigned int' 1324 // CHECK-NEXT: ForStmt325 // CHECK-NEXT: DeclStmt326 // CHECK-NEXT: VarDecl{{.*}} i 'int'327 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0328 // CHECK-NEXT: <<<NULL>>>329 // CHECK-NEXT: BinaryOperator{{.*}}'<'330 // CHECK-NEXT: ImplicitCastExpr331 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'332 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5333 // CHECK-NEXT: UnaryOperator{{.*}}++334 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'335 // CHECK-NEXT: NullStmt336 //337 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>338 // CHECK-NEXT: gang clause static339 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>340 // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 'Val' 'int'341 // CHECK-NEXT: ForStmt342 // CHECK-NEXT: DeclStmt343 // CHECK-NEXT: VarDecl{{.*}} i 'int'344 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0345 // CHECK-NEXT: <<<NULL>>>346 // CHECK-NEXT: BinaryOperator{{.*}}'<'347 // CHECK-NEXT: ImplicitCastExpr348 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'349 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5350 // CHECK-NEXT: UnaryOperator{{.*}}++351 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'352 // CHECK-NEXT: NullStmt353 //354 // CHECK-NEXT: OpenACCLoopConstruct{{.*}}<orphan>355 // CHECK-NEXT: gang clause static356 // CHECK-NEXT: OpenACCAsteriskSizeExpr357 // CHECK-NEXT: ForStmt358 // CHECK-NEXT: DeclStmt359 // CHECK-NEXT: VarDecl{{.*}} i 'int'360 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0361 // CHECK-NEXT: <<<NULL>>>362 // CHECK-NEXT: BinaryOperator{{.*}}'<'363 // CHECK-NEXT: ImplicitCastExpr364 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'365 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5366 // CHECK-NEXT: UnaryOperator{{.*}}++367 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'368 // CHECK-NEXT: NullStmt369 //370 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel371 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel372 // CHECK-NEXT: gang clause dim373 // CHECK-NEXT: ConstantExpr{{.*}} 'unsigned int'374 // CHECK-NEXT: value: Int 1375 // CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}}'unsigned int'376 // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'unsigned int' depth 0 index 1 One377 // CHECK-NEXT: IntegerLiteral{{.*}}'unsigned int' 1378 // CHECK-NEXT: gang clause static379 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>380 // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 'Val' 'int'381 // CHECK-NEXT: ForStmt382 // CHECK-NEXT: DeclStmt383 // CHECK-NEXT: VarDecl{{.*}} i 'int'384 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0385 // CHECK-NEXT: <<<NULL>>>386 // CHECK-NEXT: BinaryOperator{{.*}}'<'387 // CHECK-NEXT: ImplicitCastExpr388 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'389 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5390 // CHECK-NEXT: UnaryOperator{{.*}}++391 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'392 // CHECK-NEXT: NullStmt393 //394 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} parallel395 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: parallel396 // CHECK-NEXT: gang clause dim static397 // CHECK-NEXT: ConstantExpr{{.*}} 'unsigned int'398 // CHECK-NEXT: value: Int 1399 // CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}}'unsigned int'400 // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'unsigned int' depth 0 index 1 One401 // CHECK-NEXT: IntegerLiteral{{.*}}'unsigned int' 1402 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>403 // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 'Val' 'int'404 // CHECK-NEXT: ForStmt405 // CHECK-NEXT: DeclStmt406 // CHECK-NEXT: VarDecl{{.*}} i 'int'407 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0408 // CHECK-NEXT: <<<NULL>>>409 // CHECK-NEXT: BinaryOperator{{.*}}'<'410 // CHECK-NEXT: ImplicitCastExpr411 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'412 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5413 // CHECK-NEXT: UnaryOperator{{.*}}++414 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'415 // CHECK-NEXT: NullStmt416 //417 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial418 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial419 // CHECK-NEXT: gang clause static420 // CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>421 // CHECK-NEXT: DeclRefExpr{{.*}}'int' lvalue ParmVar{{.*}} 'Val' 'int'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 //435 // CHECK-NEXT: OpenACCComputeConstruct {{.*}} serial436 // CHECK-NEXT: OpenACCLoopConstruct{{.*}} parent: serial437 // CHECK-NEXT: gang clause438 // CHECK-NEXT: ForStmt439 // CHECK-NEXT: DeclStmt440 // CHECK-NEXT: VarDecl{{.*}} i 'int'441 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 0442 // CHECK-NEXT: <<<NULL>>>443 // CHECK-NEXT: BinaryOperator{{.*}}'<'444 // CHECK-NEXT: ImplicitCastExpr445 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'446 // CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5447 // CHECK-NEXT: UnaryOperator{{.*}}++448 // CHECK-NEXT: DeclRefExpr{{.*}}'i' 'int'449 // CHECK-NEXT: NullStmt450}451 452void inst() {453 TemplateUses<int, 1>(5);454}455 456#endif // PCH_HELPER457