From: Lei Zhang Date: Thu, 23 Apr 2020 22:28:22 +0000 (-0400) Subject: [mlir][drr] NFC: avoid SmallVector when collecting substitution values X-Git-Tag: llvmorg-12-init~7950 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2f8b164ca220f8cd29d70c8359ed91e8fb8d9959;p=platform%2Fupstream%2Fllvm.git [mlir][drr] NFC: avoid SmallVector when collecting substitution values Now both Operation::operand_range and Operation::result_range have .begin() and .end() for ranged-based for loop and we have ValueRange for wrapping a single Value. We can remove the SmallVector materialization! Differential Revision: https://reviews.llvm.org/D78766 --- diff --git a/mlir/lib/TableGen/Pattern.cpp b/mlir/lib/TableGen/Pattern.cpp index b04c8e2..7fb3a96 100644 --- a/mlir/lib/TableGen/Pattern.cpp +++ b/mlir/lib/TableGen/Pattern.cpp @@ -345,7 +345,7 @@ std::string tblgen::SymbolInfoMap::SymbolInfo::getAllRangeUse( case Kind::Value: { assert(index < 0 && "only allowed for symbol bound to result"); assert(op == nullptr); - auto repl = formatv(fmt, formatv("{{{0}}", name)); + auto repl = formatv(fmt, formatv("ValueRange{{{0}}", name)); LLVM_DEBUG(llvm::dbgs() << repl << " (Value)\n"); return std::string(repl); } diff --git a/mlir/tools/mlir-tblgen/RewriterGen.cpp b/mlir/tools/mlir-tblgen/RewriterGen.cpp index 62638e6..8e8decc 100644 --- a/mlir/tools/mlir-tblgen/RewriterGen.cpp +++ b/mlir/tools/mlir-tblgen/RewriterGen.cpp @@ -612,15 +612,8 @@ void PatternEmitter::emitRewriteLogic() { auto val = handleResultPattern(resultTree, offsets[i], 0); os.indent(4) << "\n"; // Resolve each symbol for all range use so that we can loop over them. - // We need an explicit cast to `SmallVector` to capture the cases where - // `{0}` resolves to an `Operation::result_range` as well as cases that - // are not iterable (e.g. vector that gets wrapped in additional braces by - // RewriterGen). - // TODO(b/147096809): Revisit the need for materializing a vector. os << symbolInfoMap.getAllRangeUse( - val, - " for (auto v : SmallVector{ {0} }) {{ " - "tblgen_repl_values.push_back(v); }", + val, " for (Value v : {0}) {{ tblgen_repl_values.push_back(v); }", "\n"); } os.indent(4) << "\n";