[Mlir-commits] [mlir] [MLIR] Fix use-after-move issues (PR #165660)
Slava Gurevich
llvmlistbot at llvm.org
Wed Oct 29 23:12:17 PDT 2025
https://github.com/noclowns created https://github.com/llvm/llvm-project/pull/165660
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 removes the `std::move` to preserve the original object. It is possible to restructure the surrounding logic to maintain the move semantics, but doing so would reduce clarity. If needed, such restructuring can be considered later based on performance profiling.
Testing:
`ninja check-mlir`
>From dc7376dbca0c45ab463188e9c17f7d8254ddd098 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 removes the std::move to preserve the original object.
It is possible to restructure the surrounding logic to maintain the move semantics, but doing so would reduce clarity. If needed, such restructuring can be considered later based on performance profiling.
Testing:
ninja check-mlir
---
mlir/lib/Query/Query.cpp | 2 +-
mlir/lib/Support/Timing.cpp | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/mlir/lib/Query/Query.cpp b/mlir/lib/Query/Query.cpp
index 375e82050a481..f391734def000 100644
--- a/mlir/lib/Query/Query.cpp
+++ b/mlir/lib/Query/Query.cpp
@@ -121,7 +121,7 @@ LogicalResult MatchQuery::run(llvm::raw_ostream &os, QuerySession &qs) const {
Operation *rootOp = qs.getRootOp();
int matchCount = 0;
matcher::MatchFinder finder;
- auto matches = finder.collectMatches(rootOp, std::move(matcher));
+ auto matches = finder.collectMatches(rootOp, matcher);
// An extract call is recognized by considering if the matcher has a name.
// TODO: Consider making the extract more explicit.
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