diff options
author | Valentin Clement <clementval@gmail.com> | 2022-06-22 20:47:48 +0200 |
---|---|---|
committer | Valentin Clement <clementval@gmail.com> | 2022-06-22 20:48:01 +0200 |
commit | 1c7889ca4d82137b22eab3e7f5d704716ba75a59 (patch) | |
tree | 1fe72b4632722ade8b8ef587a85bb664ca938dae | |
parent | 10b23ae880f9ee0188d7ee97b7fc25243aa0c854 (diff) | |
download | llvm-1c7889ca4d82137b22eab3e7f5d704716ba75a59.zip llvm-1c7889ca4d82137b22eab3e7f5d704716ba75a59.tar.gz llvm-1c7889ca4d82137b22eab3e7f5d704716ba75a59.tar.bz2 |
[flang] Remove some auto
This patch replaces some `auto` with proper type. This was done in fir-dev
but not upstreamed yet.
This patch is part of the upstreaming effort from fir-dev branch.
Reviewed By: klausler
Differential Revision: https://reviews.llvm.org/D128350
-rw-r--r-- | flang/lib/Lower/IO.cpp | 55 | ||||
-rw-r--r-- | flang/lib/Lower/Mangler.cpp | 40 |
2 files changed, 56 insertions, 39 deletions
diff --git a/flang/lib/Lower/IO.cpp b/flang/lib/Lower/IO.cpp index 3ca3eff..8baeafd 100644 --- a/flang/lib/Lower/IO.cpp +++ b/flang/lib/Lower/IO.cpp @@ -161,7 +161,7 @@ template <typename E> static mlir::func::FuncOp getIORuntimeFunc(mlir::Location loc, fir::FirOpBuilder &builder) { llvm::StringRef name = getName<E>(); - auto func = builder.getNamedFunction(name); + mlir::func::FuncOp func = builder.getNamedFunction(name); if (func) return func; auto funTy = getTypeModel<E>()(builder.getContext()); @@ -179,7 +179,8 @@ static mlir::Value genEndIO(Fortran::lower::AbstractConverter &converter, Fortran::lower::StatementContext &stmtCtx) { fir::FirOpBuilder &builder = converter.getFirOpBuilder(); if (csi.ioMsg) { - auto getIoMsg = getIORuntimeFunc<mkIOKey(GetIoMsg)>(loc, builder); + mlir::func::FuncOp getIoMsg = + getIORuntimeFunc<mkIOKey(GetIoMsg)>(loc, builder); builder.create<fir::CallOp>( loc, getIoMsg, mlir::ValueRange{ @@ -189,7 +190,8 @@ static mlir::Value genEndIO(Fortran::lower::AbstractConverter &converter, builder.createConvert(loc, getIoMsg.getFunctionType().getInput(2), fir::getLen(*csi.ioMsg))}); } - auto endIoStatement = getIORuntimeFunc<mkIOKey(EndIoStatement)>(loc, builder); + mlir::func::FuncOp endIoStatement = + getIORuntimeFunc<mkIOKey(EndIoStatement)>(loc, builder); auto call = builder.create<fir::CallOp>(loc, endIoStatement, mlir::ValueRange{cookie}); mlir::Value iostat = call.getResult(0); @@ -478,7 +480,8 @@ static void genOutputItemList( if (!expr) fir::emitFatalError(loc, "internal error: could not get evaluate::Expr"); mlir::Type itemTy = converter.genType(*expr); - auto outputFunc = getOutputFunc(loc, builder, itemTy, isFormatted); + mlir::func::FuncOp outputFunc = + getOutputFunc(loc, builder, itemTy, isFormatted); mlir::Type argType = outputFunc.getFunctionType().getInput(1); assert((isFormatted || argType.isa<fir::BoxType>()) && "expect descriptor for unformatted IO runtime"); @@ -625,7 +628,7 @@ static void genInputItemList(Fortran::lower::AbstractConverter &converter, if (Fortran::evaluate::HasVectorSubscript(*expr)) { auto vectorSubscriptBox = Fortran::lower::genVectorSubscriptBox(loc, converter, stmtCtx, *expr); - auto inputFunc = getInputFunc( + mlir::func::FuncOp inputFunc = getInputFunc( loc, builder, vectorSubscriptBox.getElementType(), isFormatted); const bool mustBox = inputFunc.getFunctionType().getInput(1).isa<fir::BoxType>(); @@ -651,7 +654,8 @@ static void genInputItemList(Fortran::lower::AbstractConverter &converter, continue; } mlir::Type itemTy = converter.genType(*expr); - auto inputFunc = getInputFunc(loc, builder, itemTy, isFormatted); + mlir::func::FuncOp inputFunc = + getInputFunc(loc, builder, itemTy, isFormatted); auto itemExv = inputFunc.getFunctionType().getInput(1).isa<fir::BoxType>() ? converter.genExprBox(loc, *expr, stmtCtx) : converter.genExprAddr(loc, expr, stmtCtx); @@ -873,7 +877,7 @@ mlir::Value genIntIOOption(Fortran::lower::AbstractConverter &converter, const B &spec) { Fortran::lower::StatementContext localStatementCtx; fir::FirOpBuilder &builder = converter.getFirOpBuilder(); - auto ioFunc = getIORuntimeFunc<A>(loc, builder); + mlir::func::FuncOp ioFunc = getIORuntimeFunc<A>(loc, builder); mlir::FunctionType ioFuncTy = ioFunc.getFunctionType(); mlir::Value expr = fir::getBase(converter.genExprValue( loc, Fortran::semantics::GetExpr(spec.v), localStatementCtx)); @@ -890,7 +894,7 @@ mlir::Value genCharIOOption(Fortran::lower::AbstractConverter &converter, const B &spec) { Fortran::lower::StatementContext localStatementCtx; fir::FirOpBuilder &builder = converter.getFirOpBuilder(); - auto ioFunc = getIORuntimeFunc<A>(loc, builder); + mlir::func::FuncOp ioFunc = getIORuntimeFunc<A>(loc, builder); mlir::FunctionType ioFuncTy = ioFunc.getFunctionType(); std::tuple<mlir::Value, mlir::Value, mlir::Value> tup = lowerStringLit(converter, loc, localStatementCtx, spec, @@ -922,7 +926,7 @@ mlir::Value genIOOption<Fortran::parser::FileNameExpr>( Fortran::lower::StatementContext localStatementCtx; fir::FirOpBuilder &builder = converter.getFirOpBuilder(); // has an extra KIND argument - auto ioFunc = getIORuntimeFunc<mkIOKey(SetFile)>(loc, builder); + mlir::func::FuncOp ioFunc = getIORuntimeFunc<mkIOKey(SetFile)>(loc, builder); mlir::FunctionType ioFuncTy = ioFunc.getFunctionType(); std::tuple<mlir::Value, mlir::Value, mlir::Value> tup = lowerStringLit(converter, loc, localStatementCtx, spec, @@ -1093,7 +1097,8 @@ static void genIOReadSize(Fortran::lower::AbstractConverter &converter, std::get_if<Fortran::parser::IoControlSpec::Size>(&spec.u)) { fir::FirOpBuilder &builder = converter.getFirOpBuilder(); - auto ioFunc = getIORuntimeFunc<mkIOKey(GetSize)>(loc, builder); + mlir::func::FuncOp ioFunc = + getIORuntimeFunc<mkIOKey(GetSize)>(loc, builder); auto sizeValue = builder.create<fir::CallOp>(loc, ioFunc, mlir::ValueRange{cookie}) .getResult(0); @@ -1218,7 +1223,8 @@ genConditionHandlerCall(Fortran::lower::AbstractConverter &converter, if (!csi.hasAnyConditionSpec()) return; fir::FirOpBuilder &builder = converter.getFirOpBuilder(); - auto enableHandlers = getIORuntimeFunc<mkIOKey(EnableHandlers)>(loc, builder); + mlir::func::FuncOp enableHandlers = + getIORuntimeFunc<mkIOKey(EnableHandlers)>(loc, builder); mlir::Type boolType = enableHandlers.getFunctionType().getInput(1); auto boolValue = [&](bool specifierIsPresent) { return builder.create<mlir::arith::ConstantOp>( @@ -1549,7 +1555,7 @@ static mlir::Value genIOUnitNumber(Fortran::lower::AbstractConverter &converter, // overflow when passed to the IO runtime, check that the unit number is // in range before calling the BeginXXX. if (rawUnitWidth > runtimeArgWidth) { - auto check = + mlir::func::FuncOp check = rawUnitWidth <= 64 ? getIORuntimeFunc<mkIOKey(CheckUnitNumberInRange64)>(loc, builder) : getIORuntimeFunc<mkIOKey(CheckUnitNumberInRange128)>(loc, @@ -1625,7 +1631,7 @@ static mlir::Value genBasicIOStmt(Fortran::lower::AbstractConverter &converter, Fortran::lower::StatementContext stmtCtx; mlir::Location loc = converter.getCurrentLocation(); ConditionSpecInfo csi = lowerErrorSpec(converter, loc, stmt.v); - auto beginFunc = getIORuntimeFunc<K>(loc, builder); + mlir::func::FuncOp beginFunc = getIORuntimeFunc<K>(loc, builder); mlir::FunctionType beginFuncTy = beginFunc.getFunctionType(); mlir::Value unit = genIOUnitNumber( converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt), @@ -1678,7 +1684,8 @@ genNewunitSpec(Fortran::lower::AbstractConverter &converter, mlir::Location loc, std::get_if<Fortran::parser::ConnectSpec::Newunit>(&spec.u)) { Fortran::lower::StatementContext stmtCtx; fir::FirOpBuilder &builder = converter.getFirOpBuilder(); - auto ioFunc = getIORuntimeFunc<mkIOKey(GetNewUnit)>(loc, builder); + mlir::func::FuncOp ioFunc = + getIORuntimeFunc<mkIOKey(GetNewUnit)>(loc, builder); mlir::FunctionType ioFuncTy = ioFunc.getFunctionType(); const auto *var = Fortran::semantics::GetExpr(newunit->v); mlir::Value addr = builder.createConvert( @@ -1745,9 +1752,9 @@ Fortran::lower::genWaitStatement(Fortran::lower::AbstractConverter &converter, mlir::Location loc = converter.getCurrentLocation(); ConditionSpecInfo csi = lowerErrorSpec(converter, loc, stmt.v); bool hasId = hasSpec<Fortran::parser::IdExpr>(stmt); - auto beginFunc = hasId - ? getIORuntimeFunc<mkIOKey(BeginWait)>(loc, builder) - : getIORuntimeFunc<mkIOKey(BeginWaitAll)>(loc, builder); + mlir::func::FuncOp beginFunc = + hasId ? getIORuntimeFunc<mkIOKey(BeginWait)>(loc, builder) + : getIORuntimeFunc<mkIOKey(BeginWaitAll)>(loc, builder); mlir::FunctionType beginFuncTy = beginFunc.getFunctionType(); mlir::Value unit = genIOUnitNumber( converter, loc, getExpr<Fortran::parser::FileUnitNumber>(stmt), @@ -1913,9 +1920,9 @@ genDataTransferStmt(Fortran::lower::AbstractConverter &converter, } // Generate the begin data transfer function call. - auto ioFunc = getBeginDataTransferFunc<isInput>(loc, builder, isFormatted, - isList || isNml, isInternal, - isInternalWithDesc, isAsync); + mlir::func::FuncOp ioFunc = getBeginDataTransferFunc<isInput>( + loc, builder, isFormatted, isList || isNml, isInternal, + isInternalWithDesc, isAsync); llvm::SmallVector<mlir::Value> ioArgs; genBeginDataTransferCallArgs<hasIOCtrl>( ioArgs, converter, loc, stmt, ioFunc.getFunctionType(), isFormatted, @@ -2026,7 +2033,8 @@ mlir::Value genInquireSpec<Fortran::parser::InquireSpec::CharVar>( Fortran::parser::InquireSpec::CharVar::Kind::Iomsg) return {}; fir::FirOpBuilder &builder = converter.getFirOpBuilder(); - auto specFunc = getIORuntimeFunc<mkIOKey(InquireCharacter)>(loc, builder); + mlir::func::FuncOp specFunc = + getIORuntimeFunc<mkIOKey(InquireCharacter)>(loc, builder); mlir::FunctionType specFuncTy = specFunc.getFunctionType(); const auto *varExpr = Fortran::semantics::GetExpr( std::get<Fortran::parser::ScalarDefaultCharVariable>(var.t)); @@ -2055,7 +2063,8 @@ mlir::Value genInquireSpec<Fortran::parser::InquireSpec::IntVar>( Fortran::parser::InquireSpec::IntVar::Kind::Iostat) return {}; fir::FirOpBuilder &builder = converter.getFirOpBuilder(); - auto specFunc = getIORuntimeFunc<mkIOKey(InquireInteger64)>(loc, builder); + mlir::func::FuncOp specFunc = + getIORuntimeFunc<mkIOKey(InquireInteger64)>(loc, builder); mlir::FunctionType specFuncTy = specFunc.getFunctionType(); const auto *varExpr = Fortran::semantics::GetExpr( std::get<Fortran::parser::ScalarIntVariable>(var.t)); @@ -2091,7 +2100,7 @@ mlir::Value genInquireSpec<Fortran::parser::InquireSpec::LogVar>( bool pendId = idExpr && logVarKind == Fortran::parser::InquireSpec::LogVar::Kind::Pending; - auto specFunc = + mlir::func::FuncOp specFunc = pendId ? getIORuntimeFunc<mkIOKey(InquirePendingId)>(loc, builder) : getIORuntimeFunc<mkIOKey(InquireLogical)>(loc, builder); mlir::FunctionType specFuncTy = specFunc.getFunctionType(); diff --git a/flang/lib/Lower/Mangler.cpp b/flang/lib/Lower/Mangler.cpp index ef87f17..d6b8518 100644 --- a/flang/lib/Lower/Mangler.cpp +++ b/flang/lib/Lower/Mangler.cpp @@ -57,12 +57,13 @@ hostName(const Fortran::semantics::Symbol &symbol) { static const Fortran::semantics::Symbol * findInterfaceIfSeperateMP(const Fortran::semantics::Symbol &symbol) { - const auto &scope = symbol.owner(); + const Fortran::semantics::Scope &scope = symbol.owner(); if (symbol.attrs().test(Fortran::semantics::Attr::MODULE) && scope.IsSubmodule()) { // FIXME symbol from MpSubprogramStmt do not seem to have // Attr::MODULE set. - const auto *iface = scope.parent().FindSymbol(symbol.name()); + const Fortran::semantics::Symbol *iface = + scope.parent().FindSymbol(symbol.name()); assert(iface && "Separate module procedure must be declared"); return iface; } @@ -108,10 +109,11 @@ Fortran::lower::mangle::mangleName(const Fortran::semantics::Symbol &symbol, // Separate module subprograms must be mangled according to the // scope where they were declared (the symbol we have is the // definition). - const auto *interface = &ultimateSymbol; + const Fortran::semantics::Symbol *interface = &ultimateSymbol; if (const auto *mpIface = findInterfaceIfSeperateMP(ultimateSymbol)) interface = mpIface; - auto modNames = moduleNames(*interface); + llvm::SmallVector<llvm::StringRef> modNames = + moduleNames(*interface); return fir::NameUniquer::doProcedure(modNames, hostName(*interface), symbolName); }, @@ -129,16 +131,18 @@ Fortran::lower::mangle::mangleName(const Fortran::semantics::Symbol &symbol, symbolName); }, [&](const Fortran::semantics::ObjectEntityDetails &) { - auto modNames = moduleNames(ultimateSymbol); - auto optHost = hostName(ultimateSymbol); + llvm::SmallVector<llvm::StringRef> modNames = + moduleNames(ultimateSymbol); + llvm::Optional<llvm::StringRef> optHost = hostName(ultimateSymbol); if (Fortran::semantics::IsNamedConstant(ultimateSymbol)) return fir::NameUniquer::doConstant(modNames, optHost, symbolName); return fir::NameUniquer::doVariable(modNames, optHost, symbolName); }, [&](const Fortran::semantics::NamelistDetails &) { - auto modNames = moduleNames(ultimateSymbol); - auto optHost = hostName(ultimateSymbol); + llvm::SmallVector<llvm::StringRef> modNames = + moduleNames(ultimateSymbol); + llvm::Optional<llvm::StringRef> optHost = hostName(ultimateSymbol); return fir::NameUniquer::doNamelistGroup(modNames, optHost, symbolName); }, @@ -159,21 +163,25 @@ Fortran::lower::mangle::mangleName(const Fortran::semantics::Symbol &symbol, std::string Fortran::lower::mangle::mangleName( const Fortran::semantics::DerivedTypeSpec &derivedType) { // Resolve host and module association before mangling - const auto &ultimateSymbol = derivedType.typeSymbol().GetUltimate(); - auto symbolName = toStringRef(ultimateSymbol.name()); - auto modNames = moduleNames(ultimateSymbol); - auto optHost = hostName(ultimateSymbol); + const Fortran::semantics::Symbol &ultimateSymbol = + derivedType.typeSymbol().GetUltimate(); + llvm::StringRef symbolName = toStringRef(ultimateSymbol.name()); + llvm::SmallVector<llvm::StringRef> modNames = moduleNames(ultimateSymbol); + llvm::Optional<llvm::StringRef> optHost = hostName(ultimateSymbol); llvm::SmallVector<std::int64_t> kinds; for (const auto ¶m : Fortran::semantics::OrderParameterDeclarations(ultimateSymbol)) { const auto ¶mDetails = param->get<Fortran::semantics::TypeParamDetails>(); if (paramDetails.attr() == Fortran::common::TypeParamAttr::Kind) { - const auto *paramValue = derivedType.FindParameter(param->name()); + const Fortran::semantics::ParamValue *paramValue = + derivedType.FindParameter(param->name()); assert(paramValue && "derived type kind parameter value not found"); - auto paramExpr = paramValue->GetExplicit(); + const Fortran::semantics::MaybeIntExpr paramExpr = + paramValue->GetExplicit(); assert(paramExpr && "derived type kind param not explicit"); - auto init = Fortran::evaluate::ToInt64(paramValue->GetExplicit()); + std::optional<int64_t> init = + Fortran::evaluate::ToInt64(paramValue->GetExplicit()); assert(init && "derived type kind param is not constant"); kinds.emplace_back(*init); } @@ -273,7 +281,7 @@ std::string fir::mangleIntrinsicProcedure(llvm::StringRef intrinsic, name.append(intrinsic.str()).append("."); assert(funTy.getNumResults() == 1 && "only function mangling supported"); name.append(typeToString(funTy.getResult(0))); - auto e = funTy.getNumInputs(); + unsigned e = funTy.getNumInputs(); for (decltype(e) i = 0; i < e; ++i) name.append(".").append(typeToString(funTy.getInput(i))); return name; |