[flang-commits] [flang] 4a3460a - [mlir:FunctionOpInterface] Rename the "type" attribute to "function_type"
River Riddle via flang-commits
flang-commits at lists.llvm.org
Wed Mar 16 17:15:28 PDT 2022
Author: River Riddle
Date: 2022-03-16T17:07:04-07:00
New Revision: 4a3460a7917f1cf514575759e29590b388131fc6
URL: https://github.com/llvm/llvm-project/commit/4a3460a7917f1cf514575759e29590b388131fc6
DIFF: https://github.com/llvm/llvm-project/commit/4a3460a7917f1cf514575759e29590b388131fc6.diff
LOG: [mlir:FunctionOpInterface] Rename the "type" attribute to "function_type"
This removes any potential confusion with the `getType` accessors
which correspond to SSA results of an operation, and makes it
clear what the intent is (i.e. to represent the type of the function).
Differential Revision: https://reviews.llvm.org/D121762
Added:
Modified:
flang/lib/Lower/Allocatable.cpp
flang/lib/Lower/ConvertExpr.cpp
flang/lib/Lower/HostAssociations.cpp
flang/lib/Lower/IO.cpp
flang/lib/Lower/IntrinsicCall.cpp
flang/lib/Lower/Runtime.cpp
flang/lib/Optimizer/Builder/Character.cpp
flang/lib/Optimizer/Builder/Runtime/Assign.cpp
flang/lib/Optimizer/Builder/Runtime/Character.cpp
flang/lib/Optimizer/Builder/Runtime/Command.cpp
flang/lib/Optimizer/Builder/Runtime/Derived.cpp
flang/lib/Optimizer/Builder/Runtime/Inquiry.cpp
flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
flang/lib/Optimizer/Builder/Runtime/Ragged.cpp
flang/lib/Optimizer/Builder/Runtime/Reduction.cpp
flang/lib/Optimizer/Builder/Runtime/Stop.cpp
flang/lib/Optimizer/Builder/Runtime/Transformational.cpp
flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
flang/lib/Optimizer/Dialect/FIROps.cpp
flang/lib/Optimizer/Transforms/AbstractResult.cpp
mlir/docs/Bindings/Python.md
mlir/examples/toy/Ch2/include/toy/Ops.td
mlir/examples/toy/Ch2/mlir/Dialect.cpp
mlir/examples/toy/Ch2/mlir/MLIRGen.cpp
mlir/examples/toy/Ch3/include/toy/Ops.td
mlir/examples/toy/Ch3/mlir/Dialect.cpp
mlir/examples/toy/Ch3/mlir/MLIRGen.cpp
mlir/examples/toy/Ch4/include/toy/Ops.td
mlir/examples/toy/Ch4/mlir/Dialect.cpp
mlir/examples/toy/Ch4/mlir/MLIRGen.cpp
mlir/examples/toy/Ch5/include/toy/Ops.td
mlir/examples/toy/Ch5/mlir/Dialect.cpp
mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp
mlir/examples/toy/Ch5/mlir/MLIRGen.cpp
mlir/examples/toy/Ch6/include/toy/Ops.td
mlir/examples/toy/Ch6/mlir/Dialect.cpp
mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp
mlir/examples/toy/Ch6/mlir/MLIRGen.cpp
mlir/examples/toy/Ch7/include/toy/Ops.td
mlir/examples/toy/Ch7/mlir/Dialect.cpp
mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp
mlir/examples/toy/Ch7/mlir/MLIRGen.cpp
mlir/include/mlir/Dialect/Func/IR/FuncOps.td
mlir/include/mlir/Dialect/GPU/GPUOps.td
mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td
mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
mlir/include/mlir/IR/FunctionInterfaces.h
mlir/include/mlir/IR/FunctionInterfaces.td
mlir/include/mlir/IR/OpBase.td
mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
mlir/lib/Conversion/GPUCommon/GPUOpsLowering.cpp
mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp
mlir/lib/Conversion/LinalgToSPIRV/LinalgToSPIRVPass.cpp
mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
mlir/lib/Dialect/Async/Transforms/AsyncParallelFor.cpp
mlir/lib/Dialect/Async/Transforms/AsyncToAsyncRuntime.cpp
mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp
mlir/lib/Dialect/Func/IR/FuncOps.cpp
mlir/lib/Dialect/Func/Transforms/DecomposeCallGraphTypes.cpp
mlir/lib/Dialect/Func/Transforms/FuncBufferize.cpp
mlir/lib/Dialect/GPU/IR/GPUDialect.cpp
mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp
mlir/lib/Dialect/MemRef/Transforms/NormalizeMemRefs.cpp
mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp
mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp
mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp
mlir/lib/Dialect/Tosa/Transforms/TosaInferShapes.cpp
mlir/lib/ExecutionEngine/JitRunner.cpp
mlir/lib/Target/Cpp/TranslateToCpp.cpp
mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp
mlir/lib/Transforms/Utils/DialectConversion.cpp
mlir/python/mlir/dialects/_func_ops_ext.py
mlir/test/CAPI/ir.c
mlir/test/Dialect/GPU/invalid.mlir
mlir/test/Dialect/GPU/ops.mlir
mlir/test/Dialect/LLVMIR/func.mlir
mlir/test/IR/invalid-func-op.mlir
mlir/test/IR/parser.mlir
mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp
mlir/test/lib/Dialect/Test/TestPatterns.cpp
mlir/test/lib/IR/TestFunc.cpp
mlir/test/lib/IR/TestSlicing.cpp
mlir/test/mlir-lsp-server/hover.test
Removed:
################################################################################
diff --git a/flang/lib/Lower/Allocatable.cpp b/flang/lib/Lower/Allocatable.cpp
index a2ab4a6a576fc..ac0ebacb781d9 100644
--- a/flang/lib/Lower/Allocatable.cpp
+++ b/flang/lib/Lower/Allocatable.cpp
@@ -127,7 +127,7 @@ static void genRuntimeSetBounds(fir::FirOpBuilder &builder, mlir::Location loc,
llvm::SmallVector<mlir::Value> args{box.getAddr(), dimIndex, lowerBound,
upperBound};
llvm::SmallVector<mlir::Value> operands;
- for (auto [fst, snd] : llvm::zip(args, callee.getType().getInputs()))
+ for (auto [fst, snd] : llvm::zip(args, callee.getFunctionType().getInputs()))
operands.emplace_back(builder.createConvert(loc, snd, fst));
builder.create<fir::CallOp>(loc, callee, operands);
}
@@ -144,7 +144,7 @@ static void genRuntimeInitCharacter(fir::FirOpBuilder &builder,
loc, builder)
: fir::runtime::getRuntimeFunc<mkRTKey(AllocatableInitCharacter)>(
loc, builder);
- llvm::ArrayRef<mlir::Type> inputTypes = callee.getType().getInputs();
+ llvm::ArrayRef<mlir::Type> inputTypes = callee.getFunctionType().getInputs();
if (inputTypes.size() != 5)
fir::emitFatalError(
loc, "AllocatableInitCharacter runtime interface not as expected");
@@ -175,7 +175,7 @@ static mlir::Value genRuntimeAllocate(fir::FirOpBuilder &builder,
box.getAddr(), errorManager.hasStat, errorManager.errMsgAddr,
errorManager.sourceFile, errorManager.sourceLine};
llvm::SmallVector<mlir::Value> operands;
- for (auto [fst, snd] : llvm::zip(args, callee.getType().getInputs()))
+ for (auto [fst, snd] : llvm::zip(args, callee.getFunctionType().getInputs()))
operands.emplace_back(builder.createConvert(loc, snd, fst));
return builder.create<fir::CallOp>(loc, callee, operands).getResult(0);
}
@@ -197,7 +197,7 @@ static mlir::Value genRuntimeDeallocate(fir::FirOpBuilder &builder,
boxAddress, errorManager.hasStat, errorManager.errMsgAddr,
errorManager.sourceFile, errorManager.sourceLine};
llvm::SmallVector<mlir::Value> operands;
- for (auto [fst, snd] : llvm::zip(args, callee.getType().getInputs()))
+ for (auto [fst, snd] : llvm::zip(args, callee.getFunctionType().getInputs()))
operands.emplace_back(builder.createConvert(loc, snd, fst));
return builder.create<fir::CallOp>(loc, callee, operands).getResult(0);
}
diff --git a/flang/lib/Lower/ConvertExpr.cpp b/flang/lib/Lower/ConvertExpr.cpp
index 7ccb68677c6f2..2627d8e28224f 100644
--- a/flang/lib/Lower/ConvertExpr.cpp
+++ b/flang/lib/Lower/ConvertExpr.cpp
@@ -2050,15 +2050,17 @@ class ScalarExprLowering {
auto stackSaveFn = fir::factory::getLlvmStackSave(builder);
auto stackSaveSymbol = bldr->getSymbolRefAttr(stackSaveFn.getName());
mlir::Value sp =
- bldr->create<fir::CallOp>(loc, stackSaveFn.getType().getResults(),
- stackSaveSymbol, mlir::ValueRange{})
+ bldr->create<fir::CallOp>(
+ loc, stackSaveFn.getFunctionType().getResults(),
+ stackSaveSymbol, mlir::ValueRange{})
.getResult(0);
stmtCtx.attachCleanup([bldr, loc, sp]() {
auto stackRestoreFn = fir::factory::getLlvmStackRestore(*bldr);
auto stackRestoreSymbol =
bldr->getSymbolRefAttr(stackRestoreFn.getName());
- bldr->create<fir::CallOp>(loc, stackRestoreFn.getType().getResults(),
- stackRestoreSymbol, mlir::ValueRange{sp});
+ bldr->create<fir::CallOp>(
+ loc, stackRestoreFn.getFunctionType().getResults(),
+ stackRestoreSymbol, mlir::ValueRange{sp});
});
}
mlir::Value temp =
@@ -2107,7 +2109,7 @@ class ScalarExprLowering {
mlir::SymbolRefAttr funcSymbolAttr;
bool addHostAssociations = false;
if (!funcPointer) {
- mlir::FunctionType funcOpType = caller.getFuncOp().getType();
+ mlir::FunctionType funcOpType = caller.getFuncOp().getFunctionType();
mlir::SymbolRefAttr symbolAttr =
builder.getSymbolRefAttr(caller.getMangledName());
if (callSiteType.getNumResults() == funcOpType.getNumResults() &&
@@ -2149,7 +2151,7 @@ class ScalarExprLowering {
}
mlir::FunctionType funcType =
- funcPointer ? callSiteType : caller.getFuncOp().getType();
+ funcPointer ? callSiteType : caller.getFuncOp().getFunctionType();
llvm::SmallVector<mlir::Value> operands;
// First operand of indirect call is the function pointer. Cast it to
// required function type for the call to handle procedures that have a
@@ -2970,8 +2972,8 @@ static void genScalarUserDefinedAssignmentCall(fir::FirOpBuilder &builder,
return builder.createConvert(loc, argType, from);
};
assert(func.getNumArguments() == 2);
- mlir::Type lhsType = func.getType().getInput(0);
- mlir::Type rhsType = func.getType().getInput(1);
+ mlir::Type lhsType = func.getFunctionType().getInput(0);
+ mlir::Type rhsType = func.getFunctionType().getInput(1);
mlir::Value lhsArg = prepareUserDefinedArg(builder, loc, lhs, lhsType);
mlir::Value rhsArg = prepareUserDefinedArg(builder, loc, rhs, rhsType);
builder.create<fir::CallOp>(loc, func, mlir::ValueRange{lhsArg, rhsArg});
@@ -4901,7 +4903,7 @@ class ArrayExprLowering {
/// Get the function signature of the LLVM memcpy intrinsic.
mlir::FunctionType memcpyType() {
- return fir::factory::getLlvmMemcpy(builder).getType();
+ return fir::factory::getLlvmMemcpy(builder).getFunctionType();
}
/// Create a call to the LLVM memcpy intrinsic.
@@ -4910,7 +4912,7 @@ class ArrayExprLowering {
mlir::FuncOp memcpyFunc = fir::factory::getLlvmMemcpy(builder);
mlir::SymbolRefAttr funcSymAttr =
builder.getSymbolRefAttr(memcpyFunc.getName());
- mlir::FunctionType funcTy = memcpyFunc.getType();
+ mlir::FunctionType funcTy = memcpyFunc.getFunctionType();
builder.create<fir::CallOp>(loc, funcTy.getResults(), funcSymAttr, args);
}
@@ -4935,7 +4937,7 @@ class ArrayExprLowering {
mlir::Value byteSz = builder.create<mlir::arith::MulIOp>(loc, newSz, eleSz);
mlir::SymbolRefAttr funcSymAttr =
builder.getSymbolRefAttr(reallocFunc.getName());
- mlir::FunctionType funcTy = reallocFunc.getType();
+ mlir::FunctionType funcTy = reallocFunc.getFunctionType();
auto newMem = builder.create<fir::CallOp>(
loc, funcTy.getResults(), funcSymAttr,
llvm::ArrayRef<mlir::Value>{
diff --git a/flang/lib/Lower/HostAssociations.cpp b/flang/lib/Lower/HostAssociations.cpp
index 4c84884658386..503b4c9b8fcde 100644
--- a/flang/lib/Lower/HostAssociations.cpp
+++ b/flang/lib/Lower/HostAssociations.cpp
@@ -515,8 +515,8 @@ void Fortran::lower::HostAssociations::internalProcedureBindings(
mlir::Location loc = converter.getCurrentLocation();
mlir::FuncOp func = builder.getFunction();
mlir::Value tupleArg;
- for (auto [ty, arg] : llvm::reverse(
- llvm::zip(func.getType().getInputs(), func.front().getArguments())))
+ for (auto [ty, arg] : llvm::reverse(llvm::zip(
+ func.getFunctionType().getInputs(), func.front().getArguments())))
if (ty == argTy) {
tupleArg = arg;
break;
diff --git a/flang/lib/Lower/IO.cpp b/flang/lib/Lower/IO.cpp
index fc95e1146ee39..acaea5d75fdf7 100644
--- a/flang/lib/Lower/IO.cpp
+++ b/flang/lib/Lower/IO.cpp
@@ -91,15 +91,14 @@ static constexpr std::tuple<
#ifdef __SIZEOF_INT128__
mkIOKey(OutputInteger128),
#endif
- mkIOKey(InputInteger),
- mkIOKey(OutputReal32), mkIOKey(InputReal32), mkIOKey(OutputReal64),
- mkIOKey(InputReal64), mkIOKey(OutputComplex32), mkIOKey(InputComplex32),
- mkIOKey(OutputComplex64), mkIOKey(InputComplex64), mkIOKey(OutputAscii),
- mkIOKey(InputAscii), mkIOKey(OutputLogical), mkIOKey(InputLogical),
- mkIOKey(SetAccess), mkIOKey(SetAction), mkIOKey(SetAsynchronous),
- mkIOKey(SetCarriagecontrol), mkIOKey(SetEncoding), mkIOKey(SetForm),
- mkIOKey(SetPosition), mkIOKey(SetRecl), mkIOKey(SetStatus),
- mkIOKey(SetFile), mkIOKey(GetNewUnit), mkIOKey(GetSize),
+ mkIOKey(InputInteger), mkIOKey(OutputReal32), mkIOKey(InputReal32),
+ mkIOKey(OutputReal64), mkIOKey(InputReal64), mkIOKey(OutputComplex32),
+ mkIOKey(InputComplex32), mkIOKey(OutputComplex64), mkIOKey(InputComplex64),
+ mkIOKey(OutputAscii), mkIOKey(InputAscii), mkIOKey(OutputLogical),
+ mkIOKey(InputLogical), mkIOKey(SetAccess), mkIOKey(SetAction),
+ mkIOKey(SetAsynchronous), mkIOKey(SetCarriagecontrol), mkIOKey(SetEncoding),
+ mkIOKey(SetForm), mkIOKey(SetPosition), mkIOKey(SetRecl),
+ mkIOKey(SetStatus), mkIOKey(SetFile), mkIOKey(GetNewUnit), mkIOKey(GetSize),
mkIOKey(GetIoLength), mkIOKey(GetIoMsg), mkIOKey(InquireCharacter),
mkIOKey(InquireLogical), mkIOKey(InquirePendingId),
mkIOKey(InquireInteger64), mkIOKey(EndIoStatement)>
@@ -188,9 +187,9 @@ static mlir::Value genEndIO(Fortran::lower::AbstractConverter &converter,
loc, getIoMsg,
mlir::ValueRange{
cookie,
- builder.createConvert(loc, getIoMsg.getType().getInput(1),
+ builder.createConvert(loc, getIoMsg.getFunctionType().getInput(1),
fir::getBase(ioMsgVar)),
- builder.createConvert(loc, getIoMsg.getType().getInput(2),
+ builder.createConvert(loc, getIoMsg.getFunctionType().getInput(2),
fir::getLen(ioMsgVar))});
}
mlir::FuncOp endIoStatement =
@@ -395,7 +394,7 @@ static void genNamelistIO(Fortran::lower::AbstractConverter &converter,
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::Location loc = converter.getCurrentLocation();
makeNextConditionalOn(builder, loc, checkResult, ok);
- mlir::Type argType = funcOp.getType().getInput(1);
+ mlir::Type argType = funcOp.getFunctionType().getInput(1);
mlir::Value groupAddr = getNamelistGroup(converter, symbol, stmtCtx);
groupAddr = builder.createConvert(loc, argType, groupAddr);
llvm::SmallVector<mlir::Value> args = {cookie, groupAddr};
@@ -480,7 +479,7 @@ genOutputItemList(Fortran::lower::AbstractConverter &converter,
fir::emitFatalError(loc, "internal error: could not get evaluate::Expr");
mlir::Type itemTy = converter.genType(*expr);
mlir::FuncOp outputFunc = getOutputFunc(loc, builder, itemTy, isFormatted);
- mlir::Type argType = outputFunc.getType().getInput(1);
+ mlir::Type argType = outputFunc.getFunctionType().getInput(1);
assert((isFormatted || argType.isa<fir::BoxType>()) &&
"expect descriptor for unformatted IO runtime");
llvm::SmallVector<mlir::Value> outputFuncArgs = {cookie};
@@ -496,9 +495,9 @@ genOutputItemList(Fortran::lower::AbstractConverter &converter,
llvm::report_fatal_error(
"internal error: scalar character not in CharBox");
outputFuncArgs.push_back(builder.createConvert(
- loc, outputFunc.getType().getInput(1), fir::getBase(exv)));
+ loc, outputFunc.getFunctionType().getInput(1), fir::getBase(exv)));
outputFuncArgs.push_back(builder.createConvert(
- loc, outputFunc.getType().getInput(2), fir::getLen(exv)));
+ loc, outputFunc.getFunctionType().getInput(2), fir::getLen(exv)));
} else {
fir::ExtendedValue itemBox = converter.genExprValue(expr, stmtCtx, loc);
mlir::Value itemValue = fir::getBase(itemBox);
@@ -573,7 +572,7 @@ static mlir::Value createIoRuntimeCallForItem(mlir::Location loc,
mlir::FuncOp inputFunc,
mlir::Value cookie,
const fir::ExtendedValue &item) {
- mlir::Type argType = inputFunc.getType().getInput(1);
+ mlir::Type argType = inputFunc.getFunctionType().getInput(1);
llvm::SmallVector<mlir::Value> inputFuncArgs = {cookie};
if (argType.isa<fir::BoxType>()) {
mlir::Value box = fir::getBase(item);
@@ -586,8 +585,8 @@ static mlir::Value createIoRuntimeCallForItem(mlir::Location loc,
fir::factory::CharacterExprHelper charHelper{builder, loc};
if (charHelper.isCharacterScalar(itemTy)) {
mlir::Value len = fir::getLen(item);
- inputFuncArgs.push_back(
- builder.createConvert(loc, inputFunc.getType().getInput(2), len));
+ inputFuncArgs.push_back(builder.createConvert(
+ loc, inputFunc.getFunctionType().getInput(2), len));
} else if (itemTy.isa<mlir::IntegerType>()) {
inputFuncArgs.push_back(builder.create<mlir::arith::ConstantOp>(
loc, builder.getI32IntegerAttr(
@@ -627,7 +626,8 @@ static void genInputItemList(Fortran::lower::AbstractConverter &converter,
Fortran::lower::genVectorSubscriptBox(loc, converter, stmtCtx, *expr);
mlir::FuncOp inputFunc = getInputFunc(
loc, builder, vectorSubscriptBox.getElementType(), isFormatted);
- const bool mustBox = inputFunc.getType().getInput(1).isa<fir::BoxType>();
+ const bool mustBox =
+ inputFunc.getFunctionType().getInput(1).isa<fir::BoxType>();
if (!checkResult) {
auto elementalGenerator = [&](const fir::ExtendedValue &element) {
createIoRuntimeCallForItem(loc, builder, inputFunc, cookie,
@@ -651,7 +651,7 @@ static void genInputItemList(Fortran::lower::AbstractConverter &converter,
}
mlir::Type itemTy = converter.genType(*expr);
mlir::FuncOp inputFunc = getInputFunc(loc, builder, itemTy, isFormatted);
- auto itemExv = inputFunc.getType().getInput(1).isa<fir::BoxType>()
+ auto itemExv = inputFunc.getFunctionType().getInput(1).isa<fir::BoxType>()
? converter.genExprBox(*expr, stmtCtx, loc)
: converter.genExprAddr(expr, stmtCtx, loc);
ok = createIoRuntimeCallForItem(loc, builder, inputFunc, cookie, itemExv);
@@ -871,7 +871,7 @@ mlir::Value genIntIOOption(Fortran::lower::AbstractConverter &converter,
Fortran::lower::StatementContext localStatementCtx;
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::FuncOp ioFunc = getIORuntimeFunc<A>(loc, builder);
- mlir::FunctionType ioFuncTy = ioFunc.getType();
+ mlir::FunctionType ioFuncTy = ioFunc.getFunctionType();
mlir::Value expr = fir::getBase(converter.genExprValue(
Fortran::semantics::GetExpr(spec.v), localStatementCtx, loc));
mlir::Value val = builder.createConvert(loc, ioFuncTy.getInput(1), expr);
@@ -888,7 +888,7 @@ mlir::Value genCharIOOption(Fortran::lower::AbstractConverter &converter,
Fortran::lower::StatementContext localStatementCtx;
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::FuncOp ioFunc = getIORuntimeFunc<A>(loc, builder);
- mlir::FunctionType ioFuncTy = ioFunc.getType();
+ mlir::FunctionType ioFuncTy = ioFunc.getFunctionType();
std::tuple<mlir::Value, mlir::Value, mlir::Value> tup =
lowerStringLit(converter, loc, localStatementCtx, spec,
ioFuncTy.getInput(1), ioFuncTy.getInput(2));
@@ -920,7 +920,7 @@ mlir::Value genIOOption<Fortran::parser::FileNameExpr>(
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
// has an extra KIND argument
mlir::FuncOp ioFunc = getIORuntimeFunc<mkIOKey(SetFile)>(loc, builder);
- mlir::FunctionType ioFuncTy = ioFunc.getType();
+ mlir::FunctionType ioFuncTy = ioFunc.getFunctionType();
std::tuple<mlir::Value, mlir::Value, mlir::Value> tup =
lowerStringLit(converter, loc, localStatementCtx, spec,
ioFuncTy.getInput(1), ioFuncTy.getInput(2));
@@ -981,7 +981,7 @@ mlir::Value genIOOption<Fortran::parser::ConnectSpec::CharExpr>(
TODO(loc, "DISPOSE not part of the runtime::io interface");
}
Fortran::lower::StatementContext localStatementCtx;
- mlir::FunctionType ioFuncTy = ioFunc.getType();
+ mlir::FunctionType ioFuncTy = ioFunc.getFunctionType();
std::tuple<mlir::Value, mlir::Value, mlir::Value> tup =
lowerStringLit(converter, loc, localStatementCtx,
std::get<Fortran::parser::ScalarDefaultCharExpr>(spec.t),
@@ -1035,7 +1035,7 @@ mlir::Value genIOOption<Fortran::parser::IoControlSpec::CharExpr>(
break;
}
Fortran::lower::StatementContext localStatementCtx;
- mlir::FunctionType ioFuncTy = ioFunc.getType();
+ mlir::FunctionType ioFuncTy = ioFunc.getFunctionType();
std::tuple<mlir::Value, mlir::Value, mlir::Value> tup =
lowerStringLit(converter, loc, localStatementCtx,
std::get<Fortran::parser::ScalarDefaultCharExpr>(spec.t),
@@ -1203,7 +1203,7 @@ genConditionHandlerCall(Fortran::lower::AbstractConverter &converter,
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::FuncOp enableHandlers =
getIORuntimeFunc<mkIOKey(EnableHandlers)>(loc, builder);
- mlir::Type boolType = enableHandlers.getType().getInput(1);
+ mlir::Type boolType = enableHandlers.getFunctionType().getInput(1);
auto boolValue = [&](bool specifierIsPresent) {
return builder.create<mlir::arith::ConstantOp>(
loc, builder.getIntegerAttr(boolType, specifierIsPresent));
@@ -1558,7 +1558,7 @@ static mlir::Value genBasicIOStmt(Fortran::lower::AbstractConverter &converter,
Fortran::lower::StatementContext stmtCtx;
mlir::Location loc = converter.getCurrentLocation();
mlir::FuncOp beginFunc = getIORuntimeFunc<K>(loc, builder);
- mlir::FunctionType beginFuncTy = beginFunc.getType();
+ mlir::FunctionType beginFuncTy = beginFunc.getFunctionType();
mlir::Value unit = fir::getBase(converter.genExprValue(
getExpr<Fortran::parser::FileUnitNumber>(stmt), stmtCtx, loc));
mlir::Value un = builder.createConvert(loc, beginFuncTy.getInput(0), unit);
@@ -1611,7 +1611,7 @@ genNewunitSpec(Fortran::lower::AbstractConverter &converter, mlir::Location loc,
Fortran::lower::StatementContext stmtCtx;
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::FuncOp ioFunc = getIORuntimeFunc<mkIOKey(GetNewUnit)>(loc, builder);
- mlir::FunctionType ioFuncTy = ioFunc.getType();
+ mlir::FunctionType ioFuncTy = ioFunc.getFunctionType();
const auto *var = Fortran::semantics::GetExpr(newunit->v);
mlir::Value addr = builder.createConvert(
loc, ioFuncTy.getInput(1),
@@ -1635,7 +1635,7 @@ Fortran::lower::genOpenStatement(Fortran::lower::AbstractConverter &converter,
bool hasNewunitSpec = false;
if (hasSpec<Fortran::parser::FileUnitNumber>(stmt)) {
beginFunc = getIORuntimeFunc<mkIOKey(BeginOpenUnit)>(loc, builder);
- mlir::FunctionType beginFuncTy = beginFunc.getType();
+ mlir::FunctionType beginFuncTy = beginFunc.getFunctionType();
mlir::Value unit = fir::getBase(converter.genExprValue(
getExpr<Fortran::parser::FileUnitNumber>(stmt), stmtCtx, loc));
beginArgs.push_back(
@@ -1646,7 +1646,7 @@ Fortran::lower::genOpenStatement(Fortran::lower::AbstractConverter &converter,
hasNewunitSpec = hasSpec<Fortran::parser::ConnectSpec::Newunit>(stmt);
assert(hasNewunitSpec && "missing unit specifier");
beginFunc = getIORuntimeFunc<mkIOKey(BeginOpenNewUnit)>(loc, builder);
- mlir::FunctionType beginFuncTy = beginFunc.getType();
+ mlir::FunctionType beginFuncTy = beginFunc.getFunctionType();
beginArgs.push_back(locToFilename(converter, loc, beginFuncTy.getInput(0)));
beginArgs.push_back(locToLineNo(converter, loc, beginFuncTy.getInput(1)));
}
@@ -1679,7 +1679,7 @@ Fortran::lower::genWaitStatement(Fortran::lower::AbstractConverter &converter,
mlir::FuncOp beginFunc =
hasId ? getIORuntimeFunc<mkIOKey(BeginWait)>(loc, builder)
: getIORuntimeFunc<mkIOKey(BeginWaitAll)>(loc, builder);
- mlir::FunctionType beginFuncTy = beginFunc.getType();
+ mlir::FunctionType beginFuncTy = beginFunc.getFunctionType();
mlir::Value unit = fir::getBase(converter.genExprValue(
getExpr<Fortran::parser::FileUnitNumber>(stmt), stmtCtx, loc));
mlir::Value un = builder.createConvert(loc, beginFuncTy.getInput(0), unit);
@@ -1849,7 +1849,7 @@ genDataTransferStmt(Fortran::lower::AbstractConverter &converter,
isInternalWithDesc, isAsync);
llvm::SmallVector<mlir::Value> ioArgs;
genBeginDataTransferCallArgs<hasIOCtrl>(
- ioArgs, converter, loc, stmt, ioFunc.getType(), isFormatted,
+ ioArgs, converter, loc, stmt, ioFunc.getFunctionType(), isFormatted,
isList || isNml, isInternal, isAsync, descRef, stmtCtx);
mlir::Value cookie =
builder.create<fir::CallOp>(loc, ioFunc, ioArgs).getResult(0);
@@ -1962,7 +1962,7 @@ mlir::Value genInquireSpec<Fortran::parser::InquireSpec::CharVar>(
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::FuncOp specFunc =
getIORuntimeFunc<mkIOKey(InquireCharacter)>(loc, builder);
- mlir::FunctionType specFuncTy = specFunc.getType();
+ mlir::FunctionType specFuncTy = specFunc.getFunctionType();
const auto *varExpr = Fortran::semantics::GetExpr(
std::get<Fortran::parser::ScalarDefaultCharVariable>(var.t));
fir::ExtendedValue str = converter.genExprAddr(varExpr, stmtCtx, loc);
@@ -1992,7 +1992,7 @@ mlir::Value genInquireSpec<Fortran::parser::InquireSpec::IntVar>(
fir::FirOpBuilder &builder = converter.getFirOpBuilder();
mlir::FuncOp specFunc =
getIORuntimeFunc<mkIOKey(InquireInteger64)>(loc, builder);
- mlir::FunctionType specFuncTy = specFunc.getType();
+ mlir::FunctionType specFuncTy = specFunc.getFunctionType();
const auto *varExpr = Fortran::semantics::GetExpr(
std::get<Fortran::parser::ScalarIntVariable>(var.t));
mlir::Value addr = fir::getBase(converter.genExprAddr(varExpr, stmtCtx, loc));
@@ -2030,7 +2030,7 @@ mlir::Value genInquireSpec<Fortran::parser::InquireSpec::LogVar>(
mlir::FuncOp specFunc =
pendId ? getIORuntimeFunc<mkIOKey(InquirePendingId)>(loc, builder)
: getIORuntimeFunc<mkIOKey(InquireLogical)>(loc, builder);
- mlir::FunctionType specFuncTy = specFunc.getType();
+ mlir::FunctionType specFuncTy = specFunc.getFunctionType();
mlir::Value addr = fir::getBase(converter.genExprAddr(
Fortran::semantics::GetExpr(
std::get<Fortran::parser::Scalar<
@@ -2112,7 +2112,7 @@ mlir::Value Fortran::lower::genInquireStatement(
if (inquireFileUnit()) {
// Inquire by unit -- [UNIT=]file-unit-number.
beginFunc = getIORuntimeFunc<mkIOKey(BeginInquireUnit)>(loc, builder);
- mlir::FunctionType beginFuncTy = beginFunc.getType();
+ mlir::FunctionType beginFuncTy = beginFunc.getFunctionType();
beginArgs = {builder.createConvert(loc, beginFuncTy.getInput(0),
fir::getBase(converter.genExprValue(
exprPair.first, stmtCtx, loc))),
@@ -2121,7 +2121,7 @@ mlir::Value Fortran::lower::genInquireStatement(
} else if (inquireFileName()) {
// Inquire by file -- FILE=file-name-expr.
beginFunc = getIORuntimeFunc<mkIOKey(BeginInquireFile)>(loc, builder);
- mlir::FunctionType beginFuncTy = beginFunc.getType();
+ mlir::FunctionType beginFuncTy = beginFunc.getFunctionType();
fir::ExtendedValue file =
converter.genExprAddr(exprPair.first, stmtCtx, loc);
beginArgs = {
@@ -2135,7 +2135,7 @@ mlir::Value Fortran::lower::genInquireStatement(
std::get_if<Fortran::parser::InquireStmt::Iolength>(&stmt.u);
assert(ioLength && "must have an IOLENGTH specifier");
beginFunc = getIORuntimeFunc<mkIOKey(BeginInquireIoLength)>(loc, builder);
- mlir::FunctionType beginFuncTy = beginFunc.getType();
+ mlir::FunctionType beginFuncTy = beginFunc.getFunctionType();
beginArgs = {locToFilename(converter, loc, beginFuncTy.getInput(0)),
locToLineNo(converter, loc, beginFuncTy.getInput(1))};
auto cookie =
diff --git a/flang/lib/Lower/IntrinsicCall.cpp b/flang/lib/Lower/IntrinsicCall.cpp
index 57774e5abdcb6..289b1869bfa5d 100644
--- a/flang/lib/Lower/IntrinsicCall.cpp
+++ b/flang/lib/Lower/IntrinsicCall.cpp
@@ -1390,7 +1390,7 @@ mlir::FuncOp IntrinsicLibrary::getWrapper(GeneratorType generator,
}
} else {
// Wrapper was already built, ensure it has the sought type
- assert(function.getType() == funcType &&
+ assert(function.getFunctionType() == funcType &&
"conflict between intrinsic wrapper types");
}
return function;
@@ -1435,7 +1435,7 @@ IntrinsicLibrary::getRuntimeCallGenerator(llvm::StringRef name,
fir::emitFatalError(loc, buffer);
}
- mlir::FunctionType actualFuncType = funcOp.getType();
+ mlir::FunctionType actualFuncType = funcOp.getFunctionType();
assert(actualFuncType.getNumResults() == soughtFuncType.getNumResults() &&
actualFuncType.getNumInputs() == soughtFuncType.getNumInputs() &&
actualFuncType.getNumResults() == 1 && "Bad intrinsic match");
diff --git a/flang/lib/Lower/Runtime.cpp b/flang/lib/Lower/Runtime.cpp
index a6c5bb105744a..8e65ab5749a4f 100644
--- a/flang/lib/Lower/Runtime.cpp
+++ b/flang/lib/Lower/Runtime.cpp
@@ -58,7 +58,7 @@ void Fortran::lower::genStopStatement(
[&](const fir::CharBoxValue &x) {
callee = fir::runtime::getRuntimeFunc<mkRTKey(StopStatementText)>(
loc, builder);
- calleeType = callee.getType();
+ calleeType = callee.getFunctionType();
// Creates a pair of operands for the CHARACTER and its LEN.
operands.push_back(
builder.createConvert(loc, calleeType.getInput(0), x.getAddr()));
@@ -68,7 +68,7 @@ void Fortran::lower::genStopStatement(
[&](fir::UnboxedValue x) {
callee = fir::runtime::getRuntimeFunc<mkRTKey(StopStatement)>(
loc, builder);
- calleeType = callee.getType();
+ calleeType = callee.getFunctionType();
mlir::Value cast =
builder.createConvert(loc, calleeType.getInput(0), x);
operands.push_back(cast);
@@ -79,7 +79,7 @@ void Fortran::lower::genStopStatement(
});
} else {
callee = fir::runtime::getRuntimeFunc<mkRTKey(StopStatement)>(loc, builder);
- calleeType = callee.getType();
+ calleeType = callee.getFunctionType();
operands.push_back(
builder.createIntegerConstant(loc, calleeType.getInput(0), 0));
}
@@ -125,7 +125,7 @@ mlir::Value Fortran::lower::genAssociated(fir::FirOpBuilder &builder,
fir::runtime::getRuntimeFunc<mkRTKey(PointerIsAssociatedWith)>(loc,
builder);
llvm::SmallVector<mlir::Value> args = fir::runtime::createArguments(
- builder, loc, func.getType(), pointer, target);
+ builder, loc, func.getFunctionType(), pointer, target);
return builder.create<fir::CallOp>(loc, func, args).getResult(0);
}
@@ -144,7 +144,7 @@ void Fortran::lower::genDateAndTime(fir::FirOpBuilder &builder,
mlir::Value values) {
mlir::FuncOp callee =
fir::runtime::getRuntimeFunc<mkRTKey(DateAndTime)>(loc, builder);
- mlir::FunctionType funcTy = callee.getType();
+ mlir::FunctionType funcTy = callee.getFunctionType();
mlir::Type idxTy = builder.getIndexType();
mlir::Value zero;
auto splitArg = [&](llvm::Optional<fir::CharBoxValue> arg,
@@ -185,7 +185,7 @@ void Fortran::lower::genRandomInit(fir::FirOpBuilder &builder,
mlir::FuncOp func =
fir::runtime::getRuntimeFunc<mkRTKey(RandomInit)>(loc, builder);
llvm::SmallVector<mlir::Value> args = fir::runtime::createArguments(
- builder, loc, func.getType(), repeatable, imageDistinct);
+ builder, loc, func.getFunctionType(), repeatable, imageDistinct);
builder.create<fir::CallOp>(loc, func, args);
}
@@ -193,7 +193,7 @@ void Fortran::lower::genRandomNumber(fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value harvest) {
mlir::FuncOp func =
fir::runtime::getRuntimeFunc<mkRTKey(RandomNumber)>(loc, builder);
- mlir::FunctionType funcTy = func.getType();
+ mlir::FunctionType funcTy = func.getFunctionType();
mlir::Value sourceFile = fir::factory::locationToFilename(builder, loc);
mlir::Value sourceLine =
fir::factory::locationToLineNo(builder, loc, funcTy.getInput(2));
@@ -226,7 +226,7 @@ void Fortran::lower::genRandomSeed(fir::FirOpBuilder &builder,
default:
llvm::report_fatal_error("invalid RANDOM_SEED argument index");
}
- mlir::FunctionType funcTy = func.getType();
+ mlir::FunctionType funcTy = func.getFunctionType();
mlir::Value sourceFile = fir::factory::locationToFilename(builder, loc);
mlir::Value sourceLine =
fir::factory::locationToLineNo(builder, loc, funcTy.getInput(2));
@@ -242,7 +242,7 @@ void Fortran::lower::genTransfer(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::FuncOp func =
fir::runtime::getRuntimeFunc<mkRTKey(Transfer)>(loc, builder);
- mlir::FunctionType fTy = func.getType();
+ mlir::FunctionType fTy = func.getFunctionType();
mlir::Value sourceFile = fir::factory::locationToFilename(builder, loc);
mlir::Value sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(4));
@@ -258,7 +258,7 @@ void Fortran::lower::genTransferSize(fir::FirOpBuilder &builder,
mlir::Value size) {
mlir::FuncOp func =
fir::runtime::getRuntimeFunc<mkRTKey(TransferSize)>(loc, builder);
- mlir::FunctionType fTy = func.getType();
+ mlir::FunctionType fTy = func.getFunctionType();
mlir::Value sourceFile = fir::factory::locationToFilename(builder, loc);
mlir::Value sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(4));
@@ -274,7 +274,7 @@ void Fortran::lower::genSystemClock(fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value count,
mlir::Value rate, mlir::Value max) {
auto makeCall = [&](mlir::FuncOp func, mlir::Value arg) {
- mlir::Type kindTy = func.getType().getInput(0);
+ mlir::Type kindTy = func.getFunctionType().getInput(0);
int integerKind = 8;
if (auto intType =
fir::unwrapRefType(arg.getType()).dyn_cast<mlir::IntegerType>())
diff --git a/flang/lib/Optimizer/Builder/Character.cpp b/flang/lib/Optimizer/Builder/Character.cpp
index 7819ce8e69f4a..f29cbe65f2fb6 100644
--- a/flang/lib/Optimizer/Builder/Character.cpp
+++ b/flang/lib/Optimizer/Builder/Character.cpp
@@ -365,7 +365,7 @@ void fir::factory::CharacterExprHelper::createCopy(
auto totalBytes = builder.create<arith::MulIOp>(loc, kindBytes, castCount);
auto notVolatile = builder.createBool(loc, false);
auto memmv = getLlvmMemmove(builder);
- auto argTys = memmv.getType().getInputs();
+ auto argTys = memmv.getFunctionType().getInputs();
auto toPtr = builder.createConvert(loc, argTys[0], toBuff);
auto fromPtr = builder.createConvert(loc, argTys[1], fromBuff);
builder.create<fir::CallOp>(
diff --git a/flang/lib/Optimizer/Builder/Runtime/Assign.cpp b/flang/lib/Optimizer/Builder/Runtime/Assign.cpp
index 71345e5924b78..54eef2094a82e 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Assign.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Assign.cpp
@@ -16,7 +16,7 @@ using namespace Fortran::runtime;
void fir::runtime::genAssign(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value destBox, mlir::Value sourceBox) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(Assign)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
diff --git a/flang/lib/Optimizer/Builder/Runtime/Character.cpp b/flang/lib/Optimizer/Builder/Runtime/Character.cpp
index 2575e6538925c..2e6825fdb695b 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Character.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Character.cpp
@@ -26,7 +26,7 @@ static void genCharacterSearch(FN func, fir::FirOpBuilder &builder,
mlir::Value string1Box, mlir::Value string2Box,
mlir::Value backBox, mlir::Value kind) {
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(6));
@@ -66,7 +66,7 @@ static void genAdjust(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value stringBox,
mlir::FuncOp &adjustFunc) {
- auto fTy = adjustFunc.getType();
+ auto fTy = adjustFunc.getFunctionType();
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
auto sourceFile = fir::factory::locationToFilename(builder, loc);
@@ -111,7 +111,7 @@ fir::runtime::genCharCompare(fir::FirOpBuilder &builder, mlir::Location loc,
default:
llvm_unreachable("runtime does not support CHARACTER KIND");
}
- auto fTy = beginFunc.getType();
+ auto fTy = beginFunc.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, fTy, lhsBuff, rhsBuff,
lhsLen, rhsLen);
auto tri = builder.create<fir::CallOp>(loc, beginFunc, args).getResult(0);
@@ -161,7 +161,7 @@ mlir::Value fir::runtime::genIndex(fir::FirOpBuilder &builder,
fir::emitFatalError(
loc, "unsupported CHARACTER kind value. Runtime expects 1, 2, or 4.");
}
- auto fTy = indexFunc.getType();
+ auto fTy = indexFunc.getFunctionType();
auto args =
fir::runtime::createArguments(builder, loc, fTy, stringBase, stringLen,
substringBase, substringLen, back);
@@ -182,7 +182,7 @@ void fir::runtime::genRepeat(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value stringBox,
mlir::Value ncopies) {
auto repeatFunc = fir::runtime::getRuntimeFunc<mkRTKey(Repeat)>(loc, builder);
- auto fTy = repeatFunc.getType();
+ auto fTy = repeatFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(4));
@@ -195,7 +195,7 @@ void fir::runtime::genRepeat(fir::FirOpBuilder &builder, mlir::Location loc,
void fir::runtime::genTrim(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value stringBox) {
auto trimFunc = fir::runtime::getRuntimeFunc<mkRTKey(Trim)>(loc, builder);
- auto fTy = trimFunc.getType();
+ auto fTy = trimFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
@@ -234,7 +234,7 @@ mlir::Value fir::runtime::genScan(fir::FirOpBuilder &builder,
fir::emitFatalError(
loc, "unsupported CHARACTER kind value. Runtime expects 1, 2, or 4.");
}
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, fTy, stringBase,
stringLen, setBase, setLen, back);
return builder.create<fir::CallOp>(loc, func, args).getResult(0);
@@ -271,7 +271,7 @@ mlir::Value fir::runtime::genVerify(fir::FirOpBuilder &builder,
fir::emitFatalError(
loc, "unsupported CHARACTER kind value. Runtime expects 1, 2, or 4.");
}
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, fTy, stringBase,
stringLen, setBase, setLen, back);
return builder.create<fir::CallOp>(loc, func, args).getResult(0);
diff --git a/flang/lib/Optimizer/Builder/Runtime/Command.cpp b/flang/lib/Optimizer/Builder/Runtime/Command.cpp
index bfa390be6bf24..817fceb62be5d 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Command.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Command.cpp
@@ -47,7 +47,8 @@ void fir::runtime::genGetCommandArgument(fir::FirOpBuilder &builder,
// "STATUS" or "ERRMSG" parameters.
if (!isAbsent(value) || status || !isAbsent(errmsg)) {
llvm::SmallVector<mlir::Value> args = fir::runtime::createArguments(
- builder, loc, argumentValueFunc.getType(), number, value, errmsg);
+ builder, loc, argumentValueFunc.getFunctionType(), number, value,
+ errmsg);
valueResult =
builder.create<fir::CallOp>(loc, argumentValueFunc, args).getResult(0);
}
@@ -63,7 +64,7 @@ void fir::runtime::genGetCommandArgument(fir::FirOpBuilder &builder,
// Only run `ArgumentLength` intrinsic if "LENGTH" parameter provided
if (length) {
llvm::SmallVector<mlir::Value> args = fir::runtime::createArguments(
- builder, loc, argumentLengthFunc.getType(), number);
+ builder, loc, argumentLengthFunc.getFunctionType(), number);
mlir::Value result =
builder.create<fir::CallOp>(loc, argumentLengthFunc, args).getResult(0);
const mlir::Value valueLoaded = builder.create<fir::LoadOp>(loc, length);
@@ -89,7 +90,7 @@ void fir::runtime::genGetEnvironmentVariable(
if (!isAbsent(value) || status || !isAbsent(errmsg) || length) {
sourceFile = fir::factory::locationToFilename(builder, loc);
sourceLine = fir::factory::locationToLineNo(
- builder, loc, valueFunc.getType().getInput(5));
+ builder, loc, valueFunc.getFunctionType().getInput(5));
}
mlir::Value valueResult;
@@ -97,8 +98,8 @@ void fir::runtime::genGetEnvironmentVariable(
// "VALUE", "STATUS" or "ERRMSG" parameters.
if (!isAbsent(value) || status || !isAbsent(errmsg)) {
llvm::SmallVector<mlir::Value> args = fir::runtime::createArguments(
- builder, loc, valueFunc.getType(), name, value, trimName, errmsg,
- sourceFile, sourceLine);
+ builder, loc, valueFunc.getFunctionType(), name, value, trimName,
+ errmsg, sourceFile, sourceLine);
valueResult =
builder.create<fir::CallOp>(loc, valueFunc, args).getResult(0);
}
@@ -113,9 +114,9 @@ void fir::runtime::genGetEnvironmentVariable(
// Only run `EnvVariableLength` intrinsic if "LENGTH" parameter provided
if (length) {
- llvm::SmallVector<mlir::Value> args =
- fir::runtime::createArguments(builder, loc, lengthFunc.getType(), name,
- trimName, sourceFile, sourceLine);
+ llvm::SmallVector<mlir::Value> args = fir::runtime::createArguments(
+ builder, loc, lengthFunc.getFunctionType(), name, trimName, sourceFile,
+ sourceLine);
mlir::Value result =
builder.create<fir::CallOp>(loc, lengthFunc, args).getResult(0);
const mlir::Value lengthLoaded = builder.create<fir::LoadOp>(loc, length);
diff --git a/flang/lib/Optimizer/Builder/Runtime/Derived.cpp b/flang/lib/Optimizer/Builder/Runtime/Derived.cpp
index c5c67984db221..0f2bf274cc75f 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Derived.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Derived.cpp
@@ -17,7 +17,7 @@ void fir::runtime::genDerivedTypeInitialize(fir::FirOpBuilder &builder,
mlir::Location loc,
mlir::Value box) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(Initialize)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(2));
@@ -29,7 +29,7 @@ void fir::runtime::genDerivedTypeInitialize(fir::FirOpBuilder &builder,
void fir::runtime::genDerivedTypeDestroy(fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value box) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(Destroy)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, fTy, box);
builder.create<fir::CallOp>(loc, func, args);
}
diff --git a/flang/lib/Optimizer/Builder/Runtime/Inquiry.cpp b/flang/lib/Optimizer/Builder/Runtime/Inquiry.cpp
index 6c20919e0ab18..bae7ea64234ca 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Inquiry.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Inquiry.cpp
@@ -19,7 +19,7 @@ mlir::Value fir::runtime::genLboundDim(fir::FirOpBuilder &builder,
mlir::Value dim) {
mlir::FuncOp lboundFunc =
fir::runtime::getRuntimeFunc<mkRTKey(LboundDim)>(loc, builder);
- auto fTy = lboundFunc.getType();
+ auto fTy = lboundFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
@@ -36,7 +36,7 @@ void fir::runtime::genUbound(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value kind) {
mlir::FuncOp uboundFunc =
fir::runtime::getRuntimeFunc<mkRTKey(Ubound)>(loc, builder);
- auto fTy = uboundFunc.getType();
+ auto fTy = uboundFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(2));
@@ -52,7 +52,7 @@ mlir::Value fir::runtime::genSizeDim(fir::FirOpBuilder &builder,
mlir::Value dim) {
mlir::FuncOp sizeFunc =
fir::runtime::getRuntimeFunc<mkRTKey(SizeDim)>(loc, builder);
- auto fTy = sizeFunc.getType();
+ auto fTy = sizeFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
@@ -67,7 +67,7 @@ mlir::Value fir::runtime::genSize(fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value array) {
mlir::FuncOp sizeFunc =
fir::runtime::getRuntimeFunc<mkRTKey(Size)>(loc, builder);
- auto fTy = sizeFunc.getType();
+ auto fTy = sizeFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(2));
diff --git a/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp b/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
index f3db5412e7be3..e9e3d9713a0f5 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Numeric.cpp
@@ -235,7 +235,7 @@ mlir::Value fir::runtime::genExponent(fir::FirOpBuilder &builder,
} else
fir::emitFatalError(loc, "unsupported real kind in Exponent lowering");
- auto funcTy = func.getType();
+ auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
builder.createConvert(loc, funcTy.getInput(0), x)};
@@ -259,7 +259,7 @@ mlir::Value fir::runtime::genFraction(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "unsupported real kind in Fraction lowering");
- auto funcTy = func.getType();
+ auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
builder.createConvert(loc, funcTy.getInput(0), x)};
@@ -284,7 +284,7 @@ mlir::Value fir::runtime::genNearest(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "unsupported REAL kind in Nearest lowering");
- auto funcTy = func.getType();
+ auto funcTy = func.getFunctionType();
mlir::Type sTy = s.getType();
mlir::Value zero = builder.createRealZeroConstant(loc, sTy);
@@ -319,7 +319,7 @@ mlir::Value fir::runtime::genRRSpacing(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "unsupported real kind in RRSpacing lowering");
- auto funcTy = func.getType();
+ auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
builder.createConvert(loc, funcTy.getInput(0), x)};
@@ -344,7 +344,7 @@ mlir::Value fir::runtime::genScale(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "unsupported REAL kind in Scale lowering");
- auto funcTy = func.getType();
+ auto funcTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, funcTy, x, i);
return builder.create<fir::CallOp>(loc, func, args).getResult(0);
@@ -368,7 +368,7 @@ mlir::Value fir::runtime::genSetExponent(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "unsupported real kind in Fraction lowering");
- auto funcTy = func.getType();
+ auto funcTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, funcTy, x, i);
return builder.create<fir::CallOp>(loc, func, args).getResult(0);
@@ -391,7 +391,7 @@ mlir::Value fir::runtime::genSpacing(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "unsupported real kind in Spacing lowering");
- auto funcTy = func.getType();
+ auto funcTy = func.getFunctionType();
llvm::SmallVector<mlir::Value> args = {
builder.createConvert(loc, funcTy.getInput(0), x)};
diff --git a/flang/lib/Optimizer/Builder/Runtime/Ragged.cpp b/flang/lib/Optimizer/Builder/Runtime/Ragged.cpp
index bdbbb78a75cf6..dc51bfa2b00ab 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Ragged.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Ragged.cpp
@@ -23,7 +23,7 @@ void fir::runtime::genRaggedArrayAllocate(mlir::Location loc,
auto i64Ty = builder.getIntegerType(64);
auto func =
fir::runtime::getRuntimeFunc<mkRTKey(RaggedArrayAllocate)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto i1Ty = builder.getIntegerType(1);
fir::SequenceType::Shape shape = {
static_cast<fir::SequenceType::Extent>(rank)};
@@ -61,7 +61,7 @@ void fir::runtime::genRaggedArrayDeallocate(mlir::Location loc,
mlir::Value header) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(RaggedArrayDeallocate)>(
loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto args = fir::runtime::createArguments(builder, loc, fTy, header);
builder.create<fir::CallOp>(loc, func, args);
}
diff --git a/flang/lib/Optimizer/Builder/Runtime/Reduction.cpp b/flang/lib/Optimizer/Builder/Runtime/Reduction.cpp
index 750968d130381..8f8ca1c3d334f 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Reduction.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Reduction.cpp
@@ -374,7 +374,7 @@ template <typename FN>
mlir::Value genSpecial2Args(FN func, fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value maskBox,
mlir::Value dim) {
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(2));
@@ -390,7 +390,7 @@ template <typename FN>
static void genReduction2Args(FN func, fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value resultBox,
mlir::Value maskBox, mlir::Value dim) {
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(4));
@@ -407,7 +407,7 @@ static void genReduction3Args(FN func, fir::FirOpBuilder &builder,
mlir::Value arrayBox, mlir::Value dim,
mlir::Value maskBox) {
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(4));
@@ -424,7 +424,7 @@ static void genReduction4Args(FN func, fir::FirOpBuilder &builder,
mlir::Location loc, mlir::Value resultBox,
mlir::Value arrayBox, mlir::Value maskBox,
mlir::Value kind, mlir::Value back) {
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(4));
@@ -441,7 +441,7 @@ static void
genReduction5Args(FN func, fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value arrayBox, mlir::Value dim,
mlir::Value maskBox, mlir::Value kind, mlir::Value back) {
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(5));
@@ -503,7 +503,7 @@ void fir::runtime::genCountDim(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value maskBox,
mlir::Value dim, mlir::Value kind) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(CountDim)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(5));
@@ -571,7 +571,7 @@ mlir::Value fir::runtime::genMaxval(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "invalid type in Maxval lowering");
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(2));
@@ -597,7 +597,7 @@ void fir::runtime::genMaxvalChar(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value maskBox) {
auto func =
fir::runtime::getRuntimeFunc<mkRTKey(MaxvalCharacter)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
@@ -644,7 +644,7 @@ void fir::runtime::genMinvalChar(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value maskBox) {
auto func =
fir::runtime::getRuntimeFunc<mkRTKey(MinvalCharacter)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
@@ -690,7 +690,7 @@ mlir::Value fir::runtime::genMinval(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "invalid type in Minval lowering");
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(2));
@@ -757,7 +757,7 @@ mlir::Value fir::runtime::genProduct(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "invalid type in Product lowering");
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
if (fir::isa_complex(eleTy)) {
auto sourceLine =
@@ -834,7 +834,7 @@ mlir::Value fir::runtime::genDotProduct(fir::FirOpBuilder &builder,
else
fir::emitFatalError(loc, "invalid type in DotProduct lowering");
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
if (fir::isa_complex(eleTy)) {
@@ -907,7 +907,7 @@ mlir::Value fir::runtime::genSum(fir::FirOpBuilder &builder, mlir::Location loc,
else
fir::emitFatalError(loc, "invalid type in Sum lowering");
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
if (fir::isa_complex(eleTy)) {
auto sourceLine =
diff --git a/flang/lib/Optimizer/Builder/Runtime/Stop.cpp b/flang/lib/Optimizer/Builder/Runtime/Stop.cpp
index 588363029abc2..1248eaf49d759 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Stop.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Stop.cpp
@@ -17,8 +17,8 @@ using namespace Fortran::runtime;
void fir::runtime::genExit(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value status) {
auto exitFunc = fir::runtime::getRuntimeFunc<mkRTKey(Exit)>(loc, builder);
- llvm::SmallVector<mlir::Value> args =
- fir::runtime::createArguments(builder, loc, exitFunc.getType(), status);
+ llvm::SmallVector<mlir::Value> args = fir::runtime::createArguments(
+ builder, loc, exitFunc.getFunctionType(), status);
builder.create<fir::CallOp>(loc, exitFunc, args);
}
@@ -27,7 +27,7 @@ void fir::runtime::genReportFatalUserError(fir::FirOpBuilder &builder,
llvm::StringRef message) {
mlir::FuncOp crashFunc =
fir::runtime::getRuntimeFunc<mkRTKey(ReportFatalUserError)>(loc, builder);
- mlir::FunctionType funcTy = crashFunc.getType();
+ mlir::FunctionType funcTy = crashFunc.getFunctionType();
mlir::Value msgVal = fir::getBase(
fir::factory::createStringLiteral(builder, loc, message.str() + '\0'));
mlir::Value sourceLine =
diff --git a/flang/lib/Optimizer/Builder/Runtime/Transformational.cpp b/flang/lib/Optimizer/Builder/Runtime/Transformational.cpp
index 9d2a18caf145b..24a0e4b930dd0 100644
--- a/flang/lib/Optimizer/Builder/Runtime/Transformational.cpp
+++ b/flang/lib/Optimizer/Builder/Runtime/Transformational.cpp
@@ -24,7 +24,7 @@ void fir::runtime::genCshift(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value arrayBox,
mlir::Value shiftBox, mlir::Value dimBox) {
auto cshiftFunc = fir::runtime::getRuntimeFunc<mkRTKey(Cshift)>(loc, builder);
- auto fTy = cshiftFunc.getType();
+ auto fTy = cshiftFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(5));
@@ -40,7 +40,7 @@ void fir::runtime::genCshiftVector(fir::FirOpBuilder &builder,
mlir::Value arrayBox, mlir::Value shiftBox) {
auto cshiftFunc =
fir::runtime::getRuntimeFunc<mkRTKey(CshiftVector)>(loc, builder);
- auto fTy = cshiftFunc.getType();
+ auto fTy = cshiftFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
@@ -57,7 +57,7 @@ void fir::runtime::genEoshift(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value dimBox) {
auto eoshiftFunc =
fir::runtime::getRuntimeFunc<mkRTKey(Eoshift)>(loc, builder);
- auto fTy = eoshiftFunc.getType();
+ auto fTy = eoshiftFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(6));
@@ -74,7 +74,7 @@ void fir::runtime::genEoshiftVector(fir::FirOpBuilder &builder,
mlir::Value boundBox) {
auto eoshiftFunc =
fir::runtime::getRuntimeFunc<mkRTKey(EoshiftVector)>(loc, builder);
- auto fTy = eoshiftFunc.getType();
+ auto fTy = eoshiftFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
@@ -91,7 +91,7 @@ void fir::runtime::genMatmul(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value matrixABox,
mlir::Value matrixBBox) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(Matmul)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(4));
@@ -106,7 +106,7 @@ void fir::runtime::genPack(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value arrayBox,
mlir::Value maskBox, mlir::Value vectorBox) {
auto packFunc = fir::runtime::getRuntimeFunc<mkRTKey(Pack)>(loc, builder);
- auto fTy = packFunc.getType();
+ auto fTy = packFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(5));
@@ -122,7 +122,7 @@ void fir::runtime::genReshape(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value shapeBox, mlir::Value padBox,
mlir::Value orderBox) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(Reshape)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(6));
@@ -137,7 +137,7 @@ void fir::runtime::genSpread(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value sourceBox,
mlir::Value dim, mlir::Value ncopies) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(Spread)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(5));
@@ -151,7 +151,7 @@ void fir::runtime::genSpread(fir::FirOpBuilder &builder, mlir::Location loc,
void fir::runtime::genTranspose(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value sourceBox) {
auto func = fir::runtime::getRuntimeFunc<mkRTKey(Transpose)>(loc, builder);
- auto fTy = func.getType();
+ auto fTy = func.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(3));
@@ -165,7 +165,7 @@ void fir::runtime::genUnpack(fir::FirOpBuilder &builder, mlir::Location loc,
mlir::Value resultBox, mlir::Value vectorBox,
mlir::Value maskBox, mlir::Value fieldBox) {
auto unpackFunc = fir::runtime::getRuntimeFunc<mkRTKey(Unpack)>(loc, builder);
- auto fTy = unpackFunc.getType();
+ auto fTy = unpackFunc.getFunctionType();
auto sourceFile = fir::factory::locationToFilename(builder, loc);
auto sourceLine =
fir::factory::locationToLineNo(builder, loc, fTy.getInput(5));
diff --git a/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp b/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
index 791e70427f25a..3626d7534da80 100644
--- a/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
+++ b/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
@@ -454,7 +454,7 @@ class TargetRewrite : public TargetRewriteBase<TargetRewrite> {
/// Rewrite the signatures and body of the `FuncOp`s in the module for
/// the immediately subsequent target code gen.
void convertSignature(mlir::FuncOp func) {
- auto funcTy = func.getType().cast<mlir::FunctionType>();
+ auto funcTy = func.getFunctionType().cast<mlir::FunctionType>();
if (hasPortableSignature(funcTy))
return;
llvm::SmallVector<mlir::Type> newResTys;
@@ -543,7 +543,7 @@ class TargetRewrite : public TargetRewriteBase<TargetRewrite> {
// return ops as required. These fixups are done in place.
auto loc = func.getLoc();
const auto fixupSize = fixups.size();
- const auto oldArgTys = func.getType().getInputs();
+ const auto oldArgTys = func.getFunctionType().getInputs();
int offset = 0;
for (std::remove_const_t<decltype(fixupSize)> i = 0; i < fixupSize; ++i) {
const auto &fixup = fixups[i];
diff --git a/flang/lib/Optimizer/Dialect/FIROps.cpp b/flang/lib/Optimizer/Dialect/FIROps.cpp
index bd0acad1bd22e..518377cff6c78 100644
--- a/flang/lib/Optimizer/Dialect/FIROps.cpp
+++ b/flang/lib/Optimizer/Dialect/FIROps.cpp
@@ -669,7 +669,7 @@ void fir::CallOp::build(mlir::OpBuilder &builder, mlir::OperationState &result,
mlir::FuncOp callee, mlir::ValueRange operands) {
result.addOperands(operands);
result.addAttribute(getCalleeAttrNameStr(), SymbolRefAttr::get(callee));
- result.addTypes(callee.getType().getResults());
+ result.addTypes(callee.getFunctionType().getResults());
}
void fir::CallOp::build(mlir::OpBuilder &builder, mlir::OperationState &result,
diff --git a/flang/lib/Optimizer/Transforms/AbstractResult.cpp b/flang/lib/Optimizer/Transforms/AbstractResult.cpp
index f885ffbdd8cbb..1946ccdfd69f9 100644
--- a/flang/lib/Optimizer/Transforms/AbstractResult.cpp
+++ b/flang/lib/Optimizer/Transforms/AbstractResult.cpp
@@ -222,7 +222,7 @@ class AbstractResultOpt : public fir::AbstractResultOptBase<AbstractResultOpt> {
/*newArg=*/{}};
// Convert function type itself if it has an abstract result
- auto funcTy = func.getType().cast<mlir::FunctionType>();
+ auto funcTy = func.getFunctionType().cast<mlir::FunctionType>();
if (mustConvertCallOrFunc(funcTy)) {
func.setType(getNewFunctionType(funcTy, options));
unsigned zero = 0;
diff --git a/mlir/docs/Bindings/Python.md b/mlir/docs/Bindings/Python.md
index cb4f3b1bf0d09..c00446d281e5c 100644
--- a/mlir/docs/Bindings/Python.md
+++ b/mlir/docs/Bindings/Python.md
@@ -661,7 +661,7 @@ with Context():
# Operations can be created in a generic way.
func = Operation.create(
"func.func", results=[], operands=[],
- attributes={"type":TypeAttr.get(FunctionType.get([], []))},
+ attributes={"function_type":TypeAttr.get(FunctionType.get([], []))},
successors=None, regions=1)
# The result will be downcasted to the concrete `OpView` subclass if
# available.
diff --git a/mlir/examples/toy/Ch2/include/toy/Ops.td b/mlir/examples/toy/Ch2/include/toy/Ops.td
index e59d4d5c7d988..2b12a63753141 100644
--- a/mlir/examples/toy/Ch2/include/toy/Ops.td
+++ b/mlir/examples/toy/Ch2/include/toy/Ops.td
@@ -135,7 +135,7 @@ def FuncOp : Toy_Op<"func", [
let arguments = (ins
SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type
+ TypeAttrOf<FunctionType>:$function_type
);
let regions = (region AnyRegion:$body);
@@ -149,10 +149,10 @@ def FuncOp : Toy_Op<"func", [
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
}];
let hasCustomAssemblyFormat = 1;
let skipDefaultBuilders = 1;
diff --git a/mlir/examples/toy/Ch2/mlir/Dialect.cpp b/mlir/examples/toy/Ch2/mlir/Dialect.cpp
index 0727f9466b80a..f6cf3fdec9315 100644
--- a/mlir/examples/toy/Ch2/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch2/mlir/Dialect.cpp
@@ -252,7 +252,7 @@ mlir::LogicalResult ReturnOp::verify() {
return emitOpError() << "expects at most 1 return operand";
// The operand number and types must match the function signature.
- const auto &results = function.getType().getResults();
+ const auto &results = function.getFunctionType().getResults();
if (getNumOperands() != results.size())
return emitOpError() << "does not return the same number of values ("
<< getNumOperands() << ") as the enclosing function ("
diff --git a/mlir/examples/toy/Ch2/mlir/MLIRGen.cpp b/mlir/examples/toy/Ch2/mlir/MLIRGen.cpp
index 5d352dfa501e0..27a2feb0fd940 100644
--- a/mlir/examples/toy/Ch2/mlir/MLIRGen.cpp
+++ b/mlir/examples/toy/Ch2/mlir/MLIRGen.cpp
@@ -161,8 +161,8 @@ class MLIRGenImpl {
} else if (returnOp.hasOperand()) {
// Otherwise, if this return operation has an operand then add a result to
// the function.
- function.setType(builder.getFunctionType(function.getType().getInputs(),
- getType(VarType{})));
+ function.setType(builder.getFunctionType(
+ function.getFunctionType().getInputs(), getType(VarType{})));
}
return function;
diff --git a/mlir/examples/toy/Ch3/include/toy/Ops.td b/mlir/examples/toy/Ch3/include/toy/Ops.td
index a52d827219d1f..4d4ba0b047099 100644
--- a/mlir/examples/toy/Ch3/include/toy/Ops.td
+++ b/mlir/examples/toy/Ch3/include/toy/Ops.td
@@ -134,7 +134,7 @@ def FuncOp : Toy_Op<"func", [
let arguments = (ins
SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type
+ TypeAttrOf<FunctionType>:$function_type
);
let regions = (region AnyRegion:$body);
@@ -148,10 +148,10 @@ def FuncOp : Toy_Op<"func", [
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
}];
let hasCustomAssemblyFormat = 1;
let skipDefaultBuilders = 1;
diff --git a/mlir/examples/toy/Ch3/mlir/Dialect.cpp b/mlir/examples/toy/Ch3/mlir/Dialect.cpp
index c4f851c408ef1..4b8b978a818ff 100644
--- a/mlir/examples/toy/Ch3/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch3/mlir/Dialect.cpp
@@ -252,7 +252,7 @@ mlir::LogicalResult ReturnOp::verify() {
return emitOpError() << "expects at most 1 return operand";
// The operand number and types must match the function signature.
- const auto &results = function.getType().getResults();
+ const auto &results = function.getFunctionType().getResults();
if (getNumOperands() != results.size())
return emitOpError() << "does not return the same number of values ("
<< getNumOperands() << ") as the enclosing function ("
diff --git a/mlir/examples/toy/Ch3/mlir/MLIRGen.cpp b/mlir/examples/toy/Ch3/mlir/MLIRGen.cpp
index 5d352dfa501e0..27a2feb0fd940 100644
--- a/mlir/examples/toy/Ch3/mlir/MLIRGen.cpp
+++ b/mlir/examples/toy/Ch3/mlir/MLIRGen.cpp
@@ -161,8 +161,8 @@ class MLIRGenImpl {
} else if (returnOp.hasOperand()) {
// Otherwise, if this return operation has an operand then add a result to
// the function.
- function.setType(builder.getFunctionType(function.getType().getInputs(),
- getType(VarType{})));
+ function.setType(builder.getFunctionType(
+ function.getFunctionType().getInputs(), getType(VarType{})));
}
return function;
diff --git a/mlir/examples/toy/Ch4/include/toy/Ops.td b/mlir/examples/toy/Ch4/include/toy/Ops.td
index c535fff829ee5..1e33affe38a54 100644
--- a/mlir/examples/toy/Ch4/include/toy/Ops.td
+++ b/mlir/examples/toy/Ch4/include/toy/Ops.td
@@ -164,7 +164,7 @@ def FuncOp : Toy_Op<"func", [
let arguments = (ins
SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type
+ TypeAttrOf<FunctionType>:$function_type
);
let regions = (region AnyRegion:$body);
@@ -178,10 +178,10 @@ def FuncOp : Toy_Op<"func", [
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
}];
let hasCustomAssemblyFormat = 1;
let skipDefaultBuilders = 1;
diff --git a/mlir/examples/toy/Ch4/mlir/Dialect.cpp b/mlir/examples/toy/Ch4/mlir/Dialect.cpp
index 3d6effdd26a9f..1bd6c9fdc8dc1 100644
--- a/mlir/examples/toy/Ch4/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch4/mlir/Dialect.cpp
@@ -303,7 +303,7 @@ mlir::Region *FuncOp::getCallableRegion() { return &getBody(); }
/// Returns the results types that the callable region produces when
/// executed.
llvm::ArrayRef<mlir::Type> FuncOp::getCallableResults() {
- return getType().getResults();
+ return getFunctionType().getResults();
}
//===----------------------------------------------------------------------===//
@@ -364,7 +364,7 @@ mlir::LogicalResult ReturnOp::verify() {
return emitOpError() << "expects at most 1 return operand";
// The operand number and types must match the function signature.
- const auto &results = function.getType().getResults();
+ const auto &results = function.getFunctionType().getResults();
if (getNumOperands() != results.size())
return emitOpError() << "does not return the same number of values ("
<< getNumOperands() << ") as the enclosing function ("
diff --git a/mlir/examples/toy/Ch4/mlir/MLIRGen.cpp b/mlir/examples/toy/Ch4/mlir/MLIRGen.cpp
index 114f077524d39..a68c72a62113c 100644
--- a/mlir/examples/toy/Ch4/mlir/MLIRGen.cpp
+++ b/mlir/examples/toy/Ch4/mlir/MLIRGen.cpp
@@ -161,8 +161,8 @@ class MLIRGenImpl {
} else if (returnOp.hasOperand()) {
// Otherwise, if this return operation has an operand then add a result to
// the function.
- function.setType(builder.getFunctionType(function.getType().getInputs(),
- getType(VarType{})));
+ function.setType(builder.getFunctionType(
+ function.getFunctionType().getInputs(), getType(VarType{})));
}
// If this function isn't main, then set the visibility to private.
diff --git a/mlir/examples/toy/Ch5/include/toy/Ops.td b/mlir/examples/toy/Ch5/include/toy/Ops.td
index 386d0c71920ee..790cc9b04b273 100644
--- a/mlir/examples/toy/Ch5/include/toy/Ops.td
+++ b/mlir/examples/toy/Ch5/include/toy/Ops.td
@@ -164,7 +164,7 @@ def FuncOp : Toy_Op<"func", [
let arguments = (ins
SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type
+ TypeAttrOf<FunctionType>:$function_type
);
let regions = (region AnyRegion:$body);
@@ -178,10 +178,10 @@ def FuncOp : Toy_Op<"func", [
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
}];
let hasCustomAssemblyFormat = 1;
let skipDefaultBuilders = 1;
diff --git a/mlir/examples/toy/Ch5/mlir/Dialect.cpp b/mlir/examples/toy/Ch5/mlir/Dialect.cpp
index c3b28417f9cc3..ecff26468b29c 100644
--- a/mlir/examples/toy/Ch5/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch5/mlir/Dialect.cpp
@@ -303,7 +303,7 @@ mlir::Region *FuncOp::getCallableRegion() { return &getBody(); }
/// Returns the results types that the callable region produces when
/// executed.
llvm::ArrayRef<mlir::Type> FuncOp::getCallableResults() {
- return getType().getResults();
+ return getFunctionType().getResults();
}
//===----------------------------------------------------------------------===//
@@ -364,7 +364,7 @@ mlir::LogicalResult ReturnOp::verify() {
return emitOpError() << "expects at most 1 return operand";
// The operand number and types must match the function signature.
- const auto &results = function.getType().getResults();
+ const auto &results = function.getFunctionType().getResults();
if (getNumOperands() != results.size())
return emitOpError() << "does not return the same number of values ("
<< getNumOperands() << ") as the enclosing function ("
diff --git a/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp b/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp
index 36cd3d8708a39..e459477ad7b31 100644
--- a/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp
+++ b/mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp
@@ -214,15 +214,15 @@ struct FuncOpLowering : public OpConversionPattern<toy::FuncOp> {
return failure();
// Verify that the given main has no inputs and results.
- if (op.getNumArguments() || op.getType().getNumResults()) {
+ if (op.getNumArguments() || op.getFunctionType().getNumResults()) {
return rewriter.notifyMatchFailure(op, [](Diagnostic &diag) {
diag << "expected 'main' to have 0 inputs and 0 results";
});
}
// Create a new non-toy function, with the same region.
- auto func =
- rewriter.create<mlir::FuncOp>(op.getLoc(), op.getName(), op.getType());
+ auto func = rewriter.create<mlir::FuncOp>(op.getLoc(), op.getName(),
+ op.getFunctionType());
rewriter.inlineRegionBefore(op.getRegion(), func.getBody(), func.end());
rewriter.eraseOp(op);
return success();
diff --git a/mlir/examples/toy/Ch5/mlir/MLIRGen.cpp b/mlir/examples/toy/Ch5/mlir/MLIRGen.cpp
index 114f077524d39..a68c72a62113c 100644
--- a/mlir/examples/toy/Ch5/mlir/MLIRGen.cpp
+++ b/mlir/examples/toy/Ch5/mlir/MLIRGen.cpp
@@ -161,8 +161,8 @@ class MLIRGenImpl {
} else if (returnOp.hasOperand()) {
// Otherwise, if this return operation has an operand then add a result to
// the function.
- function.setType(builder.getFunctionType(function.getType().getInputs(),
- getType(VarType{})));
+ function.setType(builder.getFunctionType(
+ function.getFunctionType().getInputs(), getType(VarType{})));
}
// If this function isn't main, then set the visibility to private.
diff --git a/mlir/examples/toy/Ch6/include/toy/Ops.td b/mlir/examples/toy/Ch6/include/toy/Ops.td
index d0bceb1f6aa53..0e0390480b0cc 100644
--- a/mlir/examples/toy/Ch6/include/toy/Ops.td
+++ b/mlir/examples/toy/Ch6/include/toy/Ops.td
@@ -164,7 +164,7 @@ def FuncOp : Toy_Op<"func", [
let arguments = (ins
SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type
+ TypeAttrOf<FunctionType>:$function_type
);
let regions = (region AnyRegion:$body);
@@ -178,10 +178,10 @@ def FuncOp : Toy_Op<"func", [
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
}];
let hasCustomAssemblyFormat = 1;
let skipDefaultBuilders = 1;
diff --git a/mlir/examples/toy/Ch6/mlir/Dialect.cpp b/mlir/examples/toy/Ch6/mlir/Dialect.cpp
index c3b28417f9cc3..ecff26468b29c 100644
--- a/mlir/examples/toy/Ch6/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch6/mlir/Dialect.cpp
@@ -303,7 +303,7 @@ mlir::Region *FuncOp::getCallableRegion() { return &getBody(); }
/// Returns the results types that the callable region produces when
/// executed.
llvm::ArrayRef<mlir::Type> FuncOp::getCallableResults() {
- return getType().getResults();
+ return getFunctionType().getResults();
}
//===----------------------------------------------------------------------===//
@@ -364,7 +364,7 @@ mlir::LogicalResult ReturnOp::verify() {
return emitOpError() << "expects at most 1 return operand";
// The operand number and types must match the function signature.
- const auto &results = function.getType().getResults();
+ const auto &results = function.getFunctionType().getResults();
if (getNumOperands() != results.size())
return emitOpError() << "does not return the same number of values ("
<< getNumOperands() << ") as the enclosing function ("
diff --git a/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp b/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp
index 36cd3d8708a39..e459477ad7b31 100644
--- a/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp
+++ b/mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp
@@ -214,15 +214,15 @@ struct FuncOpLowering : public OpConversionPattern<toy::FuncOp> {
return failure();
// Verify that the given main has no inputs and results.
- if (op.getNumArguments() || op.getType().getNumResults()) {
+ if (op.getNumArguments() || op.getFunctionType().getNumResults()) {
return rewriter.notifyMatchFailure(op, [](Diagnostic &diag) {
diag << "expected 'main' to have 0 inputs and 0 results";
});
}
// Create a new non-toy function, with the same region.
- auto func =
- rewriter.create<mlir::FuncOp>(op.getLoc(), op.getName(), op.getType());
+ auto func = rewriter.create<mlir::FuncOp>(op.getLoc(), op.getName(),
+ op.getFunctionType());
rewriter.inlineRegionBefore(op.getRegion(), func.getBody(), func.end());
rewriter.eraseOp(op);
return success();
diff --git a/mlir/examples/toy/Ch6/mlir/MLIRGen.cpp b/mlir/examples/toy/Ch6/mlir/MLIRGen.cpp
index 114f077524d39..a68c72a62113c 100644
--- a/mlir/examples/toy/Ch6/mlir/MLIRGen.cpp
+++ b/mlir/examples/toy/Ch6/mlir/MLIRGen.cpp
@@ -161,8 +161,8 @@ class MLIRGenImpl {
} else if (returnOp.hasOperand()) {
// Otherwise, if this return operation has an operand then add a result to
// the function.
- function.setType(builder.getFunctionType(function.getType().getInputs(),
- getType(VarType{})));
+ function.setType(builder.getFunctionType(
+ function.getFunctionType().getInputs(), getType(VarType{})));
}
// If this function isn't main, then set the visibility to private.
diff --git a/mlir/examples/toy/Ch7/include/toy/Ops.td b/mlir/examples/toy/Ch7/include/toy/Ops.td
index 5a1d98a6fe75c..5f84d5f05e8bd 100644
--- a/mlir/examples/toy/Ch7/include/toy/Ops.td
+++ b/mlir/examples/toy/Ch7/include/toy/Ops.td
@@ -183,7 +183,7 @@ def FuncOp : Toy_Op<"func", [
let arguments = (ins
SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type
+ TypeAttrOf<FunctionType>:$function_type
);
let regions = (region AnyRegion:$body);
@@ -197,10 +197,10 @@ def FuncOp : Toy_Op<"func", [
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
}];
let hasCustomAssemblyFormat = 1;
let skipDefaultBuilders = 1;
diff --git a/mlir/examples/toy/Ch7/mlir/Dialect.cpp b/mlir/examples/toy/Ch7/mlir/Dialect.cpp
index f683a37fc70d1..bd2edceccfe1a 100644
--- a/mlir/examples/toy/Ch7/mlir/Dialect.cpp
+++ b/mlir/examples/toy/Ch7/mlir/Dialect.cpp
@@ -330,7 +330,7 @@ mlir::Region *FuncOp::getCallableRegion() { return &getBody(); }
/// Returns the results types that the callable region produces when
/// executed.
llvm::ArrayRef<mlir::Type> FuncOp::getCallableResults() {
- return getType().getResults();
+ return getFunctionType().getResults();
}
//===----------------------------------------------------------------------===//
@@ -391,7 +391,7 @@ mlir::LogicalResult ReturnOp::verify() {
return emitOpError() << "expects at most 1 return operand";
// The operand number and types must match the function signature.
- const auto &results = function.getType().getResults();
+ const auto &results = function.getFunctionType().getResults();
if (getNumOperands() != results.size())
return emitOpError() << "does not return the same number of values ("
<< getNumOperands() << ") as the enclosing function ("
diff --git a/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp b/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp
index 36cd3d8708a39..e459477ad7b31 100644
--- a/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp
+++ b/mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp
@@ -214,15 +214,15 @@ struct FuncOpLowering : public OpConversionPattern<toy::FuncOp> {
return failure();
// Verify that the given main has no inputs and results.
- if (op.getNumArguments() || op.getType().getNumResults()) {
+ if (op.getNumArguments() || op.getFunctionType().getNumResults()) {
return rewriter.notifyMatchFailure(op, [](Diagnostic &diag) {
diag << "expected 'main' to have 0 inputs and 0 results";
});
}
// Create a new non-toy function, with the same region.
- auto func =
- rewriter.create<mlir::FuncOp>(op.getLoc(), op.getName(), op.getType());
+ auto func = rewriter.create<mlir::FuncOp>(op.getLoc(), op.getName(),
+ op.getFunctionType());
rewriter.inlineRegionBefore(op.getRegion(), func.getBody(), func.end());
rewriter.eraseOp(op);
return success();
diff --git a/mlir/examples/toy/Ch7/mlir/MLIRGen.cpp b/mlir/examples/toy/Ch7/mlir/MLIRGen.cpp
index f8a1a713da06a..478f0de5670f3 100644
--- a/mlir/examples/toy/Ch7/mlir/MLIRGen.cpp
+++ b/mlir/examples/toy/Ch7/mlir/MLIRGen.cpp
@@ -216,8 +216,9 @@ class MLIRGenImpl {
} else if (returnOp.hasOperand()) {
// Otherwise, if this return operation has an operand then add a result to
// the function.
- function.setType(builder.getFunctionType(function.getType().getInputs(),
- *returnOp.operand_type_begin()));
+ function.setType(
+ builder.getFunctionType(function.getFunctionType().getInputs(),
+ *returnOp.operand_type_begin()));
}
// If this function isn't main, then set the visibility to private.
@@ -519,7 +520,7 @@ class MLIRGenImpl {
}
mlir::toy::FuncOp calledFunc = calledFuncIt->second;
return builder.create<GenericCallOp>(
- location, calledFunc.getType().getResult(0),
+ location, calledFunc.getFunctionType().getResult(0),
mlir::SymbolRefAttr::get(builder.getContext(), callee), operands);
}
diff --git a/mlir/include/mlir/Dialect/Func/IR/FuncOps.td b/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
index e405271aa62ec..ca5df245ef616 100644
--- a/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
+++ b/mlir/include/mlir/Dialect/Func/IR/FuncOps.td
@@ -57,7 +57,7 @@ def CallOp : Func_Op<"call",
OpBuilder<(ins "FuncOp":$callee, CArg<"ValueRange", "{}">:$operands), [{
$_state.addOperands(operands);
$_state.addAttribute("callee", SymbolRefAttr::get(callee));
- $_state.addTypes(callee.getType().getResults());
+ $_state.addTypes(callee.getFunctionType().getResults());
}]>,
OpBuilder<(ins "SymbolRefAttr":$callee, "TypeRange":$results,
CArg<"ValueRange", "{}">:$operands), [{
@@ -250,7 +250,7 @@ def FuncOp : Func_Op<"func", [
}];
let arguments = (ins SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type,
+ TypeAttrOf<FunctionType>:$function_type,
OptionalAttr<StrAttr>:$sym_visibility);
let regions = (region AnyRegion:$body);
@@ -295,17 +295,17 @@ def FuncOp : Func_Op<"func", [
/// Returns the results types that the callable region produces when
/// executed.
- ArrayRef<Type> getCallableResults() { return getType().getResults(); }
+ ArrayRef<Type> getCallableResults() { return getFunctionType().getResults(); }
//===------------------------------------------------------------------===//
// FunctionOpInterface Methods
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
//===------------------------------------------------------------------===//
// SymbolOpInterface Methods
diff --git a/mlir/include/mlir/Dialect/GPU/GPUOps.td b/mlir/include/mlir/Dialect/GPU/GPUOps.td
index 4b07d24f95260..9b42ecfaae215 100644
--- a/mlir/include/mlir/Dialect/GPU/GPUOps.td
+++ b/mlir/include/mlir/Dialect/GPU/GPUOps.td
@@ -221,6 +221,7 @@ def GPU_GPUFuncOp : GPU_Op<"func", [
attribution.
}];
+ let arguments = (ins TypeAttrOf<FunctionType>:$function_type);
let regions = (region AnyRegion:$body);
let skipDefaultBuilders = 1;
@@ -250,7 +251,7 @@ def GPU_GPUFuncOp : GPU_Op<"func", [
/// the workgroup memory
ArrayRef<BlockArgument> getWorkgroupAttributions() {
auto begin =
- std::next(getBody().args_begin(), getType().getNumInputs());
+ std::next(getBody().args_begin(), getFunctionType().getNumInputs());
auto end = std::next(begin, getNumWorkgroupAttributions());
return {begin, end};
}
@@ -261,7 +262,7 @@ def GPU_GPUFuncOp : GPU_Op<"func", [
/// Returns the number of buffers located in the private memory.
unsigned getNumPrivateAttributions() {
- return getBody().getNumArguments() - getType().getNumInputs() -
+ return getBody().getNumArguments() - getFunctionType().getNumInputs() -
getNumWorkgroupAttributions();
}
@@ -272,7 +273,7 @@ def GPU_GPUFuncOp : GPU_Op<"func", [
// memory.
auto begin =
std::next(getBody().args_begin(),
- getType().getNumInputs() + getNumWorkgroupAttributions());
+ getFunctionType().getNumInputs() + getNumWorkgroupAttributions());
return {begin, getBody().args_end()};
}
@@ -287,16 +288,14 @@ def GPU_GPUFuncOp : GPU_Op<"func", [
}
/// Returns the type of this function.
- /// FIXME: We should drive this via the ODS `type` param.
- FunctionType getType() {
- return getTypeAttr().getValue().cast<FunctionType>();
- }
+ /// FIXME: Remove when GPU uses prefixed accessors.
+ FunctionType getFunctionType() { return function_type(); }
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
/// Returns the keywords used in the custom syntax for this Op.
static StringRef getWorkgroupKeyword() { return "workgroup"; }
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td
index 4507ddfdfaf3b..903decbab05bf 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOpBase.td
@@ -80,6 +80,10 @@ def LLVM_PrimitiveType : Type<
"::mlir::LLVM::LLVMFunctionType>()">]>,
"primitive LLVM type">;
+// Type constraint accepting any LLVM function type.
+def LLVM_FunctionType : Type<CPred<"$_self.isa<::mlir::LLVM::LLVMFunctionType>()">,
+ "LLVM function type", "::mlir::LLVM::LLVMFunctionType">;
+
// Type constraint accepting any LLVM floating point type.
def LLVM_AnyFloat : Type<
CPred<"::mlir::LLVM::isCompatibleFloatingPointType($_self)">,
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
index a69a5c62902d6..05cd5870bf1f9 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
@@ -537,7 +537,7 @@ def LLVM_CallOp : LLVM_Op<"call",
let builders = [
OpBuilder<(ins "LLVMFuncOp":$func, "ValueRange":$operands,
CArg<"ArrayRef<NamedAttribute>", "{}">:$attributes), [{
- Type resultType = func.getType().getReturnType();
+ Type resultType = func.getFunctionType().getReturnType();
if (!resultType.isa<LLVM::LLVMVoidType>())
$_state.addTypes(resultType);
$_state.addAttribute("callee", SymbolRefAttr::get(func));
@@ -874,7 +874,7 @@ def LLVM_AddressOfOp : LLVM_Op<"mlir.addressof", [NoSideEffect]> {
CArg<"ArrayRef<NamedAttribute>", "{}">:$attrs),
[{
build($_builder, $_state,
- LLVM::LLVMPointerType::get(func.getType()), func.getName());
+ LLVM::LLVMPointerType::get(func.getFunctionType()), func.getName());
$_state.addAttributes(attrs);
}]>
];
@@ -1236,11 +1236,14 @@ def LLVM_LLVMFuncOp : LLVM_Op<"func", [
```
}];
- let arguments = (ins DefaultValuedAttr<Linkage, "Linkage::External">:$linkage,
- UnitAttr:$dso_local,
- OptionalAttr<FlatSymbolRefAttr>:$personality,
- OptionalAttr<StrAttr>:$garbageCollector,
- OptionalAttr<ArrayAttr>:$passthrough);
+ let arguments = (ins
+ TypeAttrOf<LLVM_FunctionType>:$function_type,
+ DefaultValuedAttr<Linkage, "Linkage::External">:$linkage,
+ UnitAttr:$dso_local,
+ OptionalAttr<FlatSymbolRefAttr>:$personality,
+ OptionalAttr<StrAttr>:$garbageCollector,
+ OptionalAttr<ArrayAttr>:$passthrough
+ );
let regions = (region AnyRegion:$body);
@@ -1259,21 +1262,13 @@ def LLVM_LLVMFuncOp : LLVM_Op<"func", [
// to match the signature of the function.
Block *addEntryBlock();
- LLVMFunctionType getType() {
- return getTypeAttr().getValue().cast<LLVMFunctionType>();
- }
- bool isVarArg() { return getType().isVarArg(); }
+ bool isVarArg() { return getFunctionType().isVarArg(); }
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getParams(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getParams(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getReturnTypes(); }
-
- /// Hook for FunctionOpInterface, called after verifying that the 'type'
- /// attribute is present. This can check for preconditions of the
- /// getNumArguments hook not failing.
- LogicalResult verifyType();
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getReturnTypes(); }
}];
let hasCustomAssemblyFormat = 1;
diff --git a/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td b/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
index e9c7cca4cf32d..a8dbbc082c3cc 100644
--- a/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
+++ b/mlir/include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td
@@ -657,7 +657,7 @@ def PDLInterp_FuncOp : PDLInterp_Op<"func", [
let arguments = (ins
SymbolNameAttr:$sym_name,
- TypeAttrOf<FunctionType>:$type
+ TypeAttrOf<FunctionType>:$function_type
);
let regions = (region MinSizedRegion<1>:$body);
@@ -673,10 +673,10 @@ def PDLInterp_FuncOp : PDLInterp_Op<"func", [
//===------------------------------------------------------------------===//
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
}];
let hasCustomAssemblyFormat = 1;
let skipDefaultBuilders = 1;
diff --git a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
index 709db1fbdc46f..7f7c686a24632 100644
--- a/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
+++ b/mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
@@ -287,7 +287,7 @@ def SPV_FuncOp : SPV_Op<"func", [
}];
let arguments = (ins
- TypeAttr:$type,
+ TypeAttrOf<FunctionType>:$function_type,
StrAttr:$sym_name,
SPV_FunctionControlAttr:$function_control
);
@@ -309,16 +309,14 @@ def SPV_FuncOp : SPV_Op<"func", [
let extraClassDeclaration = [{
/// Returns the type of this function.
- /// FIXME: We should drive this via the ODS `type` param.
- FunctionType getType() {
- return getTypeAttr().getValue().cast<FunctionType>();
- }
+ /// FIXME: Remove when SPIRV uses prefixed accessors.
+ FunctionType getFunctionType() { return function_type(); }
/// Returns the argument types of this function.
- ArrayRef<Type> getArgumentTypes() { return getType().getInputs(); }
+ ArrayRef<Type> getArgumentTypes() { return getFunctionType().getInputs(); }
/// Returns the result types of this function.
- ArrayRef<Type> getResultTypes() { return getType().getResults(); }
+ ArrayRef<Type> getResultTypes() { return getFunctionType().getResults(); }
/// Hook for FunctionOpInterface, called after verifying that the 'type'
/// attribute is present and checks if it holds a function type. Ensures
diff --git a/mlir/include/mlir/IR/FunctionInterfaces.h b/mlir/include/mlir/IR/FunctionInterfaces.h
index 28c36dd511f5f..69a54390fcf5e 100644
--- a/mlir/include/mlir/IR/FunctionInterfaces.h
+++ b/mlir/include/mlir/IR/FunctionInterfaces.h
@@ -26,7 +26,7 @@ namespace mlir {
namespace function_interface_impl {
/// Return the name of the attribute used for function types.
-inline StringRef getTypeAttrName() { return "type"; }
+inline StringRef getTypeAttrName() { return "function_type"; }
/// Return the name of the attribute used for function argument attributes.
inline StringRef getArgDictAttrName() { return "arg_attrs"; }
@@ -207,7 +207,7 @@ Attribute removeResultAttr(ConcreteType op, unsigned index, StringAttr name) {
/// method on FunctionOpInterface::Trait.
template <typename ConcreteOp>
LogicalResult verifyTrait(ConcreteOp op) {
- if (!op.getTypeAttr())
+ if (!op.getFunctionTypeAttr())
return op.emitOpError("requires a type attribute '")
<< function_interface_impl::getTypeAttrName() << '\'';
diff --git a/mlir/include/mlir/IR/FunctionInterfaces.td b/mlir/include/mlir/IR/FunctionInterfaces.td
index 73251cbf27e06..e1182bf8219cc 100644
--- a/mlir/include/mlir/IR/FunctionInterfaces.td
+++ b/mlir/include/mlir/IR/FunctionInterfaces.td
@@ -37,9 +37,8 @@ def FunctionOpInterface : OpInterface<"FunctionOpInterface"> {
The function, aside from implementing the various interface methods,
should have the following ODS arguments:
- - `type` (required)
+ - `function_type` (required)
* A TypeAttr that holds the signature type of the function.
- * TODO: this field will soon be renamed to something less generic.
- `arg_attrs` (optional)
* An ArrayAttr of DictionaryAttr that contains attribute dictionaries
@@ -73,7 +72,7 @@ def FunctionOpInterface : OpInterface<"FunctionOpInterface"> {
"::mlir::Type", "cloneTypeWith", (ins
"::mlir::TypeRange":$inputs, "::mlir::TypeRange":$results
), /*methodBody=*/[{}], /*defaultImplementation=*/[{
- return $_op.getType().clone(inputs, results);
+ return $_op.getFunctionType().clone(inputs, results);
}]>,
InterfaceMethod<[{
@@ -258,13 +257,13 @@ def FunctionOpInterface : OpInterface<"FunctionOpInterface"> {
}
/// Return the attribute containing the type of this function.
- TypeAttr getTypeAttr() {
+ TypeAttr getFunctionTypeAttr() {
return this->getOperation()->template getAttrOfType<TypeAttr>(
getTypeAttrName());
}
/// Return the type of this function.
- Type getType() { return getTypeAttr().getValue(); }
+ Type getFunctionType() { return getFunctionTypeAttr().getValue(); }
//===------------------------------------------------------------------===//
// Argument and Result Handling
diff --git a/mlir/include/mlir/IR/OpBase.td b/mlir/include/mlir/IR/OpBase.td
index a44767831c282..844489aa5591b 100644
--- a/mlir/include/mlir/IR/OpBase.td
+++ b/mlir/include/mlir/IR/OpBase.td
@@ -1269,7 +1269,7 @@ def TypeAttr : TypeAttrBase<"::mlir::Type", "any type attribute"> {
}
class TypeAttrOf<Type ty>
- : TypeAttrBase<ty.cppClassName, "type attribute of " # ty.description> {
+ : TypeAttrBase<ty.cppClassName, "type attribute of " # ty.summary> {
let constBuilderCall = "::mlir::TypeAttr::get($0)";
}
diff --git a/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp b/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
index 5c337b5f189ee..24f0f307875b6 100644
--- a/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
+++ b/mlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp
@@ -1042,8 +1042,9 @@ void ConvertAsyncToLLVMPass::runOnOperation() {
target.addIllegalDialect<AsyncDialect>();
// Add dynamic legality constraints to apply conversions defined above.
- target.addDynamicallyLegalOp<FuncOp>(
- [&](FuncOp op) { return converter.isSignatureLegal(op.getType()); });
+ target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
+ return converter.isSignatureLegal(op.getFunctionType());
+ });
target.addDynamicallyLegalOp<func::ReturnOp>([&](func::ReturnOp op) {
return converter.isLegal(op.getOperandTypes());
});
diff --git a/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp b/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
index 39bebd28f1e58..5119e3681e595 100644
--- a/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
+++ b/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
@@ -127,7 +127,7 @@ prependResAttrsToArgAttrs(OpBuilder &builder,
static void wrapForExternalCallers(OpBuilder &rewriter, Location loc,
LLVMTypeConverter &typeConverter,
FuncOp funcOp, LLVM::LLVMFuncOp newFuncOp) {
- auto type = funcOp.getType();
+ auto type = funcOp.getFunctionType();
SmallVector<NamedAttribute, 4> attributes;
filterFuncAttributes(funcOp->getAttrs(), /*filterArgAndResAttrs=*/false,
attributes);
@@ -190,7 +190,7 @@ static void wrapExternalFunction(OpBuilder &builder, Location loc,
Type wrapperType;
bool resultIsNowArg;
std::tie(wrapperType, resultIsNowArg) =
- typeConverter.convertFunctionTypeCWrapper(funcOp.getType());
+ typeConverter.convertFunctionTypeCWrapper(funcOp.getFunctionType());
// This conversion can only fail if it could not convert one of the argument
// types. But since it has been applied to a non-wrapper function before, it
// should have failed earlier and not reach this point at all.
@@ -210,7 +210,7 @@ static void wrapExternalFunction(OpBuilder &builder, Location loc,
builder.setInsertionPointToStart(newFuncOp.addEntryBlock());
// Get a ValueRange containing arguments.
- FunctionType type = funcOp.getType();
+ FunctionType type = funcOp.getFunctionType();
SmallVector<Value, 8> args;
args.reserve(type.getNumInputs());
ValueRange wrapperArgsRange(newFuncOp.getArguments());
@@ -288,7 +288,8 @@ struct FuncOpConversionBase : public ConvertOpToLLVMPattern<FuncOp> {
auto varargsAttr = funcOp->getAttrOfType<BoolAttr>("func.varargs");
TypeConverter::SignatureConversion result(funcOp.getNumArguments());
auto llvmType = getTypeConverter()->convertFunctionSignature(
- funcOp.getType(), varargsAttr && varargsAttr.getValue(), result);
+ funcOp.getFunctionType(), varargsAttr && varargsAttr.getValue(),
+ result);
if (!llvmType)
return nullptr;
@@ -401,7 +402,7 @@ struct BarePtrFuncOpConversion : public FuncOpConversionBase {
// Store the type of memref-typed arguments before the conversion so that we
// can promote them to MemRef descriptor at the beginning of the function.
SmallVector<Type, 8> oldArgTypes =
- llvm::to_vector<8>(funcOp.getType().getInputs());
+ llvm::to_vector<8>(funcOp.getFunctionType().getInputs());
auto newFuncOp = convertFuncOpToLLVMFuncOp(funcOp, rewriter);
if (!newFuncOp)
diff --git a/mlir/lib/Conversion/GPUCommon/GPUOpsLowering.cpp b/mlir/lib/Conversion/GPUCommon/GPUOpsLowering.cpp
index e1af2709602ea..6cb5a5bdf2e02 100644
--- a/mlir/lib/Conversion/GPUCommon/GPUOpsLowering.cpp
+++ b/mlir/lib/Conversion/GPUCommon/GPUOpsLowering.cpp
@@ -41,7 +41,7 @@ GPUFuncOpLowering::matchAndRewrite(gpu::GPUFuncOp gpuFuncOp, OpAdaptor adaptor,
}
// Rewrite the original GPU function to an LLVM function.
- auto funcType = typeConverter->convertType(gpuFuncOp.getType())
+ auto funcType = typeConverter->convertType(gpuFuncOp.getFunctionType())
.template cast<LLVM::LLVMPointerType>()
.getElementType();
@@ -49,7 +49,7 @@ GPUFuncOpLowering::matchAndRewrite(gpu::GPUFuncOp gpuFuncOp, OpAdaptor adaptor,
TypeConverter::SignatureConversion signatureConversion(
gpuFuncOp.front().getNumArguments());
getTypeConverter()->convertFunctionSignature(
- gpuFuncOp.getType(), /*isVariadic=*/false, signatureConversion);
+ gpuFuncOp.getFunctionType(), /*isVariadic=*/false, signatureConversion);
// Create the new function operation. Only copy those attributes that are
// not specific to function modeling.
diff --git a/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp b/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp
index 866d087dd1747..514330a5a9254 100644
--- a/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp
+++ b/mlir/lib/Conversion/GPUToSPIRV/GPUToSPIRV.cpp
@@ -184,7 +184,7 @@ lowerAsEntryFunction(gpu::GPUFuncOp funcOp, TypeConverter &typeConverter,
ConversionPatternRewriter &rewriter,
spirv::EntryPointABIAttr entryPointInfo,
ArrayRef<spirv::InterfaceVarABIAttr> argABIInfo) {
- auto fnType = funcOp.getType();
+ auto fnType = funcOp.getFunctionType();
if (fnType.getNumResults()) {
funcOp.emitError("SPIR-V lowering only supports entry functions"
"with no return values right now");
@@ -201,7 +201,8 @@ lowerAsEntryFunction(gpu::GPUFuncOp funcOp, TypeConverter &typeConverter,
// LowerABIAttributesPass.
TypeConverter::SignatureConversion signatureConverter(fnType.getNumInputs());
{
- for (const auto &argType : enumerate(funcOp.getType().getInputs())) {
+ for (const auto &argType :
+ enumerate(funcOp.getFunctionType().getInputs())) {
auto convertedType = typeConverter.convertType(argType.value());
signatureConverter.addInputs(argType.index(), convertedType);
}
diff --git a/mlir/lib/Conversion/LinalgToSPIRV/LinalgToSPIRVPass.cpp b/mlir/lib/Conversion/LinalgToSPIRV/LinalgToSPIRVPass.cpp
index dd2369fb006ec..23d7fc9a92520 100644
--- a/mlir/lib/Conversion/LinalgToSPIRV/LinalgToSPIRVPass.cpp
+++ b/mlir/lib/Conversion/LinalgToSPIRV/LinalgToSPIRVPass.cpp
@@ -38,7 +38,7 @@ void LinalgToSPIRVPass::runOnOperation() {
// Allow builtin ops.
target->addLegalOp<ModuleOp>();
target->addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
- return typeConverter.isSignatureLegal(op.getType()) &&
+ return typeConverter.isSignatureLegal(op.getFunctionType()) &&
typeConverter.isLegal(&op.getBody());
});
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
index a7fb02c986dbb..121273c1c3d74 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
@@ -1291,11 +1291,11 @@ class FuncConversionPattern : public SPIRVToLLVMConversion<spirv::FuncOp> {
// Convert function signature. At the moment LLVMType converter is enough
// for currently supported types.
- auto funcType = funcOp.getType();
+ auto funcType = funcOp.getFunctionType();
TypeConverter::SignatureConversion signatureConverter(
funcType.getNumInputs());
auto llvmType = typeConverter.convertFunctionSignature(
- funcOp.getType(), /*isVariadic=*/false, signatureConverter);
+ funcType, /*isVariadic=*/false, signatureConverter);
if (!llvmType)
return failure();
diff --git a/mlir/lib/Dialect/Async/Transforms/AsyncParallelFor.cpp b/mlir/lib/Dialect/Async/Transforms/AsyncParallelFor.cpp
index f6629c4bfe5de..2510971a29e92 100644
--- a/mlir/lib/Dialect/Async/Transforms/AsyncParallelFor.cpp
+++ b/mlir/lib/Dialect/Async/Transforms/AsyncParallelFor.cpp
@@ -463,7 +463,8 @@ static FuncOp createAsyncDispatchFunction(ParallelComputeFunction &computeFunc,
ModuleOp module = computeFunc.func->getParentOfType<ModuleOp>();
- ArrayRef<Type> computeFuncInputTypes = computeFunc.func.getType().getInputs();
+ ArrayRef<Type> computeFuncInputTypes =
+ computeFunc.func.getFunctionType().getInputs();
// Compared to the parallel compute function async dispatch function takes
// additional !async.group argument. Also instead of a single `blockIndex` it
diff --git a/mlir/lib/Dialect/Async/Transforms/AsyncToAsyncRuntime.cpp b/mlir/lib/Dialect/Async/Transforms/AsyncToAsyncRuntime.cpp
index 2a88a68dd001e..528702e203390 100644
--- a/mlir/lib/Dialect/Async/Transforms/AsyncToAsyncRuntime.cpp
+++ b/mlir/lib/Dialect/Async/Transforms/AsyncToAsyncRuntime.cpp
@@ -614,7 +614,8 @@ static CoroMachinery rewriteFuncAsCoroutine(FuncOp func) {
resultTypes.reserve(func.getCallableResults().size());
llvm::transform(func.getCallableResults(), std::back_inserter(resultTypes),
[](Type type) { return ValueType::get(type); });
- func.setType(FunctionType::get(ctx, func.getType().getInputs(), resultTypes));
+ func.setType(
+ FunctionType::get(ctx, func.getFunctionType().getInputs(), resultTypes));
func.insertResult(0, TokenType::get(ctx), {});
for (Block &block : func.getBlocks()) {
Operation *terminator = block.getTerminator();
diff --git a/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp b/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp
index e233ef7ba88ed..514ec901c3668 100644
--- a/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp
+++ b/mlir/lib/Dialect/Bufferization/Transforms/BufferResultsToOutParams.cpp
@@ -20,7 +20,7 @@ using namespace mlir;
// Any args appended to the entry block are added to `appendedEntryArgs`.
static void updateFuncOp(FuncOp func,
SmallVectorImpl<BlockArgument> &appendedEntryArgs) {
- auto functionType = func.getType();
+ auto functionType = func.getFunctionType();
// Collect information about the results will become appended arguments.
SmallVector<Type, 6> erasedResultTypes;
diff --git a/mlir/lib/Dialect/Func/IR/FuncOps.cpp b/mlir/lib/Dialect/Func/IR/FuncOps.cpp
index b4a1f89051cff..fbfe167326e9e 100644
--- a/mlir/lib/Dialect/Func/IR/FuncOps.cpp
+++ b/mlir/lib/Dialect/Func/IR/FuncOps.cpp
@@ -134,7 +134,7 @@ LogicalResult CallOp::verifySymbolUses(SymbolTableCollection &symbolTable) {
<< "' does not reference a valid function";
// Verify that the operand and result types match the callee.
- auto fnType = fn.getType();
+ auto fnType = fn.getFunctionType();
if (fnType.getNumInputs() != getNumOperands())
return emitOpError("incorrect number of operands for callee");
@@ -196,7 +196,7 @@ LogicalResult ConstantOp::verify() {
<< "'";
// Check that the referenced function has the correct type.
- if (fn.getType() != type)
+ if (fn.getFunctionType() != type)
return emitOpError("reference to function with mismatched type");
return success();
@@ -304,7 +304,7 @@ FuncOp FuncOp::clone(BlockAndValueMapping &mapper) {
// the function by specifying them in the mapper. If so, we don't add the
// argument to the input type vector.
if (!isExternal()) {
- FunctionType oldType = getType();
+ FunctionType oldType = getFunctionType();
unsigned oldNumArgs = oldType.getNumInputs();
SmallVector<Type, 4> newInputs;
@@ -347,7 +347,7 @@ LogicalResult ReturnOp::verify() {
auto function = cast<FuncOp>((*this)->getParentOp());
// The operand number and types must match the function signature.
- const auto &results = function.getType().getResults();
+ const auto &results = function.getFunctionType().getResults();
if (getNumOperands() != results.size())
return emitOpError("has ")
<< getNumOperands() << " operands, but enclosing function (@"
diff --git a/mlir/lib/Dialect/Func/Transforms/DecomposeCallGraphTypes.cpp b/mlir/lib/Dialect/Func/Transforms/DecomposeCallGraphTypes.cpp
index d3df225d1920b..4a95b5989a4bc 100644
--- a/mlir/lib/Dialect/Func/Transforms/DecomposeCallGraphTypes.cpp
+++ b/mlir/lib/Dialect/Func/Transforms/DecomposeCallGraphTypes.cpp
@@ -64,7 +64,7 @@ struct DecomposeCallGraphTypesForFuncArgs
LogicalResult
matchAndRewrite(FuncOp op, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const final {
- auto functionType = op.getType();
+ auto functionType = op.getFunctionType();
// Convert function arguments using the provided TypeConverter.
TypeConverter::SignatureConversion conversion(functionType.getNumInputs());
diff --git a/mlir/lib/Dialect/Func/Transforms/FuncBufferize.cpp b/mlir/lib/Dialect/Func/Transforms/FuncBufferize.cpp
index 573348cf7b156..2142bd6655ab8 100644
--- a/mlir/lib/Dialect/Func/Transforms/FuncBufferize.cpp
+++ b/mlir/lib/Dialect/Func/Transforms/FuncBufferize.cpp
@@ -35,7 +35,7 @@ struct FuncBufferizePass : public FuncBufferizeBase<FuncBufferizePass> {
populateFunctionOpInterfaceTypeConversionPattern<FuncOp>(patterns,
typeConverter);
target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
- return typeConverter.isSignatureLegal(op.getType()) &&
+ return typeConverter.isSignatureLegal(op.getFunctionType()) &&
typeConverter.isLegal(&op.getBody());
});
populateCallOpTypeConversionPattern(patterns, typeConverter);
diff --git a/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp b/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp
index 65ce9b09808b1..673ca4e7adbd0 100644
--- a/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp
+++ b/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp
@@ -261,7 +261,7 @@ LogicalResult GPUDialect::verifyOperationAttribute(Operation *op,
<< actualNumArguments << " kernel operands but expected "
<< expectedNumArguments;
- auto functionType = kernelGPUFunction.getType();
+ auto functionType = kernelGPUFunction.getFunctionType();
for (unsigned i = 0; i < expectedNumArguments; ++i) {
if (launchOp.getKernelOperand(i).getType() != functionType.getInput(i)) {
return launchOp.emitOpError("type of function argument ")
@@ -723,8 +723,8 @@ BlockArgument GPUFuncOp::addWorkgroupAttribution(Type type, Location loc) {
auto attr = (*this)->getAttrOfType<IntegerAttr>(attrName);
(*this)->setAttr(attrName,
IntegerAttr::get(attr.getType(), attr.getValue() + 1));
- return getBody().insertArgument(getType().getNumInputs() + attr.getInt(),
- type, loc);
+ return getBody().insertArgument(
+ getFunctionType().getNumInputs() + attr.getInt(), type, loc);
}
/// Adds a new block argument that corresponds to buffers located in
@@ -880,7 +880,7 @@ void GPUFuncOp::print(OpAsmPrinter &p) {
p << ' ';
p.printSymbolName(getName());
- FunctionType type = getType();
+ FunctionType type = getFunctionType();
function_interface_impl::printFunctionSignature(p, *this, type.getInputs(),
/*isVariadic=*/false,
type.getResults());
@@ -899,12 +899,12 @@ void GPUFuncOp::print(OpAsmPrinter &p) {
}
LogicalResult GPUFuncOp::verifyType() {
- Type type = getTypeAttr().getValue();
+ Type type = getFunctionTypeAttr().getValue();
if (!type.isa<FunctionType>())
return emitOpError("requires '" + getTypeAttrName() +
"' attribute of function type");
- if (isKernel() && getType().getNumResults() != 0)
+ if (isKernel() && getFunctionType().getNumResults() != 0)
return emitOpError() << "expected void return type for kernel function";
return success();
@@ -936,7 +936,7 @@ LogicalResult GPUFuncOp::verifyBody() {
<< numFuncArguments + numWorkgroupAttributions
<< " arguments to body region";
- ArrayRef<Type> funcArgTypes = getType().getInputs();
+ ArrayRef<Type> funcArgTypes = getFunctionType().getInputs();
for (unsigned i = 0; i < numFuncArguments; ++i) {
Type blockArgType = front().getArgument(i).getType();
if (funcArgTypes[i] != blockArgType)
@@ -961,7 +961,7 @@ LogicalResult GPUFuncOp::verifyBody() {
LogicalResult gpu::ReturnOp::verify() {
GPUFuncOp function = (*this)->getParentOfType<GPUFuncOp>();
- FunctionType funType = function.getType();
+ FunctionType funType = function.getFunctionType();
if (funType.getNumResults() != operands().size())
return emitOpError()
@@ -970,7 +970,7 @@ LogicalResult gpu::ReturnOp::verify() {
.append("return type declared here");
for (const auto &pair : llvm::enumerate(
- llvm::zip(function.getType().getResults(), operands()))) {
+ llvm::zip(function.getFunctionType().getResults(), operands()))) {
Type type;
Value operand;
std::tie(type, operand) = pair.value();
diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index bb3b68f8be29e..0184c511ba945 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -1003,7 +1003,7 @@ LogicalResult CallOp::verify() {
return emitOpError() << "'" << calleeName.getValue()
<< "' does not reference a valid LLVM function";
- fnType = fn.getType();
+ fnType = fn.getFunctionType();
}
LLVMFunctionType funcType = fnType.dyn_cast<LLVMFunctionType>();
@@ -1499,7 +1499,7 @@ LogicalResult ReturnOp::verify() {
return emitOpError("expected at most 1 operand");
if (auto parent = (*this)->getParentOfType<LLVMFuncOp>()) {
- Type expectedType = parent.getType().getReturnType();
+ Type expectedType = parent.getFunctionType().getReturnType();
if (expectedType.isa<LLVMVoidType>()) {
if (getNumOperands() == 0)
return success();
@@ -1571,8 +1571,8 @@ LogicalResult AddressOfOp::verify() {
return emitOpError(
"the type must be a pointer to the type of the referenced global");
- if (function &&
- LLVM::LLVMPointerType::get(function.getType()) != getResult().getType())
+ if (function && LLVM::LLVMPointerType::get(function.getFunctionType()) !=
+ getResult().getType())
return emitOpError(
"the type must be a pointer to the type of the referenced function");
@@ -1965,7 +1965,7 @@ Block *LLVMFuncOp::addEntryBlock() {
push_back(entry);
// FIXME: Allow passing in proper locations for the entry arguments.
- LLVMFunctionType type = getType();
+ LLVMFunctionType type = getFunctionType();
for (unsigned i = 0, e = type.getNumParams(); i < e; ++i)
entry->addArgument(type.getParamType(i), getLoc());
return entry;
@@ -1978,7 +1978,8 @@ void LLVMFuncOp::build(OpBuilder &builder, OperationState &result,
result.addRegion();
result.addAttribute(SymbolTable::getSymbolAttrName(),
builder.getStringAttr(name));
- result.addAttribute("type", TypeAttr::get(type));
+ result.addAttribute(getFunctionTypeAttrName(result.name),
+ TypeAttr::get(type));
result.addAttribute(::getLinkageAttrName(),
LinkageAttr::get(builder.getContext(), linkage));
result.attributes.append(attrs.begin(), attrs.end());
@@ -2089,7 +2090,7 @@ void LLVMFuncOp::print(OpAsmPrinter &p) {
p << stringifyLinkage(getLinkage()) << ' ';
p.printSymbolName(getName());
- LLVMFunctionType fnType = getType();
+ LLVMFunctionType fnType = getFunctionType();
SmallVector<Type, 8> argTypes;
SmallVector<Type, 1> resTypes;
argTypes.reserve(fnType.getNumParams());
@@ -2114,15 +2115,6 @@ void LLVMFuncOp::print(OpAsmPrinter &p) {
}
}
-LogicalResult LLVMFuncOp::verifyType() {
- auto llvmType = getTypeAttr().getValue().dyn_cast_or_null<LLVMFunctionType>();
- if (!llvmType)
- return emitOpError("requires '" + getTypeAttrName() +
- "' attribute of wrapped LLVM function type");
-
- return success();
-}
-
// Verifies LLVM- and implementation-specific properties of the LLVM func Op:
// - functions don't have 'common' linkage
// - external functions have 'external' or 'extern_weak' linkage;
@@ -2135,7 +2127,7 @@ LogicalResult LLVMFuncOp::verify() {
// Check to see if this function has a void return with a result attribute to
// it. It isn't clear what semantics we would assign to that.
- if (getType().getReturnType().isa<LLVMVoidType>() &&
+ if (getFunctionType().getReturnType().isa<LLVMVoidType>() &&
!getResultAttrs(0).empty()) {
return emitOpError()
<< "cannot attach result attributes to functions with a void return";
@@ -2164,7 +2156,7 @@ LogicalResult LLVMFuncOp::verifyRegions() {
if (isExternal())
return success();
- unsigned numArguments = getType().getNumParams();
+ unsigned numArguments = getFunctionType().getNumParams();
Block &entryBlock = front();
for (unsigned i = 0; i < numArguments; ++i) {
Type argType = entryBlock.getArgument(i).getType();
diff --git a/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp b/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp
index 9cdf98767e089..535627469ae7a 100644
--- a/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp
+++ b/mlir/lib/Dialect/Linalg/ComprehensiveBufferize/ModuleBufferization.cpp
@@ -389,8 +389,8 @@ static LogicalResult bufferizeFuncOpBoundary(FuncOp funcOp,
getModuleAnalysisState(state.getAnalysisState());
// If nothing to do then we are done.
- if (!llvm::any_of(funcOp.getType().getInputs(), isaTensor) &&
- !llvm::any_of(funcOp.getType().getResults(), isaTensor))
+ if (!llvm::any_of(funcOp.getFunctionType().getInputs(), isaTensor) &&
+ !llvm::any_of(funcOp.getFunctionType().getResults(), isaTensor))
return success();
// Get the bufferized FunctionType for funcOp or construct it if not yet
@@ -412,11 +412,11 @@ static LogicalResult bufferizeFuncOpBoundary(FuncOp funcOp,
// bufferization contract they want to enforce atm.
// As a consequence, only support functions that don't return any tensor atm.
if (funcOp.getBody().empty()) {
- if (llvm::any_of(funcOp.getType().getResults(), isaTensor))
+ if (llvm::any_of(funcOp.getFunctionType().getResults(), isaTensor))
return funcOp->emitError() << "cannot bufferize bodiless function that "
<< "returns a tensor";
FunctionType bufferizedFuncType = getBufferizedFunctionType(
- funcOp.getContext(), funcOp.getType().getInputs(), TypeRange{},
+ funcOp.getContext(), funcOp.getFunctionType().getInputs(), TypeRange{},
state.getOptions());
funcOp.setType(bufferizedFuncType);
return success();
@@ -451,8 +451,8 @@ static LogicalResult bufferizeFuncOpBoundary(FuncOp funcOp,
// 2. Rewrite the terminator without the inPlace bufferizable values.
ValueRange retValues{returnValues};
FunctionType bufferizedFuncType = getBufferizedFunctionType(
- funcOp.getContext(), funcOp.getType().getInputs(), retValues.getTypes(),
- state.getOptions());
+ funcOp.getContext(), funcOp.getFunctionType().getInputs(),
+ retValues.getTypes(), state.getOptions());
OpBuilder b(returnOp);
b.create<func::ReturnOp>(returnOp.getLoc(), returnValues);
returnOp->erase();
@@ -598,7 +598,8 @@ static void layoutPostProcessing(ModuleOp moduleOp) {
SmallVector<Type> argumentTypes;
// Iterate on each function argument and check it it was marked with a
// desired layout.
- for (const auto &it : llvm::enumerate(funcOp.getType().getInputs())) {
+ for (const auto &it :
+ llvm::enumerate(funcOp.getFunctionType().getInputs())) {
int argNumber = it.index();
Type inputType = it.value();
auto memrefType = inputType.dyn_cast<MemRefType>();
@@ -661,7 +662,7 @@ static void layoutPostProcessing(ModuleOp moduleOp) {
// Finally set the funcOp type to update the arguments.
auto newFuncType = FunctionType::get(moduleOp.getContext(), argumentTypes,
- funcOp.getType().getResults());
+ funcOp.getFunctionType().getResults());
funcOp.setType(newFuncType);
}
}
@@ -1046,7 +1047,7 @@ LogicalResult mlir::linalg::comprehensive_bufferize::runModuleBufferize(
return failure();
if (!options.allowReturnAllocs &&
- llvm::any_of(funcOp.getType().getResults(), [](Type t) {
+ llvm::any_of(funcOp.getFunctionType().getResults(), [](Type t) {
return t.isa<MemRefType, UnrankedMemRefType>();
})) {
funcOp->emitError("memref return type is unsupported");
diff --git a/mlir/lib/Dialect/MemRef/Transforms/NormalizeMemRefs.cpp b/mlir/lib/Dialect/MemRef/Transforms/NormalizeMemRefs.cpp
index 66da4e38a8d67..2514d0522ce04 100644
--- a/mlir/lib/Dialect/MemRef/Transforms/NormalizeMemRefs.cpp
+++ b/mlir/lib/Dialect/MemRef/Transforms/NormalizeMemRefs.cpp
@@ -193,7 +193,7 @@ bool NormalizeMemRefs::areMemRefsNormalizable(FuncOp funcOp) {
/// returned value is in turn used in ReturnOp of the calling function.
void NormalizeMemRefs::updateFunctionSignature(FuncOp funcOp,
ModuleOp moduleOp) {
- FunctionType functionType = funcOp.getType();
+ FunctionType functionType = funcOp.getFunctionType();
SmallVector<Type, 4> resultTypes;
FunctionType newFuncType;
resultTypes = llvm::to_vector<4>(functionType.getResults());
@@ -333,7 +333,7 @@ void NormalizeMemRefs::normalizeFuncOpMemRefs(FuncOp funcOp,
// We use this OpBuilder to create new memref layout later.
OpBuilder b(funcOp);
- FunctionType functionType = funcOp.getType();
+ FunctionType functionType = funcOp.getFunctionType();
SmallVector<Location> functionArgLocs(llvm::map_range(
funcOp.getArguments(), [](BlockArgument arg) { return arg.getLoc(); }));
SmallVector<Type, 8> inputTypes;
diff --git a/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp b/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
index a7f3ed7b5479d..fae7a69d5228a 100644
--- a/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
+++ b/mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
@@ -2245,7 +2245,7 @@ void spirv::FuncOp::print(OpAsmPrinter &printer) {
// Print function name, signature, and control.
printer << " ";
printer.printSymbolName(sym_name());
- auto fnType = getType();
+ auto fnType = getFunctionType();
function_interface_impl::printFunctionSignature(
printer, *this, fnType.getInputs(),
/*isVariadic=*/false, fnType.getResults());
@@ -2265,17 +2265,17 @@ void spirv::FuncOp::print(OpAsmPrinter &printer) {
}
LogicalResult spirv::FuncOp::verifyType() {
- auto type = getTypeAttr().getValue();
+ auto type = getFunctionTypeAttr().getValue();
if (!type.isa<FunctionType>())
return emitOpError("requires '" + getTypeAttrName() +
"' attribute of function type");
- if (getType().getNumResults() > 1)
+ if (getFunctionType().getNumResults() > 1)
return emitOpError("cannot have more than one result");
return success();
}
LogicalResult spirv::FuncOp::verifyBody() {
- FunctionType fnType = getType();
+ FunctionType fnType = getFunctionType();
auto walkResult = walk([fnType](Operation *op) -> WalkResult {
if (auto retOp = dyn_cast<spirv::ReturnOp>(op)) {
@@ -2322,7 +2322,7 @@ Region *spirv::FuncOp::getCallableRegion() {
// CallableOpInterface
ArrayRef<Type> spirv::FuncOp::getCallableResults() {
- return getType().getResults();
+ return getFunctionType().getResults();
}
//===----------------------------------------------------------------------===//
@@ -2339,7 +2339,7 @@ LogicalResult spirv::FunctionCallOp::verify() {
<< fnName.getValue() << "' not found in nearest symbol table";
}
- auto functionType = funcOp.getType();
+ auto functionType = funcOp.getFunctionType();
if (getNumResults() > 1) {
return emitOpError(
diff --git a/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp b/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp
index 71042491c57a3..ff3486b1c804b 100644
--- a/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp
+++ b/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp
@@ -39,7 +39,7 @@ createGlobalVarForEntryPointArgument(OpBuilder &builder, spirv::FuncOp funcOp,
// Get the type of variable. If this is a scalar/vector type and has an ABI
// info create a variable of type !spv.ptr<!spv.struct<elementType>>. If not
// it must already be a !spv.ptr<!spv.struct<...>>.
- auto varType = funcOp.getType().getInput(argIndex);
+ auto varType = funcOp.getFunctionType().getInput(argIndex);
if (varType.cast<spirv::SPIRVType>().isScalarOrVector()) {
auto storageClass = abiInfo.getStorageClass();
if (!storageClass)
@@ -179,13 +179,14 @@ LogicalResult ProcessInterfaceVarABI::matchAndRewrite(
return failure();
}
TypeConverter::SignatureConversion signatureConverter(
- funcOp.getType().getNumInputs());
+ funcOp.getFunctionType().getNumInputs());
auto &typeConverter = *getTypeConverter<SPIRVTypeConverter>();
auto indexType = typeConverter.getIndexType();
auto attrName = spirv::getInterfaceVarABIAttrName();
- for (const auto &argType : llvm::enumerate(funcOp.getType().getInputs())) {
+ for (const auto &argType :
+ llvm::enumerate(funcOp.getFunctionType().getInputs())) {
auto abiInfo = funcOp.getArgAttrOfType<spirv::InterfaceVarABIAttr>(
argType.index(), attrName);
if (!abiInfo) {
diff --git a/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp b/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp
index 000e58d4b5c37..824df9272e37a 100644
--- a/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp
+++ b/mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp
@@ -553,7 +553,7 @@ class FuncOpConversion final : public OpConversionPattern<FuncOp> {
LogicalResult
FuncOpConversion::matchAndRewrite(FuncOp funcOp, OpAdaptor adaptor,
ConversionPatternRewriter &rewriter) const {
- auto fnType = funcOp.getType();
+ auto fnType = funcOp.getFunctionType();
if (fnType.getNumResults() > 1)
return failure();
diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp
index 6ce17efb4c5d8..2d8b8585e1ec2 100644
--- a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp
+++ b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp
@@ -83,8 +83,9 @@ struct SparseTensorConversionPass
// All dynamic rules below accept new function, call, return, and tensor
// dim and cast operations as legal output of the rewriting provided that
// all sparse tensor types have been fully rewritten.
- target.addDynamicallyLegalOp<FuncOp>(
- [&](FuncOp op) { return converter.isSignatureLegal(op.getType()); });
+ target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
+ return converter.isSignatureLegal(op.getFunctionType());
+ });
target.addDynamicallyLegalOp<func::CallOp>([&](func::CallOp op) {
return converter.isSignatureLegal(op.getCalleeType());
});
diff --git a/mlir/lib/Dialect/Tosa/Transforms/TosaInferShapes.cpp b/mlir/lib/Dialect/Tosa/Transforms/TosaInferShapes.cpp
index 15def759bb869..bfb1bbc23df3b 100644
--- a/mlir/lib/Dialect/Tosa/Transforms/TosaInferShapes.cpp
+++ b/mlir/lib/Dialect/Tosa/Transforms/TosaInferShapes.cpp
@@ -293,7 +293,7 @@ struct TosaInferShapes : public TosaInferShapesBase<TosaInferShapes> {
return;
rewriter.setInsertionPoint(op);
- FunctionType funcTy = func.getType();
+ FunctionType funcTy = func.getFunctionType();
auto resultTys = funcTy.getResults();
bool castAdded = false;
diff --git a/mlir/lib/ExecutionEngine/JitRunner.cpp b/mlir/lib/ExecutionEngine/JitRunner.cpp
index fcab951c51497..f61710f390acd 100644
--- a/mlir/lib/ExecutionEngine/JitRunner.cpp
+++ b/mlir/lib/ExecutionEngine/JitRunner.cpp
@@ -252,7 +252,7 @@ template <typename Type>
Error checkCompatibleReturnType(LLVM::LLVMFuncOp mainFunction);
template <>
Error checkCompatibleReturnType<int32_t>(LLVM::LLVMFuncOp mainFunction) {
- auto resultType = mainFunction.getType()
+ auto resultType = mainFunction.getFunctionType()
.cast<LLVM::LLVMFunctionType>()
.getReturnType()
.dyn_cast<IntegerType>();
@@ -262,7 +262,7 @@ Error checkCompatibleReturnType<int32_t>(LLVM::LLVMFuncOp mainFunction) {
}
template <>
Error checkCompatibleReturnType<int64_t>(LLVM::LLVMFuncOp mainFunction) {
- auto resultType = mainFunction.getType()
+ auto resultType = mainFunction.getFunctionType()
.cast<LLVM::LLVMFunctionType>()
.getReturnType()
.dyn_cast<IntegerType>();
@@ -272,7 +272,7 @@ Error checkCompatibleReturnType<int64_t>(LLVM::LLVMFuncOp mainFunction) {
}
template <>
Error checkCompatibleReturnType<float>(LLVM::LLVMFuncOp mainFunction) {
- if (!mainFunction.getType()
+ if (!mainFunction.getFunctionType()
.cast<LLVM::LLVMFunctionType>()
.getReturnType()
.isa<Float32Type>())
@@ -287,7 +287,9 @@ Error compileAndExecuteSingleReturnFunction(Options &options, ModuleOp module,
if (!mainFunction || mainFunction.isExternal())
return makeStringError("entry point not found");
- if (mainFunction.getType().cast<LLVM::LLVMFunctionType>().getNumParams() != 0)
+ if (mainFunction.getFunctionType()
+ .cast<LLVM::LLVMFunctionType>()
+ .getNumParams() != 0)
return makeStringError("function inputs not supported");
if (Error error = checkCompatibleReturnType<Type>(mainFunction))
diff --git a/mlir/lib/Target/Cpp/TranslateToCpp.cpp b/mlir/lib/Target/Cpp/TranslateToCpp.cpp
index ce1483b733f15..2c1dc0d411e5f 100644
--- a/mlir/lib/Target/Cpp/TranslateToCpp.cpp
+++ b/mlir/lib/Target/Cpp/TranslateToCpp.cpp
@@ -585,7 +585,7 @@ static LogicalResult printOperation(CppEmitter &emitter, FuncOp functionOp) {
CppEmitter::Scope scope(emitter);
raw_indented_ostream &os = emitter.ostream();
if (failed(emitter.emitTypes(functionOp.getLoc(),
- functionOp.getType().getResults())))
+ functionOp.getFunctionType().getResults())))
return failure();
os << " " << functionOp.getName();
diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index e16066679bc71..0dd1d28ae9bfe 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -912,7 +912,7 @@ LogicalResult ModuleTranslation::convertFunctionSignatures() {
for (auto function : getModuleBody(mlirModule).getOps<LLVMFuncOp>()) {
llvm::FunctionCallee llvmFuncCst = llvmModule->getOrInsertFunction(
function.getName(),
- cast<llvm::FunctionType>(convertType(function.getType())));
+ cast<llvm::FunctionType>(convertType(function.getFunctionType())));
llvm::Function *llvmFunc = cast<llvm::Function>(llvmFuncCst.getCallee());
llvmFunc->setLinkage(convertLinkageToLLVM(function.getLinkage()));
mapFunction(function.getName(), llvmFunc);
diff --git a/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp b/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp
index c7bfff1df7f0b..d0e7f7780aeed 100644
--- a/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp
+++ b/mlir/lib/Target/SPIRV/Serialization/SerializeOps.cpp
@@ -180,13 +180,13 @@ LogicalResult Serializer::processFuncOp(spirv::FuncOp op) {
uint32_t fnTypeID = 0;
// Generate type of the function.
- if (failed(processType(op.getLoc(), op.getType(), fnTypeID)))
+ if (failed(processType(op.getLoc(), op.getFunctionType(), fnTypeID)))
return failure();
// Add the function definition.
SmallVector<uint32_t, 4> operands;
uint32_t resTypeID = 0;
- auto resultTypes = op.getType().getResults();
+ auto resultTypes = op.getFunctionType().getResults();
if (resultTypes.size() > 1) {
return op.emitError("cannot serialize function with multiple return types");
}
diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp
index 51eed1fcddb6c..bdeb0fa222b31 100644
--- a/mlir/lib/Transforms/Utils/DialectConversion.cpp
+++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp
@@ -3074,7 +3074,7 @@ struct FunctionOpInterfaceSignatureConversion : public ConversionPattern {
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
ConversionPatternRewriter &rewriter) const override {
FunctionOpInterface funcOp = cast<FunctionOpInterface>(op);
- FunctionType type = funcOp.getType().cast<FunctionType>();
+ FunctionType type = funcOp.getFunctionType().cast<FunctionType>();
// Convert the original function types.
TypeConverter::SignatureConversion result(type.getNumInputs());
diff --git a/mlir/python/mlir/dialects/_func_ops_ext.py b/mlir/python/mlir/dialects/_func_ops_ext.py
index 6932efd791943..6fe3ff5302e26 100644
--- a/mlir/python/mlir/dialects/_func_ops_ext.py
+++ b/mlir/python/mlir/dialects/_func_ops_ext.py
@@ -74,7 +74,7 @@ def body(self):
@property
def type(self):
- return FunctionType(TypeAttr(self.attributes["type"]).value)
+ return FunctionType(TypeAttr(self.attributes["function_type"]).value)
@property
def visibility(self):
@@ -211,7 +211,7 @@ def decorator(f):
# Recompute the function type.
return_types = [v.type for v in return_values]
function_type = FunctionType.get(inputs=inputs, results=return_types)
- func_op.attributes["type"] = TypeAttr.get(function_type)
+ func_op.attributes["function_type"] = TypeAttr.get(function_type)
def emit_call_op(*call_args):
call_op = func.CallOp(return_types, FlatSymbolRefAttr.get(symbol_name),
diff --git a/mlir/test/CAPI/ir.c b/mlir/test/CAPI/ir.c
index 5c4e36b9881a0..f3444a08e58d9 100644
--- a/mlir/test/CAPI/ir.c
+++ b/mlir/test/CAPI/ir.c
@@ -95,7 +95,8 @@ MlirModule makeAndDumpAdd(MlirContext ctx, MlirLocation location) {
mlirAttributeParseGet(ctx, mlirStringRefCreateFromCString("\"add\""));
MlirNamedAttribute funcAttrs[] = {
mlirNamedAttributeGet(
- mlirIdentifierGet(ctx, mlirStringRefCreateFromCString("type")),
+ mlirIdentifierGet(ctx,
+ mlirStringRefCreateFromCString("function_type")),
funcTypeAttr),
mlirNamedAttributeGet(
mlirIdentifierGet(ctx, mlirStringRefCreateFromCString("sym_name")),
diff --git a/mlir/test/Dialect/GPU/invalid.mlir b/mlir/test/Dialect/GPU/invalid.mlir
index 07dd173d8df7d..b30efdecef4cb 100644
--- a/mlir/test/Dialect/GPU/invalid.mlir
+++ b/mlir/test/Dialect/GPU/invalid.mlir
@@ -331,10 +331,10 @@ module {
module {
gpu.module @gpu_funcs {
- // expected-error @+1 {{requires 'type' attribute of function type}}
+ // expected-error @+1 {{attribute 'function_type' failed to satisfy constraint: type attribute of function type}}
"gpu.func"() ({
gpu.return
- }) {sym_name="kernel_1", type=f32} : () -> ()
+ }) {sym_name="kernel_1", function_type=f32} : () -> ()
}
}
@@ -415,7 +415,7 @@ module {
"gpu.func"() ({
^bb0(%arg0: f32, %arg1: memref<?xf32>, %arg2: memref<5xf32, 3>, %arg3: memref<5xf32, 5>):
"gpu.return"() : () -> ()
- } ) {gpu.kernel, sym_name = "kernel_1", type = (f32, memref<?xf32>) -> (), workgroup_attributions = 3: i64} : () -> ()
+ } ) {function_type = (f32, memref<?xf32>) -> (), gpu.kernel, sym_name = "kernel_1", workgroup_attributions = 3: i64} : () -> ()
}
}
diff --git a/mlir/test/Dialect/GPU/ops.mlir b/mlir/test/Dialect/GPU/ops.mlir
index e0f949a8df2b9..794f3c18f918c 100644
--- a/mlir/test/Dialect/GPU/ops.mlir
+++ b/mlir/test/Dialect/GPU/ops.mlir
@@ -162,7 +162,7 @@ module attributes {gpu.container_module} {
"gpu.func"() ({
^bb0(%arg0: f32, %arg1: memref<?xf32>, %arg2: memref<5xf32, 3>, %arg3: memref<5xf32, 5>):
"gpu.return"() : () -> ()
- } ) {gpu.kernel, sym_name = "kernel_1", type = (f32, memref<?xf32>) -> (), workgroup_attributions = 1: i64} : () -> ()
+ } ) {function_type = (f32, memref<?xf32>) -> (), gpu.kernel, sym_name = "kernel_1", workgroup_attributions = 1: i64} : () -> ()
}
func @alloc() {
diff --git a/mlir/test/Dialect/LLVMIR/func.mlir b/mlir/test/Dialect/LLVMIR/func.mlir
index c5623b00e43b8..ed6295773c771 100644
--- a/mlir/test/Dialect/LLVMIR/func.mlir
+++ b/mlir/test/Dialect/LLVMIR/func.mlir
@@ -3,20 +3,20 @@
module {
// GENERIC: "llvm.func"
- // GENERIC: sym_name = "foo"
- // GENERIC-SAME: type = !llvm.func<void ()>
+ // GENERIC: function_type = !llvm.func<void ()>
+ // GENERIC-SAME: sym_name = "foo"
// GENERIC-SAME: () -> ()
// CHECK: llvm.func @foo()
"llvm.func"() ({
- }) {sym_name = "foo", type = !llvm.func<void ()>} : () -> ()
+ }) {sym_name = "foo", function_type = !llvm.func<void ()>} : () -> ()
// GENERIC: "llvm.func"
- // GENERIC: sym_name = "bar"
- // GENERIC-SAME: type = !llvm.func<i64 (i64, i64)>
+ // GENERIC: function_type = !llvm.func<i64 (i64, i64)>
+ // GENERIC-SAME: sym_name = "bar"
// GENERIC-SAME: () -> ()
// CHECK: llvm.func @bar(i64, i64) -> i64
"llvm.func"() ({
- }) {sym_name = "bar", type = !llvm.func<i64 (i64, i64)>} : () -> ()
+ }) {sym_name = "bar", function_type = !llvm.func<i64 (i64, i64)>} : () -> ()
// GENERIC: "llvm.func"
// CHECK: llvm.func @baz(%{{.*}}: i64) -> i64
@@ -26,15 +26,15 @@ module {
// GENERIC: llvm.return
llvm.return %arg0 : i64
- // GENERIC: sym_name = "baz"
- // GENERIC-SAME: type = !llvm.func<i64 (i64)>
+ // GENERIC: function_type = !llvm.func<i64 (i64)>
+ // GENERIC-SAME: sym_name = "baz"
// GENERIC-SAME: () -> ()
- }) {sym_name = "baz", type = !llvm.func<i64 (i64)>} : () -> ()
+ }) {sym_name = "baz", function_type = !llvm.func<i64 (i64)>} : () -> ()
// CHECK: llvm.func @qux(!llvm.ptr<i64> {llvm.noalias}, i64)
// CHECK: attributes {xxx = {yyy = 42 : i64}}
"llvm.func"() ({
- }) {sym_name = "qux", type = !llvm.func<void (ptr<i64>, i64)>,
+ }) {sym_name = "qux", function_type = !llvm.func<void (ptr<i64>, i64)>,
arg_attrs = [{llvm.noalias}, {}], xxx = {yyy = 42}} : () -> ()
// CHECK: llvm.func @roundtrip1()
@@ -143,28 +143,28 @@ module {
module {
// expected-error at +1 {{requires one region}}
- "llvm.func"() {sym_name = "no_region", type = !llvm.func<void ()>} : () -> ()
+ "llvm.func"() {function_type = !llvm.func<void ()>, sym_name = "no_region"} : () -> ()
}
// -----
module {
- // expected-error at +1 {{requires a type attribute 'type'}}
+ // expected-error at +1 {{requires attribute 'function_type'}}
"llvm.func"() ({}) {sym_name = "missing_type"} : () -> ()
}
// -----
module {
- // expected-error at +1 {{requires 'type' attribute of wrapped LLVM function type}}
- "llvm.func"() ({}) {sym_name = "non_llvm_type", type = i64} : () -> ()
+ // expected-error at +1 {{attribute 'function_type' failed to satisfy constraint: type attribute of LLVM function type}}
+ "llvm.func"() ({}) {sym_name = "non_llvm_type", function_type = i64} : () -> ()
}
// -----
module {
- // expected-error at +1 {{requires 'type' attribute of wrapped LLVM function type}}
- "llvm.func"() ({}) {sym_name = "non_function_type", type = i64} : () -> ()
+ // expected-error at +1 {{attribute 'function_type' failed to satisfy constraint: type attribute of LLVM function type}}
+ "llvm.func"() ({}) {sym_name = "non_function_type", function_type = i64} : () -> ()
}
// -----
@@ -174,7 +174,7 @@ module {
"llvm.func"() ({
^bb0(%arg0: i64):
llvm.return
- }) {sym_name = "wrong_arg_number", type = !llvm.func<void ()>} : () -> ()
+ }) {function_type = !llvm.func<void ()>, sym_name = "wrong_arg_number"} : () -> ()
}
// -----
@@ -184,7 +184,7 @@ module {
"llvm.func"() ({
^bb0(%arg0: tensor<*xf32>):
llvm.return
- }) {sym_name = "wrong_arg_number", type = !llvm.func<void (i64)>} : () -> ()
+ }) {function_type = !llvm.func<void (i64)>, sym_name = "wrong_arg_number"} : () -> ()
}
// -----
diff --git a/mlir/test/IR/invalid-func-op.mlir b/mlir/test/IR/invalid-func-op.mlir
index 903c65a4c4857..5a91718784200 100644
--- a/mlir/test/IR/invalid-func-op.mlir
+++ b/mlir/test/IR/invalid-func-op.mlir
@@ -91,8 +91,8 @@ func private @invalid_symbol_name_attr() attributes { sym_name = "x" }
// -----
-// expected-error at +1 {{'type' is an inferred attribute and should not be specified in the explicit attribute dictionary}}
-func private @invalid_symbol_type_attr() attributes { type = "x" }
+// expected-error at +1 {{'function_type' is an inferred attribute and should not be specified in the explicit attribute dictionary}}
+func private @invalid_symbol_type_attr() attributes { function_type = "x" }
// -----
diff --git a/mlir/test/IR/parser.mlir b/mlir/test/IR/parser.mlir
index 4984d85d8f4dc..8e245b80ddce5 100644
--- a/mlir/test/IR/parser.mlir
+++ b/mlir/test/IR/parser.mlir
@@ -1416,7 +1416,7 @@ test.graph_region {
%1 = "foo"(%1, %2) : (i64, i64) -> i64
%2 = "bar"(%1) : (i64) -> i64
"unregistered_terminator"() : () -> ()
-}) {sym_name = "unregistered_op_dominance_violation_ok", type = () -> i1} : () -> ()
+}) {sym_name = "unregistered_op_dominance_violation_ok", function_type = () -> i1} : () -> ()
// This is an unregister operation, the printing/parsing is handled by the dialect.
// CHECK: test.dialect_custom_printer custom_format
diff --git a/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp b/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp
index 9236f8215f70d..34e5516e3adf0 100644
--- a/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp
+++ b/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp
@@ -49,7 +49,7 @@ struct TestDecomposeCallGraphTypes
target.addDynamicallyLegalOp<func::CallOp>(
[&](func::CallOp op) { return typeConverter.isLegal(op); });
target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
- return typeConverter.isSignatureLegal(op.getType());
+ return typeConverter.isSignatureLegal(op.getFunctionType());
});
typeConverter.addConversion([](Type type) { return type; });
diff --git a/mlir/test/lib/Dialect/Test/TestPatterns.cpp b/mlir/test/lib/Dialect/Test/TestPatterns.cpp
index 69ad6ab4982f4..e2b500580ed2b 100644
--- a/mlir/test/lib/Dialect/Test/TestPatterns.cpp
+++ b/mlir/test/lib/Dialect/Test/TestPatterns.cpp
@@ -676,7 +676,7 @@ struct TestLegalizePatternDriver
[](Type type) { return type.isF32(); });
});
target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
- return converter.isSignatureLegal(op.getType()) &&
+ return converter.isSignatureLegal(op.getFunctionType()) &&
converter.isLegal(&op.getBody());
});
target.addDynamicallyLegalOp<func::CallOp>(
@@ -1106,7 +1106,7 @@ struct TestTypeConversionDriver
recursiveType.getName() == "outer_converted_type");
});
target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
- return converter.isSignatureLegal(op.getType()) &&
+ return converter.isSignatureLegal(op.getFunctionType()) &&
converter.isLegal(&op.getBody());
});
target.addDynamicallyLegalOp<TestCastOp>([&](TestCastOp op) {
diff --git a/mlir/test/lib/IR/TestFunc.cpp b/mlir/test/lib/IR/TestFunc.cpp
index d1b99d60907a3..9fb713857ea90 100644
--- a/mlir/test/lib/IR/TestFunc.cpp
+++ b/mlir/test/lib/IR/TestFunc.cpp
@@ -134,8 +134,8 @@ struct TestFuncSetType
auto sym = func->getAttrOfType<FlatSymbolRefAttr>("test.set_type_from");
if (!sym)
continue;
- func.setType(
- symbolTable.lookup<FunctionOpInterface>(sym.getValue()).getType());
+ func.setType(symbolTable.lookup<FunctionOpInterface>(sym.getValue())
+ .getFunctionType());
}
}
};
diff --git a/mlir/test/lib/IR/TestSlicing.cpp b/mlir/test/lib/IR/TestSlicing.cpp
index ac40c818d5e92..f628d99e3c003 100644
--- a/mlir/test/lib/IR/TestSlicing.cpp
+++ b/mlir/test/lib/IR/TestSlicing.cpp
@@ -29,8 +29,8 @@ static LogicalResult createBackwardSliceFunction(Operation *op,
OpBuilder builder(parentFuncOp);
Location loc = op->getLoc();
std::string clonedFuncOpName = parentFuncOp.getName().str() + suffix.str();
- FuncOp clonedFuncOp =
- builder.create<FuncOp>(loc, clonedFuncOpName, parentFuncOp.getType());
+ FuncOp clonedFuncOp = builder.create<FuncOp>(loc, clonedFuncOpName,
+ parentFuncOp.getFunctionType());
BlockAndValueMapping mapper;
builder.setInsertionPointToEnd(clonedFuncOp.addEntryBlock());
for (const auto &arg : enumerate(parentFuncOp.getArguments()))
diff --git a/mlir/test/mlir-lsp-server/hover.test b/mlir/test/mlir-lsp-server/hover.test
index 4aedf9caeba76..387aa278dcadd 100644
--- a/mlir/test/mlir-lsp-server/hover.test
+++ b/mlir/test/mlir-lsp-server/hover.test
@@ -114,7 +114,7 @@
// CHECK-NEXT: "result": {
// CHECK-NEXT: "contents": {
// CHECK-NEXT: "kind": "markdown",
-// CHECK-NEXT: "value": "\"func.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() ({\n}) {sym_name = \"foo\", type = (i1) -> ()} : () -> ()\n```\n"
+// CHECK-NEXT: "value": "\"func.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() ({\n}) {function_type = (i1) -> (), sym_name = \"foo\"} : () -> ()\n```\n"
// CHECK-NEXT: },
// CHECK-NEXT: "range": {
// CHECK-NEXT: "end": {
@@ -138,7 +138,7 @@
// CHECK-NEXT: "result": {
// CHECK-NEXT: "contents": {
// CHECK-NEXT: "kind": "markdown",
-// CHECK-NEXT: "value": "\"func.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() ({\n}) {sym_name = \"foo\", type = (i1) -> ()} : () -> ()\n```\n"
+// CHECK-NEXT: "value": "\"func.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() ({\n}) {function_type = (i1) -> (), sym_name = \"foo\"} : () -> ()\n```\n"
// CHECK-NEXT: },
// CHECK-NEXT: "range": {
// CHECK-NEXT: "end": {
More information about the flang-commits
mailing list