[Mlir-commits] [mlir] [mlir] Fix use-after-move issues (PR #165660)
Slava Gurevich
llvmlistbot at llvm.org
Wed Oct 29 23:53:09 PDT 2025
https://github.com/noclowns updated https://github.com/llvm/llvm-project/pull/165660
>From 4bb2472eab1246414485873fc6415268e15dee3f Mon Sep 17 00:00:00 2001
From: Slava Gurevich <sgurevich at gmail.com>
Date: Wed, 29 Oct 2025 19:02:02 -0700
Subject: [PATCH] [MLIR] Fix use-after-move issues
This patch addresses two use-after-move issues:
1. Timing.cpp
A variable was std::moved and then immediately passed to an assert() check. Since the moved-from state made the assertion condition trivially true, the check was effectively useless. The assert() is removed.
2. Query.cpp
The `matcher` object was moved-from and then subsequently used as if it still retained valid state. The fix ensures no subsequent use of the moved-from variable.
Testing:
ninja check-mlir
---
mlir/lib/Query/Query.cpp | 5 +++--
mlir/lib/Support/Timing.cpp | 1 -
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/mlir/lib/Query/Query.cpp b/mlir/lib/Query/Query.cpp
index 375e82050a481..cf8a4d293299c 100644
--- a/mlir/lib/Query/Query.cpp
+++ b/mlir/lib/Query/Query.cpp
@@ -121,12 +121,13 @@ LogicalResult MatchQuery::run(llvm::raw_ostream &os, QuerySession &qs) const {
Operation *rootOp = qs.getRootOp();
int matchCount = 0;
matcher::MatchFinder finder;
+
+ StringRef functionName = matcher.getFunctionName();
auto matches = finder.collectMatches(rootOp, std::move(matcher));
// An extract call is recognized by considering if the matcher has a name.
// TODO: Consider making the extract more explicit.
- if (matcher.hasFunctionName()) {
- auto functionName = matcher.getFunctionName();
+ if (!functionName.empty()) {
std::vector<Operation *> flattenedMatches =
finder.flattenMatchedOps(matches);
Operation *function =
diff --git a/mlir/lib/Support/Timing.cpp b/mlir/lib/Support/Timing.cpp
index fb6f82c283df5..16306d72815f7 100644
--- a/mlir/lib/Support/Timing.cpp
+++ b/mlir/lib/Support/Timing.cpp
@@ -319,7 +319,6 @@ class TimerImpl {
void mergeChildren(AsyncChildrenMap &&other) {
for (auto &thread : other) {
mergeChildren(std::move(thread.second));
- assert(thread.second.empty());
}
other.clear();
}
More information about the Mlir-commits
mailing list