summaryrefslogtreecommitdiffstats
path: root/mlir/lib/Transforms
diff options
context:
space:
mode:
authorRiver Riddle <riverriddle@google.com>2019-12-06 20:06:48 -0800
committerA. Unique TensorFlower <gardener@tensorflow.org>2019-12-06 20:07:23 -0800
commit9d1a0c72b4ae54b97809966257bd1b9cb3140dfe (patch)
treefcbbbae63f398d3ed68ea4e3c788c4639fc7a15e /mlir/lib/Transforms
parentd27bc1db6a64b6caaf7f64d62a459a595773906b (diff)
downloadbcm5719-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.cpp19
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");
OpenPOWER on IntegriCloud