20std::vector<MatchFinder::MatchResult>
22 std::vector<MatchResult> results;
29 results.push_back(std::move(match));
30 }
else if (
matcher.match(subOp, tempStorage)) {
31 results.emplace_back(subOp, std::vector<Operation *>(tempStorage.begin(),
41 auto fileLoc = cast<FileLineColLoc>(op->
getLoc());
43 qs.
getBufferId(), fileLoc.getLine(), fileLoc.getColumn());
44 llvm::SMDiagnostic
diag =
46 diag.print(
"", os,
true,
false,
true);
50 Operation *op,
const std::string &binding)
const {
51 auto fileLoc = cast<FileLineColLoc>(op->
getLoc());
53 qs.
getBufferId(), fileLoc.getLine(), fileLoc.getColumn());
55 "\"" + binding +
"\" binds here");
58std::vector<Operation *>
60 std::vector<Operation *> newVector;
61 for (
auto &
result : matches) {
62 newVector.insert(newVector.end(),
result.matchedOps.begin(),
static std::string diag(const llvm::Value &value)
Operation is the basic unit of execution within MLIR.
Location getLoc()
The source location the operation was defined or derived from.
std::enable_if_t< llvm::function_traits< std::decay_t< FnT > >::num_args==1, RetT > walk(FnT &&callback)
Walk the operation by calling the callback for each nested operation (including this one),...
llvm::SourceMgr & getSourceManager() const
void printMatch(llvm::raw_ostream &os, QuerySession &qs, Operation *op) const
Prints the matched operation.
std::vector< MatchResult > collectMatches(Operation *root, DynMatcher matcher) const
Traverses the IR and returns a vector of MatchResult for each match of the matcher.
std::vector< Operation * > flattenMatchedOps(std::vector< MatchResult > &matches) const
Flattens a vector of MatchResult into a vector of operations.
Computes the backward-slice of all transitive defs reachable from rootOp, if innerMatcher matches.
A subclass which preserves the matching information.
std::vector< Operation * > matchedOps
Contains the matching environment.