[mlir] Remove populateFuncOpTypeConversionPattern

This method simply forwards to populateFunctionLikeTypeConversionPattern,
which is more general. This also helps to remove special treatment of FuncOp from
DialectConversion.

Differential Revision: https://reviews.llvm.org/D116624
This commit is contained in:
River Riddle 2022-01-04 13:19:23 -08:00
parent 81c330e23d
commit d4d016869d
6 changed files with 5 additions and 16 deletions

View File

@ -22,7 +22,6 @@ namespace mlir {
// Forward declarations.
class Block;
class ConversionPatternRewriter;
class FuncOp;
class MLIRContext;
class Operation;
class Type;
@ -507,11 +506,6 @@ void populateFunctionLikeTypeConversionPattern(RewritePatternSet &patterns,
patterns, converter);
}
/// Add a pattern to the given pattern list to convert the signature of a FuncOp
/// with the given type converter.
void populateFuncOpTypeConversionPattern(RewritePatternSet &patterns,
TypeConverter &converter);
//===----------------------------------------------------------------------===//
// Conversion PatternRewriter
//===----------------------------------------------------------------------===//

View File

@ -983,7 +983,7 @@ void ConvertAsyncToLLVMPass::runOnOperation() {
llvmConverter.addConversion(AsyncRuntimeTypeConverter::convertAsyncTypes);
// Convert async types in function signatures and function calls.
populateFuncOpTypeConversionPattern(patterns, converter);
populateFunctionLikeTypeConversionPattern<FuncOp>(patterns, converter);
populateCallOpTypeConversionPattern(patterns, converter);
// Convert return operations inside async.execute regions.

View File

@ -124,7 +124,7 @@ struct SparseTensorConversionPass
.addLegalDialect<bufferization::BufferizationDialect, LLVM::LLVMDialect,
memref::MemRefDialect, scf::SCFDialect>();
// Populate with rules and apply rewriting rules.
populateFuncOpTypeConversionPattern(patterns, converter);
populateFunctionLikeTypeConversionPattern<FuncOp>(patterns, converter);
populateCallOpTypeConversionPattern(patterns, converter);
populateSparseTensorConversionPatterns(converter, patterns);
if (failed(applyPartialConversion(getOperation(), target,

View File

@ -31,7 +31,7 @@ struct FuncBufferizePass : public FuncBufferizeBase<FuncBufferizePass> {
RewritePatternSet patterns(context);
ConversionTarget target(*context);
populateFuncOpTypeConversionPattern(patterns, typeConverter);
populateFunctionLikeTypeConversionPattern<FuncOp>(patterns, typeConverter);
target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
return typeConverter.isSignatureLegal(op.getType()) &&
typeConverter.isLegal(&op.getBody());

View File

@ -3095,11 +3095,6 @@ void mlir::populateFunctionLikeTypeConversionPattern(
functionLikeOpName, patterns.getContext(), converter);
}
void mlir::populateFuncOpTypeConversionPattern(RewritePatternSet &patterns,
TypeConverter &converter) {
populateFunctionLikeTypeConversionPattern<FuncOp>(patterns, converter);
}
//===----------------------------------------------------------------------===//
// ConversionTarget
//===----------------------------------------------------------------------===//

View File

@ -655,7 +655,7 @@ struct TestLegalizePatternDriver
TestNestedOpCreationUndoRewrite, TestReplaceEraseOp,
TestCreateUnregisteredOp>(&getContext());
patterns.add<TestDropOpSignatureConversion>(&getContext(), converter);
mlir::populateFuncOpTypeConversionPattern(patterns, converter);
mlir::populateFunctionLikeTypeConversionPattern<FuncOp>(patterns, converter);
mlir::populateCallOpTypeConversionPattern(patterns, converter);
// Define the conversion target used for the test.
@ -1120,7 +1120,7 @@ struct TestTypeConversionDriver
TestTestSignatureConversionNoConverter>(converter,
&getContext());
patterns.add<TestTypeConversionAnotherProducer>(&getContext());
mlir::populateFuncOpTypeConversionPattern(patterns, converter);
mlir::populateFunctionLikeTypeConversionPattern<FuncOp>(patterns, converter);
if (failed(applyPartialConversion(getOperation(), target,
std::move(patterns))))