Revert "[mlir][drr] NFC: avoid SmallVector when collecting substitution values"

This reverts commit 2f8b164ca2, which
causes a breakage on Clang 5.
This commit is contained in:
Lei Zhang 2020-04-24 15:33:03 -04:00
parent 4fd92cc475
commit 60f1d26366
2 changed files with 9 additions and 2 deletions

View File

@ -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("ValueRange{{{0}}", name));
auto repl = formatv(fmt, formatv("{{{0}}", name));
LLVM_DEBUG(llvm::dbgs() << repl << " (Value)\n");
return std::string(repl);
}

View File

@ -612,8 +612,15 @@ 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 (Value v : {0}) {{ tblgen_repl_values.push_back(v); }",
val,
" for (auto v : SmallVector<Value, 4>{ {0} }) {{ "
"tblgen_repl_values.push_back(v); }",
"\n");
}
os.indent(4) << "\n";