@@ -75,21 +75,21 @@ TYPE_PARSER(
7575// tile size is one of:
7676// * (represented as an empty std::optional<ScalarIntExpr>)
7777// constant-int-expr
78- TYPE_PARSER(construct<AccTileExpr>(scalarIntConstantExpr) ||
78+ TYPE_PARSER(sourced( construct<AccTileExpr>(scalarIntConstantExpr) ||
7979 construct<AccTileExpr>(
80- " *" >> construct<std::optional<ScalarIntConstantExpr>>()))
80+ " *" >> construct<std::optional<ScalarIntConstantExpr>>())))
8181TYPE_PARSER(construct<AccTileExprList>(nonemptyList(Parser<AccTileExpr>{})))
8282
8383// 2.9 (1979-1982) gang-arg is one of :
8484// [num:]int-expr
8585// dim:int-expr
8686// static:size-expr
87- TYPE_PARSER(construct<AccGangArg>(construct<AccGangArg::Static>(
88- " STATIC: " >> Parser<AccSizeExpr>{})) ||
87+ TYPE_PARSER(sourced( construct<AccGangArg>(construct<AccGangArg::Static>(
88+ " STATIC: " >> Parser<AccSizeExpr>{})) ||
8989 construct<AccGangArg>(
9090 construct<AccGangArg::Dim>(" DIM: " >> scalarIntExpr)) ||
9191 construct<AccGangArg>(
92- construct<AccGangArg::Num>(maybe(" NUM: " _tok) >> scalarIntExpr)))
92+ construct<AccGangArg::Num>(maybe(" NUM: " _tok) >> scalarIntExpr))))
9393
9494// 2.9 gang-arg-list
9595TYPE_PARSER(
@@ -101,7 +101,7 @@ TYPE_PARSER(construct<AccCollapseArg>(
101101
102102// 2.5.15 Reduction, F'2023 R1131, and CUF reduction-op
103103// Operator for reduction
104- TYPE_PARSER(sourced( construct<ReductionOperator>(
104+ TYPE_PARSER(construct<ReductionOperator>(
105105 first (" +" >> pure (ReductionOperator::Operator::Plus),
106106 "*" >> pure(ReductionOperator::Operator::Multiply),
107107 "MAX" >> pure(ReductionOperator::Operator::Max),
@@ -112,32 +112,32 @@ TYPE_PARSER(sourced(construct<ReductionOperator>(
112112 ".AND." >> pure(ReductionOperator::Operator::And),
113113 ".OR." >> pure(ReductionOperator::Operator::Or),
114114 ".EQV." >> pure(ReductionOperator::Operator::Eqv),
115- ".NEQV." >> pure(ReductionOperator::Operator::Neqv)))))
115+ ".NEQV." >> pure(ReductionOperator::Operator::Neqv))))
116116
117117// 2.15.1 Bind clause
118- TYPE_PARSER(sourced(construct<AccBindClause>(name)) ||
119- sourced( construct<AccBindClause>(scalarDefaultCharExpr)))
118+ TYPE_PARSER(sourced(construct<AccBindClause>(name) ||
119+ construct<AccBindClause>(scalarDefaultCharExpr)))
120120
121121// 2.5.16 Default clause
122- TYPE_PARSER(construct<AccDefaultClause>(
122+ TYPE_PARSER(sourced( construct<AccDefaultClause>(
123123 first (" NONE" >> pure (llvm::acc::DefaultValue::ACC_Default_none),
124- "PRESENT" >> pure(llvm::acc::DefaultValue::ACC_Default_present))))
124+ "PRESENT" >> pure(llvm::acc::DefaultValue::ACC_Default_present)))))
125125
126126// SELF clause is either a simple optional condition for compute construct
127127// or a synonym of the HOST clause for the update directive 2.14.4 holding
128128// an object list.
129- TYPE_PARSER(
129+ TYPE_PARSER(sourced(
130130 construct<AccSelfClause>(Parser<AccObjectList>{}) / lookAhead(" )" _tok) ||
131- construct<AccSelfClause>(scalarLogicalExpr / lookAhead(" )" _tok) ) ||
131+ construct<AccSelfClause>(scalarLogicalExpr) / lookAhead(" )" _tok) ||
132132 construct<AccSelfClause>(
133133 recovery (fail<std::optional<ScalarLogicalExpr>>(
134134 " logical expression or object list expected" _err_en_US),
135- SkipTo<')'>{} >> pure<std::optional<ScalarLogicalExpr>>())))
135+ SkipTo<')'>{} >> pure<std::optional<ScalarLogicalExpr>>()))))
136136
137137// Modifier for copyin, copyout, cache and create
138- TYPE_PARSER(construct<AccDataModifier>(
138+ TYPE_PARSER(sourced( construct<AccDataModifier>(
139139 first (" ZERO:" >> pure (AccDataModifier::Modifier::Zero),
140- "READONLY:" >> pure(AccDataModifier::Modifier::ReadOnly))))
140+ "READONLY:" >> pure(AccDataModifier::Modifier::ReadOnly)))))
141141
142142// Combined directives
143143TYPE_PARSER(sourced(construct<AccCombinedDirective>(
@@ -166,14 +166,13 @@ TYPE_PARSER(sourced(construct<AccStandaloneDirective>(
166166TYPE_PARSER(sourced(construct<AccLoopDirective>(
167167 first (" LOOP" >> pure (llvm::acc::Directive::ACCD_loop)))))
168168
169- TYPE_PARSER(construct<AccBeginLoopDirective>(
170- sourced ( Parser<AccLoopDirective>{}) , Parser<AccClauseList>{}))
169+ TYPE_PARSER(sourced( construct<AccBeginLoopDirective>(
170+ Parser<AccLoopDirective>{}, Parser<AccClauseList>{}) ))
171171
172172TYPE_PARSER(construct<AccEndLoop>(" END LOOP" _tok))
173173
174174TYPE_PARSER(construct<OpenACCLoopConstruct>(
175- sourced (Parser<AccBeginLoopDirective>{} / endAccLine),
176- maybe(Parser<DoConstruct>{}),
175+ Parser<AccBeginLoopDirective>{} / endAccLine, maybe(Parser<DoConstruct>{}),
177176 maybe(startAccLine >> Parser<AccEndLoop>{} / endAccLine)))
178177
179178// 2.15.1 Routine directive
@@ -186,8 +185,8 @@ TYPE_PARSER(sourced(
186185 parenthesized(Parser<AccObjectListWithModifier>{}))))
187186
188187// 2.11 Combined constructs
189- TYPE_PARSER(construct<AccBeginCombinedDirective>(
190- sourced ( Parser<AccCombinedDirective>{}) , Parser<AccClauseList>{}))
188+ TYPE_PARSER(sourced( construct<AccBeginCombinedDirective>(
189+ Parser<AccCombinedDirective>{}, Parser<AccClauseList>{}) ))
191190
192191// 2.12 Atomic constructs
193192TYPE_PARSER(construct<AccEndAtomic>(startAccLine >> " END ATOMIC" _tok))
@@ -213,10 +212,10 @@ TYPE_PARSER("ATOMIC" >>
213212 statement(assignmentStmt), Parser<AccEndAtomic>{} / endAccLine))
214213
215214TYPE_PARSER(
216- sourced (construct<OpenACCAtomicConstruct>(Parser<AccAtomicRead>{})) ||
217- sourced( construct<OpenACCAtomicConstruct>(Parser<AccAtomicCapture>{}) ) ||
218- sourced( construct<OpenACCAtomicConstruct>(Parser<AccAtomicWrite>{}) ) ||
219- sourced( construct<OpenACCAtomicConstruct>(Parser<AccAtomicUpdate>{})))
215+ sourced (construct<OpenACCAtomicConstruct>(Parser<AccAtomicRead>{}) ||
216+ construct<OpenACCAtomicConstruct>(Parser<AccAtomicCapture>{}) ||
217+ construct<OpenACCAtomicConstruct>(Parser<AccAtomicWrite>{}) ||
218+ construct<OpenACCAtomicConstruct>(Parser<AccAtomicUpdate>{})))
220219
221220// 2.13 Declare constructs
222221TYPE_PARSER(sourced(construct<AccDeclarativeDirective>(
@@ -250,18 +249,18 @@ TYPE_PARSER(construct<OpenACCBlockConstruct>(
250249 pure (llvm::acc::Directive::ACCD_data))))))
251250
252251// Standalone constructs
253- TYPE_PARSER(construct<OpenACCStandaloneConstruct>(
254- sourced ( Parser<AccStandaloneDirective>{}) , Parser<AccClauseList>{}))
252+ TYPE_PARSER(sourced( construct<OpenACCStandaloneConstruct>(
253+ Parser<AccStandaloneDirective>{}, Parser<AccClauseList>{}) ))
255254
256255// Standalone declarative constructs
257- TYPE_PARSER(construct<OpenACCStandaloneDeclarativeConstruct>(
258- sourced ( Parser<AccDeclarativeDirective>{}) , Parser<AccClauseList>{}))
256+ TYPE_PARSER(sourced( construct<OpenACCStandaloneDeclarativeConstruct>(
257+ Parser<AccDeclarativeDirective>{}, Parser<AccClauseList>{}) ))
259258
260259TYPE_PARSER(startAccLine >>
261260 withMessage (" expected OpenACC directive" _err_en_US,
262- first ( sourced(construct<OpenACCDeclarativeConstruct>(
263- Parser<OpenACCStandaloneDeclarativeConstruct>{}) ),
264- sourced( construct<OpenACCDeclarativeConstruct>(
261+ sourced (first (construct<OpenACCDeclarativeConstruct>(
262+ Parser<OpenACCStandaloneDeclarativeConstruct>{}),
263+ construct<OpenACCDeclarativeConstruct>(
265264 Parser<OpenACCRoutineConstruct>{})))))
266265
267266TYPE_PARSER(sourced(construct<OpenACCEndConstruct>(
@@ -293,9 +292,9 @@ TYPE_PARSER(startAccLine >>
293292 "SERIAL"_tok >> maybe(" LOOP" _tok) >>
294293 pure(llvm::acc::Directive::ACCD_serial_loop))))))
295294
296- TYPE_PARSER(construct<OpenACCCombinedConstruct>(
297- sourced ( Parser<AccBeginCombinedDirective>{} / endAccLine) ,
295+ TYPE_PARSER(sourced( construct<OpenACCCombinedConstruct>(
296+ Parser<AccBeginCombinedDirective>{} / endAccLine,
298297 maybe (Parser<DoConstruct>{}),
299- maybe(Parser<AccEndCombinedDirective>{} / endAccLine)))
298+ maybe(Parser<AccEndCombinedDirective>{} / endAccLine))))
300299
301300} // namespace Fortran::parser
0 commit comments