diff --git a/flang/lib/Lower/Bridge.cpp b/flang/lib/Lower/Bridge.cpp --- a/flang/lib/Lower/Bridge.cpp +++ b/flang/lib/Lower/Bridge.cpp @@ -201,6 +201,8 @@ entryIndex < last; ++entryIndex) { funit.setActiveEntry(entryIndex); startNewFunction(funit); // the entry point for lowering this procedure + for (Fortran::lower::pft::Evaluation &eval : funit.evaluationList) + genFIR(eval); endNewFunction(funit); } funit.setActiveEntry(0); @@ -238,6 +240,407 @@ } void genFIR(const Fortran::parser::EndProgramStmt &) { genExitRoutine(); } + void genFIR(const Fortran::parser::CallStmt &stmt) { + TODO(toLocation(), "CallStmt lowering"); + } + + void genFIR(const Fortran::parser::ComputedGotoStmt &stmt) { + TODO(toLocation(), "ComputedGotoStmt lowering"); + } + + void genFIR(const Fortran::parser::ArithmeticIfStmt &stmt) { + TODO(toLocation(), "ArithmeticIfStmt lowering"); + } + + void genFIR(const Fortran::parser::AssignedGotoStmt &stmt) { + TODO(toLocation(), "AssignedGotoStmt lowering"); + } + + void genFIR(const Fortran::parser::DoConstruct &doConstruct) { + TODO(toLocation(), "DoConstruct lowering"); + } + + void genFIR(const Fortran::parser::IfConstruct &) { + TODO(toLocation(), "IfConstruct lowering"); + } + + void genFIR(const Fortran::parser::CaseConstruct &) { + TODO(toLocation(), "CaseConstruct lowering"); + } + + void genFIR(const Fortran::parser::ConcurrentHeader &header) { + TODO(toLocation(), "ConcurrentHeader lowering"); + } + + void genFIR(const Fortran::parser::ForallAssignmentStmt &stmt) { + TODO(toLocation(), "ForallAssignmentStmt lowering"); + } + + void genFIR(const Fortran::parser::EndForallStmt &) { + TODO(toLocation(), "EndForallStmt lowering"); + } + + void genFIR(const Fortran::parser::ForallStmt &) { + TODO(toLocation(), "ForallStmt lowering"); + } + + void genFIR(const Fortran::parser::ForallConstruct &) { + TODO(toLocation(), "ForallConstruct lowering"); + } + + void genFIR(const Fortran::parser::ForallConstructStmt &) { + TODO(toLocation(), "ForallConstructStmt lowering"); + } + + void genFIR(const Fortran::parser::CompilerDirective &) { + TODO(toLocation(), "CompilerDirective lowering"); + } + + void genFIR(const Fortran::parser::OpenACCConstruct &) { + TODO(toLocation(), "OpenACCConstruct lowering"); + } + + void genFIR(const Fortran::parser::OpenACCDeclarativeConstruct &) { + TODO(toLocation(), "OpenACCDeclarativeConstruct lowering"); + } + + void genFIR(const Fortran::parser::OpenMPConstruct &) { + TODO(toLocation(), "OpenMPConstruct lowering"); + } + + void genFIR(const Fortran::parser::OpenMPDeclarativeConstruct &) { + TODO(toLocation(), "OpenMPDeclarativeConstruct lowering"); + } + + void genFIR(const Fortran::parser::SelectCaseStmt &) { + TODO(toLocation(), "SelectCaseStmt lowering"); + } + + void genFIR(const Fortran::parser::AssociateConstruct &) { + TODO(toLocation(), "AssociateConstruct lowering"); + } + + void genFIR(const Fortran::parser::BlockConstruct &blockConstruct) { + TODO(toLocation(), "BlockConstruct lowering"); + } + + void genFIR(const Fortran::parser::BlockStmt &) { + TODO(toLocation(), "BlockStmt lowering"); + } + + void genFIR(const Fortran::parser::EndBlockStmt &) { + TODO(toLocation(), "EndBlockStmt lowering"); + } + + void genFIR(const Fortran::parser::ChangeTeamConstruct &construct) { + TODO(toLocation(), "ChangeTeamConstruct lowering"); + } + + void genFIR(const Fortran::parser::ChangeTeamStmt &stmt) { + TODO(toLocation(), "ChangeTeamStmt lowering"); + } + + void genFIR(const Fortran::parser::EndChangeTeamStmt &stmt) { + TODO(toLocation(), "EndChangeTeamStmt lowering"); + } + + void genFIR(const Fortran::parser::CriticalConstruct &criticalConstruct) { + TODO(toLocation(), "CriticalConstruct lowering"); + } + + void genFIR(const Fortran::parser::CriticalStmt &) { + TODO(toLocation(), "CriticalStmt lowering"); + } + + void genFIR(const Fortran::parser::EndCriticalStmt &) { + TODO(toLocation(), "EndCriticalStmt lowering"); + } + + void genFIR(const Fortran::parser::SelectRankConstruct &selectRankConstruct) { + TODO(toLocation(), "SelectRankConstruct lowering"); + } + + void genFIR(const Fortran::parser::SelectRankStmt &) { + TODO(toLocation(), "SelectRankStmt lowering"); + } + + void genFIR(const Fortran::parser::SelectRankCaseStmt &) { + TODO(toLocation(), "SelectRankCaseStmt lowering"); + } + + void genFIR(const Fortran::parser::SelectTypeConstruct &selectTypeConstruct) { + TODO(toLocation(), "SelectTypeConstruct lowering"); + } + + void genFIR(const Fortran::parser::SelectTypeStmt &) { + TODO(toLocation(), "SelectTypeStmt lowering"); + } + + void genFIR(const Fortran::parser::TypeGuardStmt &) { + TODO(toLocation(), "TypeGuardStmt lowering"); + } + + //===--------------------------------------------------------------------===// + // IO statements (see io.h) + //===--------------------------------------------------------------------===// + + void genFIR(const Fortran::parser::BackspaceStmt &stmt) { + TODO(toLocation(), "BackspaceStmt lowering"); + } + + void genFIR(const Fortran::parser::CloseStmt &stmt) { + TODO(toLocation(), "CloseStmt lowering"); + } + + void genFIR(const Fortran::parser::EndfileStmt &stmt) { + TODO(toLocation(), "EndfileStmt lowering"); + } + + void genFIR(const Fortran::parser::FlushStmt &stmt) { + TODO(toLocation(), "FlushStmt lowering"); + } + + void genFIR(const Fortran::parser::InquireStmt &stmt) { + TODO(toLocation(), "InquireStmt lowering"); + } + + void genFIR(const Fortran::parser::OpenStmt &stmt) { + TODO(toLocation(), "OpenStmt lowering"); + } + + void genFIR(const Fortran::parser::PrintStmt &stmt) { + TODO(toLocation(), "PrintStmt lowering"); + } + + void genFIR(const Fortran::parser::ReadStmt &stmt) { + TODO(toLocation(), "ReadStmt lowering"); + } + + void genFIR(const Fortran::parser::RewindStmt &stmt) { + TODO(toLocation(), "RewindStmt lowering"); + } + + void genFIR(const Fortran::parser::WaitStmt &stmt) { + TODO(toLocation(), "WaitStmt lowering"); + } + + void genFIR(const Fortran::parser::WriteStmt &stmt) { + TODO(toLocation(), "WriteStmt lowering"); + } + + //===--------------------------------------------------------------------===// + // Memory allocation and deallocation + //===--------------------------------------------------------------------===// + + void genFIR(const Fortran::parser::AllocateStmt &stmt) { + TODO(toLocation(), "AllocateStmt lowering"); + } + + void genFIR(const Fortran::parser::DeallocateStmt &stmt) { + TODO(toLocation(), "DeallocateStmt lowering"); + } + + void genFIR(const Fortran::parser::NullifyStmt &stmt) { + TODO(toLocation(), "NullifyStmt lowering"); + } + + //===--------------------------------------------------------------------===// + + void genFIR(const Fortran::parser::EventPostStmt &stmt) { + TODO(toLocation(), "EventPostStmt lowering"); + } + + void genFIR(const Fortran::parser::EventWaitStmt &stmt) { + TODO(toLocation(), "EventWaitStmt lowering"); + } + + void genFIR(const Fortran::parser::FormTeamStmt &stmt) { + TODO(toLocation(), "FormTeamStmt lowering"); + } + + void genFIR(const Fortran::parser::LockStmt &stmt) { + TODO(toLocation(), "LockStmt lowering"); + } + + void genFIR(const Fortran::parser::WhereConstruct &c) { + TODO(toLocation(), "WhereConstruct lowering"); + } + + void genFIR(const Fortran::parser::WhereBodyConstruct &body) { + TODO(toLocation(), "WhereBodyConstruct lowering"); + } + + void genFIR(const Fortran::parser::WhereConstructStmt &stmt) { + TODO(toLocation(), "WhereConstructStmt lowering"); + } + + void genFIR(const Fortran::parser::WhereConstruct::MaskedElsewhere &ew) { + TODO(toLocation(), "MaskedElsewhere lowering"); + } + + void genFIR(const Fortran::parser::MaskedElsewhereStmt &stmt) { + TODO(toLocation(), "MaskedElsewhereStmt lowering"); + } + + void genFIR(const Fortran::parser::WhereConstruct::Elsewhere &ew) { + TODO(toLocation(), "Elsewhere lowering"); + } + + void genFIR(const Fortran::parser::ElsewhereStmt &stmt) { + TODO(toLocation(), "ElsewhereStmt lowering"); + } + + void genFIR(const Fortran::parser::EndWhereStmt &) { + TODO(toLocation(), "EndWhereStmt lowering"); + } + + void genFIR(const Fortran::parser::WhereStmt &stmt) { + TODO(toLocation(), "WhereStmt lowering"); + } + + void genFIR(const Fortran::parser::PointerAssignmentStmt &stmt) { + TODO(toLocation(), "PointerAssignmentStmt lowering"); + } + + void genFIR(const Fortran::parser::AssignmentStmt &stmt) { + TODO(toLocation(), "AssignmentStmt lowering"); + } + + void genFIR(const Fortran::parser::SyncAllStmt &stmt) { + TODO(toLocation(), "SyncAllStmt lowering"); + } + + void genFIR(const Fortran::parser::SyncImagesStmt &stmt) { + TODO(toLocation(), "SyncImagesStmt lowering"); + } + + void genFIR(const Fortran::parser::SyncMemoryStmt &stmt) { + TODO(toLocation(), "SyncMemoryStmt lowering"); + } + + void genFIR(const Fortran::parser::SyncTeamStmt &stmt) { + TODO(toLocation(), "SyncTeamStmt lowering"); + } + + void genFIR(const Fortran::parser::UnlockStmt &stmt) { + TODO(toLocation(), "UnlockStmt lowering"); + } + + void genFIR(const Fortran::parser::AssignStmt &stmt) { + TODO(toLocation(), "AssignStmt lowering"); + } + + void genFIR(const Fortran::parser::FormatStmt &) { + TODO(toLocation(), "FormatStmt lowering"); + } + + void genFIR(const Fortran::parser::PauseStmt &stmt) { + TODO(toLocation(), "PauseStmt lowering"); + } + + void genFIR(const Fortran::parser::FailImageStmt &stmt) { + TODO(toLocation(), "FailImageStmt lowering"); + } + + void genFIR(const Fortran::parser::StopStmt &stmt) { + TODO(toLocation(), "StopStmt lowering"); + } + + void genFIR(const Fortran::parser::ReturnStmt &stmt) { + TODO(toLocation(), "ReturnStmt lowering"); + } + + void genFIR(const Fortran::parser::CycleStmt &) { + TODO(toLocation(), "CycleStmt lowering"); + } + + void genFIR(const Fortran::parser::ExitStmt &) { + TODO(toLocation(), "ExitStmt lowering"); + } + + void genFIR(const Fortran::parser::GotoStmt &) { + TODO(toLocation(), "GotoStmt lowering"); + } + + void genFIR(const Fortran::parser::AssociateStmt &) { + TODO(toLocation(), "AssociateStmt lowering"); + } + + void genFIR(const Fortran::parser::CaseStmt &) { + TODO(toLocation(), "CaseStmt lowering"); + } + + void genFIR(const Fortran::parser::ContinueStmt &) { + TODO(toLocation(), "ContinueStmt lowering"); + } + + void genFIR(const Fortran::parser::ElseIfStmt &) { + TODO(toLocation(), "ElseIfStmt lowering"); + } + + void genFIR(const Fortran::parser::ElseStmt &) { + TODO(toLocation(), "ElseStmt lowering"); + } + + void genFIR(const Fortran::parser::EndAssociateStmt &) { + TODO(toLocation(), "EndAssociateStmt lowering"); + } + + void genFIR(const Fortran::parser::EndDoStmt &) { + TODO(toLocation(), "EndDoStmt lowering"); + } + + void genFIR(const Fortran::parser::EndFunctionStmt &) { + TODO(toLocation(), "EndFunctionStmt lowering"); + } + + void genFIR(const Fortran::parser::EndIfStmt &) { + TODO(toLocation(), "EndIfStmt lowering"); + } + + void genFIR(const Fortran::parser::EndMpSubprogramStmt &) { + TODO(toLocation(), "EndMpSubprogramStmt lowering"); + } + + void genFIR(const Fortran::parser::EndSelectStmt &) { + TODO(toLocation(), "EndSelectStmt lowering"); + } + + void genFIR(const Fortran::parser::EndSubroutineStmt &) { + TODO(toLocation(), "EndSubroutineStmt lowering"); + } + + void genFIR(const Fortran::parser::EntryStmt &) { + TODO(toLocation(), "EntryStmt lowering"); + } + + void genFIR(const Fortran::parser::IfStmt &) { + TODO(toLocation(), "IfStmt lowering"); + } + + void genFIR(const Fortran::parser::IfThenStmt &) { + TODO(toLocation(), "IfThenStmt lowering"); + } + + void genFIR(const Fortran::parser::NonLabelDoStmt &) { + TODO(toLocation(), "NonLabelDoStmt lowering"); + } + + void genFIR(const Fortran::parser::OmpEndLoopDirective &) { + TODO(toLocation(), "OmpEndLoopDirective lowering"); + } + + void genFIR(const Fortran::parser::NamelistStmt &) { + TODO(toLocation(), "NamelistStmt lowering"); + } + + void genFIR(Fortran::lower::pft::Evaluation &eval, + bool unstructuredContext = true) { + setCurrentEval(eval); + setCurrentPosition(eval.position); + eval.visit([&](const auto &stmt) { genFIR(stmt); }); + } + //===--------------------------------------------------------------------===// Fortran::lower::LoweringBridge &bridge;