File tree Expand file tree Collapse file tree 1 file changed +4
-0
lines changed Expand file tree Collapse file tree 1 file changed +4
-0
lines changed Original file line number Diff line number Diff line change 10
10
#include " QueryParser.h"
11
11
#include " mlir/Dialect/Func/IR/FuncOps.h"
12
12
#include " mlir/IR/IRMapping.h"
13
+ #include " mlir/IR/Verifier.h"
13
14
#include " mlir/Query/Matcher/MatchFinder.h"
14
15
#include " mlir/Query/QuerySession.h"
15
16
#include " llvm/ADT/SetVector.h"
@@ -68,6 +69,7 @@ static Operation *extractFunction(std::vector<Operation *> &ops,
68
69
// Clone operations and build function body
69
70
std::vector<Operation *> clonedOps;
70
71
std::vector<Value> clonedVals;
72
+ // TODO: Handle extraction of operations containing block arguments.
71
73
for (Operation *slicedOp : slice) {
72
74
Operation *clonedOp =
73
75
clonedOps.emplace_back (builder.clone (*slicedOp, mapper));
@@ -129,6 +131,8 @@ LogicalResult MatchQuery::run(llvm::raw_ostream &os, QuerySession &qs) const {
129
131
finder.flattenMatchedOps (matches);
130
132
Operation *function =
131
133
extractFunction (flattenedMatches, rootOp->getContext (), functionName);
134
+ if (failed (verify (function)))
135
+ return mlir::failure ();
132
136
os << " \n " << *function << " \n\n " ;
133
137
function->erase ();
134
138
return mlir::success ();
You can’t perform that action at this time.
0 commit comments