Lines Matching defs:stmt

1377 static bool hasSpec(const A &stmt) {
1378 return hasX<SEEK>(stmt.v);
1383 static const Fortran::lower::SomeExpr *getExpr(const A &stmt) {
1384 for (const auto &spec : stmt.v)
1501 static bool hasIOControl(const A &stmt) {
1502 return hasX<SEEK>(stmt.controls);
1506 static const auto *getIOControl(const A &stmt) {
1507 for (const auto &spec : stmt.controls)
1527 static bool isDataTransferFormatted(const A &stmt) {
1528 if (stmt.format)
1529 return !formatIsActuallyNamelist(*stmt.format);
1530 return hasIOControl<Fortran::parser::Format>(stmt);
1539 static bool isDataTransferList(const A &stmt) {
1540 if (stmt.format)
1541 return std::holds_alternative<Fortran::parser::Star>(stmt.format->u);
1542 if (auto *mem = getIOControl<Fortran::parser::Format>(stmt))
1548 const Fortran::parser::PrintStmt &stmt) {
1550 std::get<Fortran::parser::Format>(stmt.t).u);
1554 static bool isDataTransferInternal(const A &stmt) {
1555 if (stmt.iounit.has_value())
1556 return std::holds_alternative<Fortran::parser::Variable>(stmt.iounit->u);
1557 if (auto *unit = getIOControl<Fortran::parser::IoUnit>(stmt))
1589 mlir::Location loc, const A &stmt,
1591 if (stmt.iounit.has_value())
1592 if (auto *var = std::get_if<Fortran::parser::Variable>(&stmt.iounit->u))
1594 if (auto *unit = getIOControl<Fortran::parser::IoUnit>(stmt))
1608 static bool isDataTransferNamelist(const A &stmt) {
1609 if (stmt.format)
1610 return formatIsActuallyNamelist(*stmt.format);
1611 return hasIOControl<Fortran::parser::Name>(stmt);
1748 const A &stmt, mlir::Type strTy, mlir::Type lenTy,
1750 if (stmt.format && !formatIsActuallyNamelist(*stmt.format))
1751 return genFormat(converter, loc, *stmt.format, strTy, lenTy, stmtCtx);
1752 return genFormat(converter, loc, *getIOControl<Fortran::parser::Format>(stmt),
1759 const Fortran::parser::PrintStmt &stmt, mlir::Type strTy, mlir::Type lenTy,
1761 return genFormat(converter, loc, std::get<Fortran::parser::Format>(stmt.t),
1769 const A &stmt, mlir::Type strTy, mlir::Type lenTy,
1772 stmt.iounit ? &*stmt.iounit : getIOControl<Fortran::parser::IoUnit>(stmt);
1854 const A &stmt, mlir::Type ty, ConditionSpecInfo &csi,
1857 stmt.iounit ? &*stmt.iounit : getIOControl<Fortran::parser::IoUnit>(stmt);
1866 const S &stmt) {
1870 ConditionSpecInfo csi = lowerErrorSpec(converter, loc, stmt.v);
1874 converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt),
1882 genConditionHandlerCall(converter, loc, cookie, stmt.v, csi);
1885 threadSpecs(converter, loc, cookie, stmt.v, csi.hasErrorConditionSpec(), ok);
1893 const Fortran::parser::BackspaceStmt &stmt) {
1894 return genBasicIOStmt<mkIOKey(BeginBackspace)>(converter, stmt);
1899 const Fortran::parser::EndfileStmt &stmt) {
1900 return genBasicIOStmt<mkIOKey(BeginEndfile)>(converter, stmt);
1905 const Fortran::parser::FlushStmt &stmt) {
1906 return genBasicIOStmt<mkIOKey(BeginFlush)>(converter, stmt);
1911 const Fortran::parser::RewindStmt &stmt) {
1912 return genBasicIOStmt<mkIOKey(BeginRewind)>(converter, stmt);
1941 const Fortran::parser::OpenStmt &stmt) {
1947 ConditionSpecInfo csi = lowerErrorSpec(converter, loc, stmt.v);
1949 if (hasSpec<Fortran::parser::FileUnitNumber>(stmt)) {
1953 converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt),
1959 hasNewunitSpec = hasSpec<Fortran::parser::ConnectSpec::Newunit>(stmt);
1968 genConditionHandlerCall(converter, loc, cookie, stmt.v, csi);
1971 threadSpecs(converter, loc, cookie, stmt.v, csi.hasErrorConditionSpec(), ok);
1973 genNewunitSpec(converter, loc, cookie, stmt.v);
1980 const Fortran::parser::CloseStmt &stmt) {
1981 return genBasicIOStmt<mkIOKey(BeginClose)>(converter, stmt);
1986 const Fortran::parser::WaitStmt &stmt) {
1990 ConditionSpecInfo csi = lowerErrorSpec(converter, loc, stmt.v);
1991 bool hasId = hasSpec<Fortran::parser::IdExpr>(stmt);
1997 converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt),
2002 loc, getExpr<Fortran::parser::IdExpr>(stmt), stmtCtx));
2011 genConditionHandlerCall(converter, loc, cookie, stmt.v, csi);
2086 const A &stmt, mlir::FunctionType ioFuncTy, bool isFormatted,
2095 getFormat(converter, loc, stmt, ioFuncTy.getInput(ioArgs.size()),
2124 getBuffer(converter, loc, stmt, ioFuncTy.getInput(ioArgs.size()),
2136 ioArgs.push_back(getIOUnit(converter, loc, stmt,
2156 const A &stmt) {
2160 const bool isFormatted = isDataTransferFormatted(stmt);
2161 const bool isList = isFormatted ? isDataTransferList(stmt) : false;
2162 const bool isInternal = isDataTransferInternal(stmt);
2164 isInternal ? maybeGetInternalIODescriptor(converter, loc, stmt, stmtCtx)
2167 const bool isNml = isDataTransferNamelist(stmt);
2177 csi = lowerErrorSpec(converter, loc, stmt.controls);
2188 ioArgs, converter, loc, stmt, ioFunc.getFunctionType(), isFormatted,
2196 genConditionHandlerCall(converter, loc, cookie, stmt.controls, csi);
2197 threadSpecs(converter, loc, cookie, stmt.controls,
2206 *getIOControl<Fortran::parser::Name>(stmt)->symbol,
2209 genInputItemList(converter, cookie, stmt.items, isFormatted,
2215 *getIOControl<Fortran::parser::Name>(stmt)->symbol,
2218 genOutputItemList(converter, cookie, stmt.items, isFormatted,
2222 genOutputItemList(converter, cookie, std::get<1>(stmt.t), isFormatted,
2229 for (const auto &spec : stmt.controls)
2250 const Fortran::parser::PrintStmt &stmt) {
2253 genDataTransferStmt</*isInput=*/false, /*ioCtrl=*/false>(converter, stmt);
2258 const Fortran::parser::WriteStmt &stmt) {
2259 return genDataTransferStmt</*isInput=*/false>(converter, stmt);
2264 const Fortran::parser::ReadStmt &stmt) {
2265 return genDataTransferStmt</*isInput=*/true>(converter, stmt);
2271 getInquireFileExpr(const std::list<Fortran::parser::InquireSpec> *stmt) {
2272 if (!stmt)
2274 for (const Fortran::parser::InquireSpec &spec : *stmt) {
2439 const Fortran::parser::InquireStmt &stmt) {
2446 std::get_if<std::list<Fortran::parser::InquireSpec>>(&stmt.u);
2481 std::get_if<Fortran::parser::InquireStmt::Iolength>(&stmt.u);