diff options
| author | River Riddle <riverriddle@google.com> | 2019-12-06 20:06:48 -0800 |
|---|---|---|
| committer | A. Unique TensorFlower <gardener@tensorflow.org> | 2019-12-06 20:07:23 -0800 |
| commit | 9d1a0c72b4ae54b97809966257bd1b9cb3140dfe (patch) | |
| tree | fcbbbae63f398d3ed68ea4e3c788c4639fc7a15e /mlir/lib/Transforms | |
| parent | d27bc1db6a64b6caaf7f64d62a459a595773906b (diff) | |
| download | bcm5719-llvm-9d1a0c72b4ae54b97809966257bd1b9cb3140dfe.tar.gz bcm5719-llvm-9d1a0c72b4ae54b97809966257bd1b9cb3140dfe.zip | |
Add a new ValueRange class.
This class represents a generic abstraction over the different ways to represent a range of Values: ArrayRef<Value *>, operand_range, result_range. This class will allow for removing the many instances of explicit SmallVector<Value *, N> construction. It has the same memory cost as ArrayRef, and only suffers cost from indexing(if+elsing the different underlying representations).
This change only updates a few of the existing usages, with more to be changed in followups; e.g. 'build' API.
PiperOrigin-RevId: 284307996
Diffstat (limited to 'mlir/lib/Transforms')
| -rw-r--r-- | mlir/lib/Transforms/DialectConversion.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/mlir/lib/Transforms/DialectConversion.cpp b/mlir/lib/Transforms/DialectConversion.cpp index b1feea68a92..6d34db90912 100644 --- a/mlir/lib/Transforms/DialectConversion.cpp +++ b/mlir/lib/Transforms/DialectConversion.cpp @@ -416,7 +416,7 @@ struct ConversionPatternRewriterImpl { /// This class represents one requested operation replacement via 'replaceOp'. struct OpReplacement { OpReplacement() = default; - OpReplacement(Operation *op, ArrayRef<Value *> newValues) + OpReplacement(Operation *op, ValueRange newValues) : op(op), newValues(newValues.begin(), newValues.end()) {} Operation *op; @@ -501,8 +501,8 @@ struct ConversionPatternRewriterImpl { TypeConverter::SignatureConversion &conversion); /// PatternRewriter hook for replacing the results of an operation. - void replaceOp(Operation *op, ArrayRef<Value *> newValues, - ArrayRef<Value *> valuesToRemoveIfDead); + void replaceOp(Operation *op, ValueRange newValues, + ValueRange valuesToRemoveIfDead); /// Notifies that a block was split. void notifySplitBlock(Block *block, Block *continuation); @@ -687,9 +687,9 @@ Block *ConversionPatternRewriterImpl::applySignatureConversion( return nullptr; } -void ConversionPatternRewriterImpl::replaceOp( - Operation *op, ArrayRef<Value *> newValues, - ArrayRef<Value *> valuesToRemoveIfDead) { +void ConversionPatternRewriterImpl::replaceOp(Operation *op, + ValueRange newValues, + ValueRange valuesToRemoveIfDead) { assert(newValues.size() == op->getNumResults()); // Create mappings for each of the new result values. @@ -769,9 +769,8 @@ ConversionPatternRewriter::ConversionPatternRewriter(MLIRContext *ctx, ConversionPatternRewriter::~ConversionPatternRewriter() {} /// PatternRewriter hook for replacing the results of an operation. -void ConversionPatternRewriter::replaceOp( - Operation *op, ArrayRef<Value *> newValues, - ArrayRef<Value *> valuesToRemoveIfDead) { +void ConversionPatternRewriter::replaceOp(Operation *op, ValueRange newValues, + ValueRange valuesToRemoveIfDead) { LLVM_DEBUG(llvm::dbgs() << "** Replacing operation : " << op->getName() << "\n"); impl->replaceOp(op, newValues, valuesToRemoveIfDead); @@ -826,7 +825,7 @@ Block *ConversionPatternRewriter::splitBlock(Block *block, /// PatternRewriter hook for merging a block into another. void ConversionPatternRewriter::mergeBlocks(Block *source, Block *dest, - ArrayRef<Value *> argValues) { + ValueRange argValues) { // TODO(riverriddle) This requires fixing the implementation of // 'replaceUsesOfBlockArgument', which currently isn't undoable. llvm_unreachable("block merging updates are currently not supported"); |

