Lines Matching refs:parser

14   void AccStructureChecker::Enter(const parser::AccClause::X &) { \
19 void AccStructureChecker::Enter(const parser::AccClause::X &c) { \
25 Fortran::common::EnumSet<Fortran::parser::ReductionOperator::Operator,
26 Fortran::parser::ReductionOperator::Operator_enumSize>;
29 Fortran::parser::ReductionOperator::Operator::Plus,
30 Fortran::parser::ReductionOperator::Operator::Multiply,
31 Fortran::parser::ReductionOperator::Operator::Max,
32 Fortran::parser::ReductionOperator::Operator::Min,
33 Fortran::parser::ReductionOperator::Operator::Iand,
34 Fortran::parser::ReductionOperator::Operator::Ior,
35 Fortran::parser::ReductionOperator::Operator::Ieor};
38 Fortran::parser::ReductionOperator::Operator::Plus,
39 Fortran::parser::ReductionOperator::Operator::Multiply,
40 Fortran::parser::ReductionOperator::Operator::Max,
41 Fortran::parser::ReductionOperator::Operator::Min};
44 Fortran::parser::ReductionOperator::Operator::Plus,
45 Fortran::parser::ReductionOperator::Operator::Multiply};
48 Fortran::parser::ReductionOperator::Operator::And,
49 Fortran::parser::ReductionOperator::Operator::Or,
50 Fortran::parser::ReductionOperator::Operator::Eqv,
51 Fortran::parser::ReductionOperator::Operator::Neqv};
85 parser::ToUpperCaseLetters(getClauseName(clause).str()),
124 void AccStructureChecker::Enter(const parser::AccClause &x) {
128 void AccStructureChecker::Leave(const parser::AccClauseList &) {}
130 void AccStructureChecker::Enter(const parser::OpenACCBlockConstruct &x) {
131 const auto &beginBlockDir{std::get<parser::AccBeginBlockDirective>(x.t)};
132 const auto &endBlockDir{std::get<parser::AccEndBlockDirective>(x.t)};
134 std::get<parser::AccBlockDirective>(beginBlockDir.t)};
140 void AccStructureChecker::Leave(const parser::OpenACCBlockConstruct &x) {
141 const auto &beginBlockDir{std::get<parser::AccBeginBlockDirective>(x.t)};
142 const auto &blockDir{std::get<parser::AccBlockDirective>(beginBlockDir.t)};
143 const parser::Block &block{std::get<parser::Block>(x.t)};
173 const parser::OpenACCStandaloneDeclarativeConstruct &x) {
174 const auto &declarativeDir{std::get<parser::AccDeclarativeDirective>(x.t)};
179 const parser::OpenACCStandaloneDeclarativeConstruct &x) {
185 const auto &declarativeDir{std::get<parser::AccDeclarativeDirective>(x.t)};
198 parser::ToUpperCaseLetters(
207 void AccStructureChecker::Enter(const parser::OpenACCCombinedConstruct &x) {
209 std::get<parser::AccBeginCombinedDirective>(x.t)};
211 std::get<parser::AccCombinedDirective>(beginCombinedDir.t)};
215 std::get<std::optional<parser::AccEndCombinedDirective>>(x.t)}) {
216 CheckMatching<parser::AccCombinedDirective>(combinedDir, endCombinedDir->v);
222 void AccStructureChecker::Leave(const parser::OpenACCCombinedConstruct &x) {
223 const auto &beginBlockDir{std::get<parser::AccBeginCombinedDirective>(x.t)};
225 std::get<parser::AccCombinedDirective>(beginBlockDir.t)};
226 auto &doCons{std::get<std::optional<parser::DoConstruct>>(x.t)};
236 const parser::Block &block{std::get<parser::Block>(doCons->t)};
246 void AccStructureChecker::Enter(const parser::OpenACCLoopConstruct &x) {
247 const auto &beginDir{std::get<parser::AccBeginLoopDirective>(x.t)};
248 const auto &loopDir{std::get<parser::AccLoopDirective>(beginDir.t)};
252 void AccStructureChecker::Leave(const parser::OpenACCLoopConstruct &x) {
253 const auto &beginDir{std::get<parser::AccBeginLoopDirective>(x.t)};
254 const auto &loopDir{std::get<parser::AccLoopDirective>(beginDir.t)};
267 void AccStructureChecker::Enter(const parser::OpenACCStandaloneConstruct &x) {
268 const auto &standaloneDir{std::get<parser::AccStandaloneDirective>(x.t)};
272 void AccStructureChecker::Leave(const parser::OpenACCStandaloneConstruct &x) {
273 const auto &standaloneDir{std::get<parser::AccStandaloneDirective>(x.t)};
306 void AccStructureChecker::Enter(const parser::OpenACCRoutineConstruct &x) {
308 const auto &optName{std::get<std::optional<parser::Name>>(x.t)};
310 const auto &verbatim{std::get<parser::Verbatim>(x.t)};
321 void AccStructureChecker::Leave(const parser::OpenACCRoutineConstruct &) {
330 void AccStructureChecker::Enter(const parser::OpenACCWaitConstruct &x) {
331 const auto &verbatim{std::get<parser::Verbatim>(x.t)};
334 void AccStructureChecker::Leave(const parser::OpenACCWaitConstruct &x) {
338 void AccStructureChecker::Enter(const parser::OpenACCAtomicConstruct &x) {
341 void AccStructureChecker::Leave(const parser::OpenACCAtomicConstruct &x) {
345 void AccStructureChecker::Enter(const parser::AccAtomicUpdate &x) {
346 const parser::AssignmentStmt &assignment{
347 std::get<parser::Statement<parser::AssignmentStmt>>(x.t).statement};
348 const auto &var{std::get<parser::Variable>(assignment.t)};
349 const auto &expr{std::get<parser::Expr>(assignment.t)};
362 void AccStructureChecker::Enter(const parser::OpenACCCacheConstruct &x) {
363 const auto &verbatim = std::get<parser::Verbatim>(x.t);
371 void AccStructureChecker::Leave(const parser::OpenACCCacheConstruct &x) {
402 const parser::AccObjectList &list, llvm::acc::Clause clause) {
408 [&](const parser::Designator &designator) {
416 parser::ToUpperCaseLetters(
423 parser::ToUpperCaseLetters(
425 parser::ToUpperCaseLetters(
434 [&](const parser::Name &name) {
442 const parser::AccObjectListWithModifier &list, llvm::acc::Clause clause) {
443 const auto &objectList = std::get<Fortran::parser::AccObjectList>(list.t);
447 void AccStructureChecker::Enter(const parser::AccClause::Create &c) {
451 std::get<std::optional<parser::AccDataModifier>>(modifierClause.t)}) {
452 if (modifier->v != parser::AccDataModifier::Modifier::Zero) {
456 parser::ToUpperCaseLetters(
465 parser::ToUpperCaseLetters(
475 void AccStructureChecker::Enter(const parser::AccClause::Copyin &c) {
479 std::get<std::optional<parser::AccDataModifier>>(modifierClause.t)}) {
483 if (modifier->v != parser::AccDataModifier::Modifier::ReadOnly) {
487 parser::ToUpperCaseLetters(
497 void AccStructureChecker::Enter(const parser::AccClause::Copyout &c) {
501 std::get<std::optional<parser::AccDataModifier>>(modifierClause.t)}) {
505 if (modifier->v != parser::AccDataModifier::Modifier::Zero) {
509 parser::ToUpperCaseLetters(
518 parser::ToUpperCaseLetters(
528 void AccStructureChecker::Enter(const parser::AccClause::DeviceType &d) {
534 parser::ToUpperCaseLetters(
542 void AccStructureChecker::Enter(const parser::AccClause::Seq &g) {
551 void AccStructureChecker::Enter(const parser::AccClause::Vector &g) {
563 void AccStructureChecker::Enter(const parser::AccClause::Worker &g) {
575 void AccStructureChecker::Enter(const parser::AccClause::Tile &g) {
581 void AccStructureChecker::Enter(const parser::AccClause::Gang &g) {
596 const Fortran::parser::AccGangArgList &x = *g.v;
597 for (const Fortran::parser::AccGangArg &gangArg : x.v) {
598 if (std::get_if<Fortran::parser::AccGangArg::Num>(&gangArg.u)) {
600 } else if (std::get_if<Fortran::parser::AccGangArg::Dim>(&gangArg.u)) {
602 } else if (std::get_if<Fortran::parser::AccGangArg::Static>(&gangArg.u)) {
611 parser::ToUpperCaseLetters(
624 void AccStructureChecker::Enter(const parser::AccClause::NumGangs &n) {
637 void AccStructureChecker::Enter(const parser::AccClause::NumWorkers &n) {
646 void AccStructureChecker::Enter(const parser::AccClause::VectorLength &n) {
655 void AccStructureChecker::Enter(const parser::AccClause::Reduction &reduction) {
668 const parser::AccObjectListWithReduction &list{reduction.v};
669 const auto &op{std::get<parser::ReductionOperator>(list.t)};
670 const auto &objects{std::get<parser::AccObjectList>(list.t)};
675 [&](const parser::Designator &designator) {
701 [&](const Fortran::parser::Name &name) {
708 void AccStructureChecker::Enter(const parser::AccClause::Self &x) {
710 const std::optional<parser::AccSelfClause> &accSelfClause = x.v;
713 std::holds_alternative<std::optional<parser::ScalarLogicalExpr>>(
721 std::holds_alternative<parser::AccObjectList>((*accSelfClause).u)) {
723 std::get<parser::AccObjectList>((*accSelfClause).u);
733 void AccStructureChecker::Enter(const parser::AccClause::Collapse &x) {
737 const parser::AccCollapseArg &accCollapseArg = x.v;
739 std::get<parser::ScalarIntConstantExpr>(accCollapseArg.t)};
744 void AccStructureChecker::Enter(const parser::AccClause::Present &x) {
749 void AccStructureChecker::Enter(const parser::AccClause::Copy &x) {
754 void AccStructureChecker::Enter(const parser::AccClause::Deviceptr &x) {
759 void AccStructureChecker::Enter(const parser::AccClause::DeviceResident &x) {
765 void AccStructureChecker::Enter(const parser::AccClause::Link &x) {
770 void AccStructureChecker::Enter(const parser::AccClause::Shortloop &x) {
777 void AccStructureChecker::Enter(const parser::AccClause::If &x) {
791 void AccStructureChecker::Enter(const parser::OpenACCEndConstruct &x) {
796 void AccStructureChecker::Enter(const parser::Module &) {
800 void AccStructureChecker::Enter(const parser::FunctionSubprogram &x) {
804 void AccStructureChecker::Enter(const parser::SubroutineSubprogram &) {
808 void AccStructureChecker::Enter(const parser::SeparateModuleSubprogram &) {
812 void AccStructureChecker::Enter(const parser::DoConstruct &) {
816 void AccStructureChecker::Leave(const parser::DoConstruct &) {