Lines Matching refs:Fortran

41 constexpr TypeBuilderFunc getModel<Fortran::runtime::io::IoStatementState *>() {  in getModel()
46 getModel<const Fortran::runtime::io::NamelistGroup &>() { in getModel()
52 constexpr TypeBuilderFunc getModel<Fortran::runtime::io::Iostat>() { in getModel()
55 8 * sizeof(Fortran::runtime::io::Iostat)); in getModel()
60 using namespace Fortran::runtime::io;
64 namespace Fortran::lower { namespace
113 const Fortran::lower::SomeExpr *ioStatExpr{};
137 static void genIoLoop(Fortran::lower::AbstractConverter &converter,
145 return std::get<A>(Fortran::lower::newIOTable).name; in getName()
152 return std::get<A>(Fortran::lower::newIOTable).getTypeModel(); in getTypeModel()
176 static mlir::Value genEndIO(Fortran::lower::AbstractConverter &converter, in genEndIO()
179 Fortran::lower::StatementContext &stmtCtx) { in genEndIO()
241 getNamelistGroup(Fortran::lower::AbstractConverter &converter, in getNamelistGroup()
242 const Fortran::semantics::Symbol &symbol, in getNamelistGroup()
243 Fortran::lower::StatementContext &stmtCtx) { in getNamelistGroup()
252 symbol.GetUltimate().get<Fortran::semantics::NamelistDetails>(); in getNamelistGroup()
266 auto stringAddress = [&](const Fortran::semantics::Symbol &symbol) { in getNamelistGroup()
274 for (const Fortran::semantics::Symbol &s : details.objects()) { in getNamelistGroup()
276 if (!Fortran::lower::symbolIsGlobal(s)) { in getNamelistGroup()
286 const auto expr = Fortran::evaluate::AsGenericExpr(s); in getNamelistGroup()
291 Fortran::lower::genInitialDataTarget(converter, loc, boxTy, *expr); in getNamelistGroup()
309 for (const Fortran::semantics::Symbol &s : details.objects()) { in getNamelistGroup()
325 const auto expr = Fortran::evaluate::AsGenericExpr(s); in getNamelistGroup()
394 static void genNamelistIO(Fortran::lower::AbstractConverter &converter, in genNamelistIO()
396 Fortran::semantics::Symbol &symbol, bool checkResult, in genNamelistIO()
398 Fortran::lower::StatementContext &stmtCtx) { in genNamelistIO()
464 Fortran::lower::AbstractConverter &converter, mlir::Value cookie, in genOutputItemList()
465 const std::list<Fortran::parser::OutputItem> &items, bool isFormatted, in genOutputItemList()
468 for (const Fortran::parser::OutputItem &item : items) { in genOutputItemList()
474 auto &pExpr = std::get<Fortran::parser::Expr>(item.u); in genOutputItemList()
477 Fortran::lower::StatementContext stmtCtx; in genOutputItemList()
479 const auto *expr = Fortran::semantics::GetExpr(pExpr); in genOutputItemList()
609 static void genInputItemList(Fortran::lower::AbstractConverter &converter, in genInputItemList()
611 const std::list<Fortran::parser::InputItem> &items, in genInputItemList()
615 for (const Fortran::parser::InputItem &item : items) { in genInputItemList()
621 auto &pVar = std::get<Fortran::parser::Variable>(item.u); in genInputItemList()
624 Fortran::lower::StatementContext stmtCtx; in genInputItemList()
625 const auto *expr = Fortran::semantics::GetExpr(pVar); in genInputItemList()
628 if (Fortran::evaluate::HasVectorSubscript(*expr)) { in genInputItemList()
630 Fortran::lower::genVectorSubscriptBox(loc, converter, stmtCtx, *expr); in genInputItemList()
668 static void genIoLoop(Fortran::lower::AbstractConverter &converter, in genIoLoop()
672 Fortran::lower::StatementContext stmtCtx; in genIoLoop()
680 Fortran::evaluate::AsGenericExpr(loopSym).value(), stmtCtx)); in genIoLoop()
681 auto genControlValue = [&](const Fortran::parser::ScalarIntExpr &expr) { in genIoLoop()
683 converter.genExprValue(*Fortran::semantics::GetExpr(expr), stmtCtx)); in genIoLoop()
693 if constexpr (std::is_same_v<D, Fortran::parser::InputImpliedDo>) in genIoLoop()
771 static mlir::Value locToFilename(Fortran::lower::AbstractConverter &converter, in locToFilename()
778 static mlir::Value locToLineNo(Fortran::lower::AbstractConverter &converter, in locToLineNo()
801 genBuffer(Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genBuffer()
802 const Fortran::lower::SomeExpr &expr, mlir::Type strTy, in genBuffer()
803 mlir::Type lenTy, Fortran::lower::StatementContext &stmtCtx) { in genBuffer()
834 lowerStringLit(Fortran::lower::AbstractConverter &converter, mlir::Location loc, in lowerStringLit()
835 Fortran::lower::StatementContext &stmtCtx, const A &syntax, in lowerStringLit()
838 auto *expr = Fortran::semantics::GetExpr(syntax);
855 lowerSourceTextAsStringLit(Fortran::lower::AbstractConverter &converter, in lowerSourceTextAsStringLit()
875 mlir::Value genIntIOOption(Fortran::lower::AbstractConverter &converter, in genIntIOOption()
878 Fortran::lower::StatementContext localStatementCtx; in genIntIOOption()
883 loc, Fortran::semantics::GetExpr(spec.v), localStatementCtx)); in genIntIOOption()
892 mlir::Value genCharIOOption(Fortran::lower::AbstractConverter &converter, in genCharIOOption()
895 Fortran::lower::StatementContext localStatementCtx; in genCharIOOption()
908 mlir::Value genIOOption(Fortran::lower::AbstractConverter &converter, in genIOOption()
912 std::tuple<Fortran::parser::EndLabel, Fortran::parser::EorLabel, in genIOOption()
913 Fortran::parser::ErrLabel, Fortran::parser::FileUnitNumber, in genIOOption()
914 Fortran::parser::Format, Fortran::parser::IoUnit, in genIOOption()
915 Fortran::parser::MsgVariable, Fortran::parser::Name, in genIOOption()
916 Fortran::parser::StatVariable>; in genIOOption()
917 static_assert(Fortran::common::HasMember<A, PreprocessedSpecs>, in genIOOption()
923 mlir::Value genIOOption<Fortran::parser::FileNameExpr>( in genIOOption()
924 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
925 mlir::Value cookie, const Fortran::parser::FileNameExpr &spec) { in genIOOption()
926 Fortran::lower::StatementContext localStatementCtx; in genIOOption()
940 mlir::Value genIOOption<Fortran::parser::ConnectSpec::CharExpr>( in genIOOption()
941 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
942 mlir::Value cookie, const Fortran::parser::ConnectSpec::CharExpr &spec) { in genIOOption()
945 switch (std::get<Fortran::parser::ConnectSpec::CharExpr::Kind>(spec.t)) { in genIOOption()
946 case Fortran::parser::ConnectSpec::CharExpr::Kind::Access: in genIOOption()
949 case Fortran::parser::ConnectSpec::CharExpr::Kind::Action: in genIOOption()
952 case Fortran::parser::ConnectSpec::CharExpr::Kind::Asynchronous: in genIOOption()
955 case Fortran::parser::ConnectSpec::CharExpr::Kind::Blank: in genIOOption()
958 case Fortran::parser::ConnectSpec::CharExpr::Kind::Decimal: in genIOOption()
961 case Fortran::parser::ConnectSpec::CharExpr::Kind::Delim: in genIOOption()
964 case Fortran::parser::ConnectSpec::CharExpr::Kind::Encoding: in genIOOption()
967 case Fortran::parser::ConnectSpec::CharExpr::Kind::Form: in genIOOption()
970 case Fortran::parser::ConnectSpec::CharExpr::Kind::Pad: in genIOOption()
973 case Fortran::parser::ConnectSpec::CharExpr::Kind::Position: in genIOOption()
976 case Fortran::parser::ConnectSpec::CharExpr::Kind::Round: in genIOOption()
979 case Fortran::parser::ConnectSpec::CharExpr::Kind::Sign: in genIOOption()
982 case Fortran::parser::ConnectSpec::CharExpr::Kind::Carriagecontrol: in genIOOption()
985 case Fortran::parser::ConnectSpec::CharExpr::Kind::Convert: in genIOOption()
987 case Fortran::parser::ConnectSpec::CharExpr::Kind::Dispose: in genIOOption()
990 Fortran::lower::StatementContext localStatementCtx; in genIOOption()
994 std::get<Fortran::parser::ScalarDefaultCharExpr>(spec.t), in genIOOption()
1002 mlir::Value genIOOption<Fortran::parser::ConnectSpec::Recl>( in genIOOption()
1003 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
1004 mlir::Value cookie, const Fortran::parser::ConnectSpec::Recl &spec) { in genIOOption()
1009 mlir::Value genIOOption<Fortran::parser::StatusExpr>( in genIOOption()
1010 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
1011 mlir::Value cookie, const Fortran::parser::StatusExpr &spec) { in genIOOption()
1016 mlir::Value genIOOption<Fortran::parser::IoControlSpec::CharExpr>( in genIOOption()
1017 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
1018 mlir::Value cookie, const Fortran::parser::IoControlSpec::CharExpr &spec) { in genIOOption()
1021 switch (std::get<Fortran::parser::IoControlSpec::CharExpr::Kind>(spec.t)) { in genIOOption()
1022 case Fortran::parser::IoControlSpec::CharExpr::Kind::Advance: in genIOOption()
1025 case Fortran::parser::IoControlSpec::CharExpr::Kind::Blank: in genIOOption()
1028 case Fortran::parser::IoControlSpec::CharExpr::Kind::Decimal: in genIOOption()
1031 case Fortran::parser::IoControlSpec::CharExpr::Kind::Delim: in genIOOption()
1034 case Fortran::parser::IoControlSpec::CharExpr::Kind::Pad: in genIOOption()
1037 case Fortran::parser::IoControlSpec::CharExpr::Kind::Round: in genIOOption()
1040 case Fortran::parser::IoControlSpec::CharExpr::Kind::Sign: in genIOOption()
1044 Fortran::lower::StatementContext localStatementCtx; in genIOOption()
1048 std::get<Fortran::parser::ScalarDefaultCharExpr>(spec.t), in genIOOption()
1056 mlir::Value genIOOption<Fortran::parser::IoControlSpec::Asynchronous>( in genIOOption()
1057 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
1059 const Fortran::parser::IoControlSpec::Asynchronous &spec) { in genIOOption()
1065 mlir::Value genIOOption<Fortran::parser::IdVariable>( in genIOOption()
1066 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
1067 mlir::Value cookie, const Fortran::parser::IdVariable &spec) { in genIOOption()
1072 mlir::Value genIOOption<Fortran::parser::IoControlSpec::Pos>( in genIOOption()
1073 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
1074 mlir::Value cookie, const Fortran::parser::IoControlSpec::Pos &spec) { in genIOOption()
1079 mlir::Value genIOOption<Fortran::parser::IoControlSpec::Rec>( in genIOOption()
1080 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genIOOption()
1081 mlir::Value cookie, const Fortran::parser::IoControlSpec::Rec &spec) { in genIOOption()
1088 static void genIOReadSize(Fortran::lower::AbstractConverter &converter, in genIOReadSize()
1097 std::get_if<Fortran::parser::IoControlSpec::Size>(&spec.u)) { in genIOReadSize()
1105 Fortran::lower::StatementContext localStatementCtx; in genIOReadSize()
1107 loc, Fortran::semantics::GetExpr(size->v), localStatementCtx); in genIOReadSize()
1135 static const Fortran::lower::SomeExpr *getExpr(const A &stmt) { in getExpr()
1138 return Fortran::semantics::GetExpr(f->v); in getExpr()
1144 static void threadSpecs(Fortran::lower::AbstractConverter &converter, in threadSpecs()
1151 Fortran::common::visitors{ in threadSpecs()
1152 [&](const Fortran::parser::IoControlSpec::Size &x) -> mlir::Value { in threadSpecs()
1157 [&](const Fortran::parser::ConnectSpec::Newunit &x) -> mlir::Value { in threadSpecs()
1176 ConditionSpecInfo lowerErrorSpec(Fortran::lower::AbstractConverter &converter, in lowerErrorSpec()
1179 const Fortran::lower::SomeExpr *ioMsgExpr = nullptr; in lowerErrorSpec()
1182 Fortran::common::visitors{ in lowerErrorSpec()
1183 [&](const Fortran::parser::StatVariable &var) { in lowerErrorSpec()
1184 csi.ioStatExpr = Fortran::semantics::GetExpr(var); in lowerErrorSpec()
1186 [&](const Fortran::parser::InquireSpec::IntVar &var) { in lowerErrorSpec()
1187 if (std::get<Fortran::parser::InquireSpec::IntVar::Kind>(var.t) == in lowerErrorSpec()
1188 Fortran::parser::InquireSpec::IntVar::Kind::Iostat) in lowerErrorSpec()
1189 csi.ioStatExpr = Fortran::semantics::GetExpr( in lowerErrorSpec()
1190 std::get<Fortran::parser::ScalarIntVariable>(var.t)); in lowerErrorSpec()
1192 [&](const Fortran::parser::MsgVariable &var) { in lowerErrorSpec()
1193 ioMsgExpr = Fortran::semantics::GetExpr(var); in lowerErrorSpec()
1195 [&](const Fortran::parser::InquireSpec::CharVar &var) { in lowerErrorSpec()
1196 if (std::get<Fortran::parser::InquireSpec::CharVar::Kind>( in lowerErrorSpec()
1198 Fortran::parser::InquireSpec::CharVar::Kind::Iomsg) in lowerErrorSpec()
1199 ioMsgExpr = Fortran::semantics::GetExpr( in lowerErrorSpec()
1200 std::get<Fortran::parser::ScalarDefaultCharVariable>( in lowerErrorSpec()
1203 [&](const Fortran::parser::EndLabel &) { csi.hasEnd = true; }, in lowerErrorSpec()
1204 [&](const Fortran::parser::EorLabel &) { csi.hasEor = true; }, in lowerErrorSpec()
1205 [&](const Fortran::parser::ErrLabel &) { csi.hasErr = true; }, in lowerErrorSpec()
1212 Fortran::lower::StatementContext stmtCtx; in lowerErrorSpec()
1220 genConditionHandlerCall(Fortran::lower::AbstractConverter &converter, in genConditionHandlerCall()
1263 if (auto *e = std::get_if<Fortran::parser::Expr>(&format.u)) { in formatIsActuallyNamelist()
1264 auto *expr = Fortran::semantics::GetExpr(*e); in formatIsActuallyNamelist()
1265 if (const Fortran::semantics::Symbol *y = in formatIsActuallyNamelist()
1266 Fortran::evaluate::UnwrapWholeSymbolDataRef(*expr)) in formatIsActuallyNamelist()
1267 return y->has<Fortran::semantics::NamelistDetails>(); in formatIsActuallyNamelist()
1276 return hasIOControl<Fortran::parser::Format>(stmt); in isDataTransferFormatted()
1279 constexpr bool isDataTransferFormatted<Fortran::parser::PrintStmt>( in isDataTransferFormatted()
1280 const Fortran::parser::PrintStmt &) { in isDataTransferFormatted()
1287 return std::holds_alternative<Fortran::parser::Star>(stmt.format->u); in isDataTransferList()
1288 if (auto *mem = getIOControl<Fortran::parser::Format>(stmt)) in isDataTransferList()
1289 return std::holds_alternative<Fortran::parser::Star>(mem->u); in isDataTransferList()
1293 bool isDataTransferList<Fortran::parser::PrintStmt>( in isDataTransferList()
1294 const Fortran::parser::PrintStmt &stmt) { in isDataTransferList()
1295 return std::holds_alternative<Fortran::parser::Star>( in isDataTransferList()
1296 std::get<Fortran::parser::Format>(stmt.t).u); in isDataTransferList()
1302 return std::holds_alternative<Fortran::parser::Variable>(stmt.iounit->u); in isDataTransferInternal()
1303 if (auto *unit = getIOControl<Fortran::parser::IoUnit>(stmt)) in isDataTransferInternal()
1304 return std::holds_alternative<Fortran::parser::Variable>(unit->u); in isDataTransferInternal()
1308 constexpr bool isDataTransferInternal<Fortran::parser::PrintStmt>( in isDataTransferInternal()
1309 const Fortran::parser::PrintStmt &) { in isDataTransferInternal()
1317 Fortran::lower::AbstractConverter &converter, in getVariableBufferRequiredDescriptor()
1318 const Fortran::parser::Variable &var, in getVariableBufferRequiredDescriptor()
1319 Fortran::lower::StatementContext &stmtCtx) { in getVariableBufferRequiredDescriptor()
1334 maybeGetInternalIODescriptor(Fortran::lower::AbstractConverter &converter, in maybeGetInternalIODescriptor()
1336 Fortran::lower::StatementContext &stmtCtx) { in maybeGetInternalIODescriptor()
1338 if (auto *var = std::get_if<Fortran::parser::Variable>(&stmt.iounit->u)) in maybeGetInternalIODescriptor()
1340 if (auto *unit = getIOControl<Fortran::parser::IoUnit>(stmt)) in maybeGetInternalIODescriptor()
1341 if (auto *var = std::get_if<Fortran::parser::Variable>(&unit->u)) in maybeGetInternalIODescriptor()
1347 maybeGetInternalIODescriptor<Fortran::parser::PrintStmt>( in maybeGetInternalIODescriptor()
1348 Fortran::lower::AbstractConverter &, const Fortran::parser::PrintStmt &, in maybeGetInternalIODescriptor()
1349 Fortran::lower::StatementContext &) { in maybeGetInternalIODescriptor()
1356 getIOControl<Fortran::parser::IoControlSpec::Asynchronous>(stmt)) { in isDataTransferAsynchronous()
1363 bool isDataTransferAsynchronous<Fortran::parser::PrintStmt>( in isDataTransferAsynchronous()
1364 mlir::Location, const Fortran::parser::PrintStmt &) { in isDataTransferAsynchronous()
1372 return hasIOControl<Fortran::parser::Name>(stmt); in isDataTransferNamelist()
1375 constexpr bool isDataTransferNamelist<Fortran::parser::PrintStmt>( in isDataTransferNamelist()
1376 const Fortran::parser::PrintStmt &) { in isDataTransferNamelist()
1383 lowerReferenceAsStringSelect(Fortran::lower::AbstractConverter &converter, in lowerReferenceAsStringSelect()
1385 const Fortran::lower::SomeExpr &expr, in lowerReferenceAsStringSelect()
1387 Fortran::lower::StatementContext &stmtCtx) { in lowerReferenceAsStringSelect()
1405 Fortran::lower::pft::LabelSet labels; in lowerReferenceAsStringSelect()
1418 if (eval->isA<Fortran::parser::FormatStmt>()) { in lowerReferenceAsStringSelect()
1476 genFormat(Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genFormat()
1477 const Fortran::parser::Format &format, mlir::Type strTy, in genFormat()
1478 mlir::Type lenTy, Fortran::lower::StatementContext &stmtCtx) { in genFormat()
1479 if (const auto *label = std::get_if<Fortran::parser::Label>(&format.u)) { in genFormat()
1486 const auto *pExpr = std::get_if<Fortran::parser::Expr>(&format.u); in genFormat()
1488 auto e = Fortran::semantics::GetExpr(*pExpr); in genFormat()
1489 if (Fortran::semantics::ExprHasTypeCategory( in genFormat()
1490 *e, Fortran::common::TypeCategory::Character)) in genFormat()
1494 if (Fortran::semantics::ExprHasTypeCategory( in genFormat()
1495 *e, Fortran::common::TypeCategory::Integer) && in genFormat()
1496 e->Rank() == 0 && Fortran::evaluate::UnwrapWholeSymbolDataRef(*e)) { in genFormat()
1511 getFormat(Fortran::lower::AbstractConverter &converter, mlir::Location loc, in getFormat()
1513 Fortran ::lower::StatementContext &stmtCtx) { in getFormat()
1516 return genFormat(converter, loc, *getIOControl<Fortran::parser::Format>(stmt), in getFormat()
1521 getFormat<Fortran::parser::PrintStmt>( in getFormat()
1522 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in getFormat()
1523 const Fortran::parser::PrintStmt &stmt, mlir::Type strTy, mlir::Type lenTy, in getFormat()
1524 Fortran::lower::StatementContext &stmtCtx) { in getFormat()
1525 return genFormat(converter, loc, std::get<Fortran::parser::Format>(stmt.t), in getFormat()
1532 getBuffer(Fortran::lower::AbstractConverter &converter, mlir::Location loc, in getBuffer()
1534 Fortran::lower::StatementContext &stmtCtx) { in getBuffer()
1535 const Fortran::parser::IoUnit *iounit = in getBuffer()
1536 stmt.iounit ? &*stmt.iounit : getIOControl<Fortran::parser::IoUnit>(stmt); in getBuffer()
1538 if (auto *var = std::get_if<Fortran::parser::Variable>(&iounit->u)) in getBuffer()
1539 if (auto *expr = Fortran::semantics::GetExpr(*var)) in getBuffer()
1544 static mlir::Value genIOUnitNumber(Fortran::lower::AbstractConverter &converter, in genIOUnitNumber()
1546 const Fortran::lower::SomeExpr *iounit, in genIOUnitNumber()
1548 Fortran::lower::StatementContext &stmtCtx) { in genIOUnitNumber()
1600 static mlir::Value genIOUnit(Fortran::lower::AbstractConverter &converter, in genIOUnit()
1602 const Fortran::parser::IoUnit *iounit, in genIOUnit()
1604 Fortran::lower::StatementContext &stmtCtx) { in genIOUnit()
1607 if (auto *e = std::get_if<Fortran::parser::FileUnitNumber>(&iounit->u)) in genIOUnit()
1608 return genIOUnitNumber(converter, loc, Fortran::semantics::GetExpr(*e), in genIOUnit()
1611 loc, builder.getIntegerAttr(ty, Fortran::runtime::io::DefaultUnit)); in genIOUnit()
1615 static mlir::Value getIOUnit(Fortran::lower::AbstractConverter &converter, in getIOUnit()
1618 Fortran::lower::StatementContext &stmtCtx) { in getIOUnit()
1619 const Fortran::parser::IoUnit *iounit = in getIOUnit()
1620 stmt.iounit ? &*stmt.iounit : getIOControl<Fortran::parser::IoUnit>(stmt); in getIOUnit()
1628 static mlir::Value genBasicIOStmt(Fortran::lower::AbstractConverter &converter, in genBasicIOStmt()
1631 Fortran::lower::StatementContext stmtCtx; in genBasicIOStmt()
1637 converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt), in genBasicIOStmt()
1654 mlir::Value Fortran::lower::genBackspaceStatement( in genBackspaceStatement()
1655 Fortran::lower::AbstractConverter &converter, in genBackspaceStatement()
1656 const Fortran::parser::BackspaceStmt &stmt) { in genBackspaceStatement()
1660 mlir::Value Fortran::lower::genEndfileStatement( in genEndfileStatement()
1661 Fortran::lower::AbstractConverter &converter, in genEndfileStatement()
1662 const Fortran::parser::EndfileStmt &stmt) { in genEndfileStatement()
1667 Fortran::lower::genFlushStatement(Fortran::lower::AbstractConverter &converter, in genFlushStatement()
1668 const Fortran::parser::FlushStmt &stmt) { in genFlushStatement()
1673 Fortran::lower::genRewindStatement(Fortran::lower::AbstractConverter &converter, in genRewindStatement()
1674 const Fortran::parser::RewindStmt &stmt) { in genRewindStatement()
1679 genNewunitSpec(Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genNewunitSpec()
1681 const std::list<Fortran::parser::ConnectSpec> &specList) { in genNewunitSpec()
1684 std::get_if<Fortran::parser::ConnectSpec::Newunit>(&spec.u)) { in genNewunitSpec()
1685 Fortran::lower::StatementContext stmtCtx; in genNewunitSpec()
1690 const auto *var = Fortran::semantics::GetExpr(newunit->v); in genNewunitSpec()
1703 Fortran::lower::genOpenStatement(Fortran::lower::AbstractConverter &converter, in genOpenStatement()
1704 const Fortran::parser::OpenStmt &stmt) { in genOpenStatement()
1706 Fortran::lower::StatementContext stmtCtx; in genOpenStatement()
1712 if (hasSpec<Fortran::parser::FileUnitNumber>(stmt)) { in genOpenStatement()
1716 converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt), in genOpenStatement()
1722 hasNewunitSpec = hasSpec<Fortran::parser::ConnectSpec::Newunit>(stmt); in genOpenStatement()
1742 Fortran::lower::genCloseStatement(Fortran::lower::AbstractConverter &converter, in genCloseStatement()
1743 const Fortran::parser::CloseStmt &stmt) { in genCloseStatement()
1748 Fortran::lower::genWaitStatement(Fortran::lower::AbstractConverter &converter, in genWaitStatement()
1749 const Fortran::parser::WaitStmt &stmt) { in genWaitStatement()
1751 Fortran::lower::StatementContext stmtCtx; in genWaitStatement()
1754 bool hasId = hasSpec<Fortran::parser::IdExpr>(stmt); in genWaitStatement()
1760 converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt), in genWaitStatement()
1765 loc, getExpr<Fortran::parser::IdExpr>(stmt), stmtCtx)); in genWaitStatement()
1848 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genBeginDataTransferCallArgs()
1853 Fortran::lower::StatementContext &stmtCtx) { in genBeginDataTransferCallArgs()
1895 Fortran::runtime::io::DefaultUnit))); in genBeginDataTransferCallArgs()
1906 genDataTransferStmt(Fortran::lower::AbstractConverter &converter, in genDataTransferStmt()
1909 Fortran::lower::StatementContext stmtCtx; in genDataTransferStmt()
1951 *getIOControl<Fortran::parser::Name>(stmt)->symbol, in genDataTransferStmt()
1956 } else if constexpr (std::is_same_v<A, Fortran::parser::WriteStmt>) { in genDataTransferStmt()
1960 *getIOControl<Fortran::parser::Name>(stmt)->symbol, in genDataTransferStmt()
1982 void Fortran::lower::genPrintStatement( in genPrintStatement()
1983 Fortran::lower::AbstractConverter &converter, in genPrintStatement()
1984 const Fortran::parser::PrintStmt &stmt) { in genPrintStatement()
1991 Fortran::lower::genWriteStatement(Fortran::lower::AbstractConverter &converter, in genWriteStatement()
1992 const Fortran::parser::WriteStmt &stmt) { in genWriteStatement()
1997 Fortran::lower::genReadStatement(Fortran::lower::AbstractConverter &converter, in genReadStatement()
1998 const Fortran::parser::ReadStmt &stmt) { in genReadStatement()
2004 static std::pair<const Fortran::lower::SomeExpr *, bool>
2005 getInquireFileExpr(const std::list<Fortran::parser::InquireSpec> *stmt) { in getInquireFileExpr()
2008 for (const Fortran::parser::InquireSpec &spec : *stmt) { in getInquireFileExpr()
2009 if (auto *f = std::get_if<Fortran::parser::FileUnitNumber>(&spec.u)) in getInquireFileExpr()
2010 return {Fortran::semantics::GetExpr(*f), /*filename?=*/false}; in getInquireFileExpr()
2011 if (auto *f = std::get_if<Fortran::parser::FileNameExpr>(&spec.u)) in getInquireFileExpr()
2012 return {Fortran::semantics::GetExpr(*f), /*filename?=*/true}; in getInquireFileExpr()
2022 static mlir::Value genInquireSpec(Fortran::lower::AbstractConverter &converter, in genInquireSpec()
2025 Fortran::lower::StatementContext &stmtCtx) { in genInquireSpec()
2031 mlir::Value genInquireSpec<Fortran::parser::InquireSpec::CharVar>( in genInquireSpec()
2032 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genInquireSpec()
2034 const Fortran::parser::InquireSpec::CharVar &var, in genInquireSpec()
2035 Fortran::lower::StatementContext &stmtCtx) { in genInquireSpec()
2037 if (std::get<Fortran::parser::InquireSpec::CharVar::Kind>(var.t) == in genInquireSpec()
2038 Fortran::parser::InquireSpec::CharVar::Kind::Iomsg) in genInquireSpec()
2044 const auto *varExpr = Fortran::semantics::GetExpr( in genInquireSpec()
2045 std::get<Fortran::parser::ScalarDefaultCharVariable>(var.t)); in genInquireSpec()
2051 Fortran::runtime::io::HashInquiryKeyword( in genInquireSpec()
2052 Fortran::parser::InquireSpec::CharVar::EnumToString( in genInquireSpec()
2053 std::get<Fortran::parser::InquireSpec::CharVar::Kind>(var.t)) in genInquireSpec()
2061 mlir::Value genInquireSpec<Fortran::parser::InquireSpec::IntVar>( in genInquireSpec()
2062 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genInquireSpec()
2064 const Fortran::parser::InquireSpec::IntVar &var, in genInquireSpec()
2065 Fortran::lower::StatementContext &stmtCtx) { in genInquireSpec()
2067 if (std::get<Fortran::parser::InquireSpec::IntVar::Kind>(var.t) == in genInquireSpec()
2068 Fortran::parser::InquireSpec::IntVar::Kind::Iostat) in genInquireSpec()
2074 const auto *varExpr = Fortran::semantics::GetExpr( in genInquireSpec()
2075 std::get<Fortran::parser::ScalarIntVariable>(var.t)); in genInquireSpec()
2088 Fortran::runtime::io::HashInquiryKeyword( in genInquireSpec()
2089 Fortran::parser::InquireSpec::IntVar::EnumToString( in genInquireSpec()
2090 std::get<Fortran::parser::InquireSpec::IntVar::Kind>(var.t)) in genInquireSpec()
2098 mlir::Value genInquireSpec<Fortran::parser::InquireSpec::LogVar>( in genInquireSpec()
2099 Fortran::lower::AbstractConverter &converter, mlir::Location loc, in genInquireSpec()
2101 const Fortran::parser::InquireSpec::LogVar &var, in genInquireSpec()
2102 Fortran::lower::StatementContext &stmtCtx) { in genInquireSpec()
2104 auto logVarKind = std::get<Fortran::parser::InquireSpec::LogVar::Kind>(var.t); in genInquireSpec()
2107 logVarKind == Fortran::parser::InquireSpec::LogVar::Kind::Pending; in genInquireSpec()
2114 Fortran::semantics::GetExpr( in genInquireSpec()
2115 std::get<Fortran::parser::Scalar< in genInquireSpec()
2116 Fortran::parser::Logical<Fortran::parser::Variable>>>(var.t)), in genInquireSpec()
2125 Fortran::runtime::io::HashInquiryKeyword( in genInquireSpec()
2126 Fortran::parser::InquireSpec::LogVar::EnumToString(logVarKind) in genInquireSpec()
2137 lowerIdExpr(Fortran::lower::AbstractConverter &converter, mlir::Location loc, in lowerIdExpr()
2138 const std::list<Fortran::parser::InquireSpec> &ispecs, in lowerIdExpr()
2139 Fortran::lower::StatementContext &stmtCtx) { in lowerIdExpr()
2140 for (const Fortran::parser::InquireSpec &spec : ispecs) in lowerIdExpr()
2142 Fortran::common::visitors{ in lowerIdExpr()
2143 [&](const Fortran::parser::IdExpr &idExpr) { in lowerIdExpr()
2145 loc, Fortran::semantics::GetExpr(idExpr), stmtCtx)); in lowerIdExpr()
2154 static void threadInquire(Fortran::lower::AbstractConverter &converter, in threadInquire()
2156 const std::list<Fortran::parser::InquireSpec> &ispecs, in threadInquire()
2158 Fortran::lower::StatementContext &stmtCtx) { in threadInquire()
2161 for (const Fortran::parser::InquireSpec &spec : ispecs) { in threadInquire()
2163 ok = std::visit(Fortran::common::visitors{[&](const auto &x) { in threadInquire()
2171 mlir::Value Fortran::lower::genInquireStatement( in genInquireStatement()
2172 Fortran::lower::AbstractConverter &converter, in genInquireStatement()
2173 const Fortran::parser::InquireStmt &stmt) { in genInquireStatement()
2175 Fortran::lower::StatementContext stmtCtx; in genInquireStatement()
2180 std::get_if<std::list<Fortran::parser::InquireSpec>>(&stmt.u); in genInquireStatement()
2215 std::get_if<Fortran::parser::InquireStmt::Iolength>(&stmt.u); in genInquireStatement()
2226 std::get<std::list<Fortran::parser::OutputItem>>(ioLength->t), in genInquireStatement()
2228 auto *ioLengthVar = Fortran::semantics::GetExpr( in genInquireStatement()
2229 std::get<Fortran::parser::ScalarIntVariable>(ioLength->t)); in genInquireStatement()