Lines Matching refs:parser

24 using namespace parser::literals;
30 CanonicalizationOfAcc(parser::Messages &messages) : messages_{messages} {}
32 void Post(parser::Block &block) {
34 if (auto *accLoop{parser::Unwrap<parser::OpenACCLoopConstruct>(*it)}) {
37 parser::Unwrap<parser::OpenACCCombinedConstruct>(*it)}) {
40 parser::Unwrap<parser::AccEndCombinedDirective>(*it)}) {
45 parser::ToUpperCaseLetters(endDir->v.source.ToString()));
56 const C &x, const parser::DoConstruct &outer) {
59 std::get<parser::AccClauseList>(beginLoopDirective.t);
62 std::get_if<parser::AccClause::Tile>(&clause.u)) {
63 const parser::AccTileExprList &tileExprList = tileClause->v;
64 const std::list<parser::AccTileExpr> &listTileExpr = tileExprList.v;
70 for (const parser::DoConstruct *loop{&outer}; loop && tileArgNb > 0;
72 const auto &block{std::get<parser::Block>(loop->t)};
74 loop = it != block.end() ? parser::Unwrap<parser::DoConstruct>(*it)
93 const C &x, const parser::DoConstruct &doCons) {
99 std::get<parser::AccClauseList>(beginLoopDirective.t);
101 if (std::holds_alternative<parser::AccClause::Collapse>(clause.u) ||
102 std::holds_alternative<parser::AccClause::Tile>(clause.u)) {
110 // Utility to move all parser::CompilerDirective right after it to right
115 parser::Block &block, parser::Block::iterator it) {
116 parser::Block::iterator nextIt = std::next(it);
118 parser::Unwrap<parser::CompilerDirective>(*nextIt)) {
124 void RewriteOpenACCLoopConstruct(parser::OpenACCLoopConstruct &x,
125 parser::Block &block, parser::Block::iterator it) {
126 parser::Block::iterator nextIt;
127 auto &beginDir{std::get<parser::AccBeginLoopDirective>(x.t)};
128 auto &dir{std::get<parser::AccLoopDirective>(beginDir.t)};
129 auto &nestedDo{std::get<std::optional<parser::DoConstruct>>(x.t)};
135 if (auto *doCons{parser::Unwrap<parser::DoConstruct>(*nextIt)}) {
146 parser::ToUpperCaseLetters(dir.source.ToString()));
149 CheckDoConcurrentClauseRestriction<parser::OpenACCLoopConstruct,
150 parser::AccBeginLoopDirective>(x, *nestedDo);
151 CheckTileClauseRestriction<parser::OpenACCLoopConstruct,
152 parser::AccBeginLoopDirective>(x, *nestedDo);
157 parser::ToUpperCaseLetters(dir.source.ToString()));
160 void RewriteOpenACCCombinedConstruct(parser::OpenACCCombinedConstruct &x,
161 parser::Block &block, parser::Block::iterator it) {
163 parser::Block::iterator nextIt;
164 auto &beginDir{std::get<parser::AccBeginCombinedDirective>(x.t)};
165 auto &dir{std::get<parser::AccCombinedDirective>(beginDir.t)};
166 auto &nestedDo{std::get<std::optional<parser::DoConstruct>>(x.t)};
172 if (auto *doCons{parser::Unwrap<parser::DoConstruct>(*nextIt)}) {
180 CheckDoConcurrentClauseRestriction<parser::OpenACCCombinedConstruct,
181 parser::AccBeginCombinedDirective>(x, *nestedDo);
182 CheckTileClauseRestriction<parser::OpenACCCombinedConstruct,
183 parser::AccBeginCombinedDirective>(x, *nestedDo);
187 parser::ToUpperCaseLetters(dir.source.ToString()));
194 parser::ToUpperCaseLetters(dir.source.ToString()));
197 parser::Messages &messages_;
200 bool CanonicalizeAcc(parser::Messages &messages, parser::Program &program) {