408 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 10void foo(int v, int x) {11 // CHECK: FunctionDecl{{.*}} foo 'void (int, int)'12 // CHECK-NEXT: ParmVarDecl13 // CHECK-NEXT: ParmVarDecl14 // CHECK-NEXT: CompoundStmt15 16// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read17// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='18// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'19// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>20// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'21#pragma acc atomic read22 v = x;23 24// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read25// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='26// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'27// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>28// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'29_Pragma("acc atomic read")30 v = x;31 32// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write33// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='34// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'35// CHECK-NEXT: BinaryOperator{{.*}}'int' '+'36// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>37// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'38// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 139#pragma acc atomic write40 v = x + 1;41 42// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic update 43// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'44// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'45#pragma acc atomic update46 x++;47// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic <none>48// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'49// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'50#pragma acc atomic51 x--;52// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture53// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='54// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'55// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'56// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'57#pragma acc atomic capture58 v = x++;59 60// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture61// CHECK-NEXT: CompoundStmt62// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'63// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'64// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='65// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'66// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>67// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'68#pragma acc atomic capture69 { x--; v = x; }70 71// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read72// CHECK-NEXT: if clause73// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'74// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>75// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'76// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>77// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'78// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='79// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'80// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>81// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'82#pragma acc atomic read if (v < x)83 v = x;84 85// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write86// CHECK-NEXT: if clause87// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'88// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>89// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'90// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>91// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'92// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='93// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'94// CHECK-NEXT: BinaryOperator{{.*}}'int' '+'95// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>96// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'97// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 198_Pragma("acc atomic write if (v < x)")99 v = x + 1;100 101// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic update 102// CHECK-NEXT: if clause103// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'104// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>105// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'106// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>107// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'108// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'109// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'110#pragma acc atomic update if (v < x)111 x++;112 113// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic <none>114// CHECK-NEXT: if clause115// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'116// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>117// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'118// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>119// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'120// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'121// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'122#pragma acc atomic if (v < x)123 x--;124 125// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture126// CHECK-NEXT: if clause127// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'128// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>129// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'130// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>131// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'132// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='133// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'134// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'135// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'136#pragma acc atomic capture if (v < x)137 v = x++;138 139// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture140// CHECK-NEXT: if clause141// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'142// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>143// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'144// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>145// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'146// CHECK-NEXT: CompoundStmt147// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'148// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'149// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='150// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'151// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>152// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'153#pragma acc atomic capture if (v < x)154 { x--; v = x; }155}156 157template<typename T, int I>158void templ_foo(T v, T x) {159 // CHECK-NEXT: FunctionTemplateDecl{{.*}}templ_foo160 // CHECK-NEXT: TemplateTypeParmDecl{{.*}} T161 // CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} I162 // CHECK-NEXT: FunctionDecl{{.*}} templ_foo 'void (T, T)'163 // CHECK-NEXT: ParmVarDecl{{.*}} v 'T'164 // CHECK-NEXT: ParmVarDecl{{.*}} x 'T'165 // CHECK-NEXT: CompoundStmt166 167// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read168// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='169// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'170// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'171#pragma acc atomic read172 v = x;173 174// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write175// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='176// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'177// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '+'178// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'179// CHECK-NEXT: DeclRefExpr{{.*}} 'I' 'int'180#pragma acc atomic write181 v = x + I;182 183// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic update 184// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '++'185// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'186#pragma acc atomic update187 x++;188// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic <none>189// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '--'190// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'191#pragma acc atomic192 x--;193// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture194// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='195// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'196// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '++'197// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'198#pragma acc atomic capture199 v = x++;200 201// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture202// CHECK-NEXT: CompoundStmt203// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '--'204// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'205// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='206// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'207// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'208#pragma acc atomic capture209 { x--; v = x; }210 211// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read212// CHECK-NEXT: if clause213// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '<'214// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'215// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'216// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='217// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'218// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'219#pragma acc atomic read if (v < x)220 v = x;221 222// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write223// CHECK-NEXT: if clause224// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '<'225// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'226// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'227// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='228// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'229// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '+'230// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'231// CHECK-NEXT: DeclRefExpr{{.*}} 'I' 'int'232_Pragma("acc atomic write if (v < x)")233 v = x + I;234 235// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic update 236// CHECK-NEXT: if clause237// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '<'238// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'239// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'240// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '++'241// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'242#pragma acc atomic update if (v < x)243 x++;244 245// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic <none>246// CHECK-NEXT: if clause247// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '<'248// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'249// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'250// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '--'251// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'252#pragma acc atomic if (v < x)253 x--;254 255// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture256// CHECK-NEXT: if clause257// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '<'258// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'259// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'260// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='261// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'262// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '++'263// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'264#pragma acc atomic capture if (v < x)265 v = x++;266 267// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture268// CHECK-NEXT: if clause269// CHECK-NEXT: BinaryOperator{{.*}}'<dependent type>' '<'270// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'271// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'272// CHECK-NEXT: CompoundStmt273// CHECK-NEXT: UnaryOperator{{.*}} '<dependent type>' postfix '--'274// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'275// CHECK-NEXT: BinaryOperator{{.*}} '<dependent type>' '='276// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'T'277// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'T'278#pragma acc atomic capture if (v < x)279 { x--; v = x; }280 281 // CHECK-NEXT: FunctionDecl{{.*}} templ_foo 'void (int, int)' implicit_instantiation282 // CHECK-NEXT: TemplateArgument type 'int'283 // CHECK-NEXT: BuiltinType{{.*}} 'int'284 // CHECK-NEXT: TemplateArgument integral '5'285 // CHECK-NEXT: ParmVarDecl{{.*}} v 'int'286 // CHECK-NEXT: ParmVarDecl{{.*}} x 'int'287 // CHECK-NEXT: CompoundStmt288 289// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read290// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='291// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'292// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>293// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'294 295// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write296// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='297// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'298// CHECK-NEXT: BinaryOperator{{.*}}'int' '+'299// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>300// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'301// CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}} 'int'302// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int'{{.*}}I303// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5304 305// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic update 306// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'307// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'308 309// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic <none>310// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'311// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'312 313// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture314// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='315// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'316// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'317// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'318 319// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture320// CHECK-NEXT: CompoundStmt321// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'322// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'323// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='324// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'325// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>326// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'327 328// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic read329// CHECK-NEXT: if clause330// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'331// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>332// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'333// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>334// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'335// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='336// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'337// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>338// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'339 340// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic write341// CHECK-NEXT: if clause342// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'343// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>344// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'345// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>346// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'347// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='348// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'349// CHECK-NEXT: BinaryOperator{{.*}}'int' '+'350// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>351// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'352// CHECK-NEXT: SubstNonTypeTemplateParmExpr{{.*}} 'int'353// CHECK-NEXT: NonTypeTemplateParmDecl{{.*}} 'int'{{.*}}I354// CHECK-NEXT: IntegerLiteral{{.*}} 'int' 5355 356// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic update 357// CHECK-NEXT: if clause358// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'359// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>360// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'361// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>362// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'363// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'364// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'365 366// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic <none>367// CHECK-NEXT: if clause368// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'369// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>370// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'371// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>372// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'373// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'374// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'375 376// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture377// CHECK-NEXT: if clause378// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'379// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>380// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'381// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>382// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'383// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='384// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'385// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '++'386// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'387 388// CHECK-NEXT: OpenACCAtomicConstruct{{.*}} atomic capture389// CHECK-NEXT: if clause390// CHECK-NEXT: BinaryOperator{{.*}}'bool' '<'391// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>392// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'393// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>394// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'395// CHECK-NEXT: CompoundStmt396// CHECK-NEXT: UnaryOperator{{.*}} 'int' postfix '--'397// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'398// CHECK-NEXT: BinaryOperator{{.*}} 'int' lvalue '='399// CHECK-NEXT: DeclRefExpr{{.*}}'v' 'int'400// CHECK-NEXT: ImplicitCastExpr{{.*}}'int' <LValueToRValue>401// CHECK-NEXT: DeclRefExpr{{.*}}'x' 'int'402}403 404void use() {405 templ_foo<int, 5>(1, 2);406}407#endif408