From 851a8516d3883088b0c02601f9c1bb269e85051c Mon Sep 17 00:00:00 2001 From: River Riddle Date: Wed, 11 Dec 2019 16:26:08 -0800 Subject: Make OpBuilder::insert virtual instead of OpBuilder::createOperation. It is sometimes useful to create operations separately from the builder before insertion as it may be easier to erase them in isolation if necessary. One example use case for this is folding, as we will only want to insert newly generated constant operations on success. This has the added benefit of fixing some silent PatternRewriter failures related to cloning, as the OpBuilder 'clone' methods don't call createOperation. PiperOrigin-RevId: 285086242 --- mlir/lib/Transforms/DialectConversion.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'mlir/lib/Transforms/DialectConversion.cpp') diff --git a/mlir/lib/Transforms/DialectConversion.cpp b/mlir/lib/Transforms/DialectConversion.cpp index 6d34db90912..ea4ad681693 100644 --- a/mlir/lib/Transforms/DialectConversion.cpp +++ b/mlir/lib/Transforms/DialectConversion.cpp @@ -802,13 +802,6 @@ void ConversionPatternRewriter::replaceUsesOfBlockArgument(BlockArgument *from, impl->mapping.map(impl->mapping.lookupOrDefault(from), to); } -/// Clone the given operation without cloning its regions. -Operation *ConversionPatternRewriter::cloneWithoutRegions(Operation *op) { - Operation *newOp = OpBuilder::cloneWithoutRegions(*op); - impl->createdOps.push_back(newOp); - return newOp; -} - /// Return the converted value that replaces 'key'. Return 'key' if there is /// no such a converted value. Value *ConversionPatternRewriter::getRemappedValue(Value *key) { @@ -854,12 +847,11 @@ void ConversionPatternRewriter::cloneRegionBefore( } /// PatternRewriter hook for creating a new operation. -Operation * -ConversionPatternRewriter::createOperation(const OperationState &state) { - LLVM_DEBUG(llvm::dbgs() << "** Creating operation : " << state.name << "\n"); - auto *result = OpBuilder::createOperation(state); - impl->createdOps.push_back(result); - return result; +Operation *ConversionPatternRewriter::insert(Operation *op) { + LLVM_DEBUG(llvm::dbgs() << "** Inserting operation : " << op->getName() + << "\n"); + impl->createdOps.push_back(op); + return OpBuilder::insert(op); } /// PatternRewriter hook for updating the root operation in-place. -- cgit v1.2.3