[Mlir-commits] [mlir] cab4c10 - [mlir][AsmParser] Avoid use of moved value (#108789)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Sep 16 01:59:42 PDT 2024
Author: Youngsuk Kim
Date: 2024-09-16T04:59:38-04:00
New Revision: cab4c10eedfa4f2537877e96afc376fe47189b10
URL: https://github.com/llvm/llvm-project/commit/cab4c10eedfa4f2537877e96afc376fe47189b10
DIFF: https://github.com/llvm/llvm-project/commit/cab4c10eedfa4f2537877e96afc376fe47189b10.diff
LOG: [mlir][AsmParser] Avoid use of moved value (#108789)
'std::string detailData' is moved in the innermost loop of a 2-layer
loop, but is written to throughout the whole duration of the 2-layer
loop.
After move, std::string is in an unspecified state
(implementation-dependent).
Avoid using a moved value, as it incurs undefined behavior.
Added:
Modified:
mlir/lib/AsmParser/Parser.cpp
Removed:
################################################################################
diff --git a/mlir/lib/AsmParser/Parser.cpp b/mlir/lib/AsmParser/Parser.cpp
index 2e4c4a36d46b9b..83eec3244009d8 100644
--- a/mlir/lib/AsmParser/Parser.cpp
+++ b/mlir/lib/AsmParser/Parser.cpp
@@ -2412,14 +2412,15 @@ ParseResult OperationParser::parseOptionalBlockArgList(Block *owner) {
//===----------------------------------------------------------------------===//
ParseResult OperationParser::codeCompleteSSAUse() {
- std::string detailData;
- llvm::raw_string_ostream detailOS(detailData);
for (IsolatedSSANameScope &scope : isolatedNameScopes) {
for (auto &it : scope.values) {
if (it.second.empty())
continue;
Value frontValue = it.second.front().value;
+ std::string detailData;
+ llvm::raw_string_ostream detailOS(detailData);
+
// If the value isn't a forward reference, we also add the name of the op
// to the detail.
if (auto result = dyn_cast<OpResult>(frontValue)) {
@@ -2440,7 +2441,7 @@ ParseResult OperationParser::codeCompleteSSAUse() {
detailOS << ", ...";
state.codeCompleteContext->appendSSAValueCompletion(
- it.getKey(), std::move(detailOS.str()));
+ it.getKey(), std::move(detailData));
}
}
More information about the Mlir-commits
mailing list