[Mlir-commits] [mlir] 7265688 - Use more references in MLIR Diagnostic handling (NFC)
Mehdi Amini
llvmlistbot at llvm.org
Mon Jan 17 22:45:19 PST 2022
Author: Mehdi Amini
Date: 2022-01-18T06:45:04Z
New Revision: 7265688e0922a197a4be9095f6a727aa4b5cb2c1
URL: https://github.com/llvm/llvm-project/commit/7265688e0922a197a4be9095f6a727aa4b5cb2c1
DIFF: https://github.com/llvm/llvm-project/commit/7265688e0922a197a4be9095f6a727aa4b5cb2c1.diff
LOG: Use more references in MLIR Diagnostic handling (NFC)
This saves some copies of non-trivial objects, flagged by Coverity.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D117525
Added:
Modified:
mlir/include/mlir/IR/Diagnostics.h
mlir/lib/IR/Diagnostics.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/IR/Diagnostics.h b/mlir/include/mlir/IR/Diagnostics.h
index 8ccfe49f23c8b..b259e51b67a23 100644
--- a/mlir/include/mlir/IR/Diagnostics.h
+++ b/mlir/include/mlir/IR/Diagnostics.h
@@ -431,8 +431,9 @@ class DiagnosticEngine {
}
/// Emit a diagnostic using the registered issue handler if present, or with
- /// the default behavior if not.
- void emit(Diagnostic diag);
+ /// the default behavior if not. The diagnostic instance is consumed in the
+ /// process.
+ void emit(Diagnostic &&diag);
private:
friend class MLIRContextImpl;
diff --git a/mlir/lib/IR/Diagnostics.cpp b/mlir/lib/IR/Diagnostics.cpp
index d29feacb97867..e4d58c66d9928 100644
--- a/mlir/lib/IR/Diagnostics.cpp
+++ b/mlir/lib/IR/Diagnostics.cpp
@@ -209,7 +209,7 @@ namespace detail {
struct DiagnosticEngineImpl {
/// Emit a diagnostic using the registered issue handle if present, or with
/// the default behavior if not.
- void emit(Diagnostic diag);
+ void emit(Diagnostic &&diag);
/// A mutex to ensure that diagnostics emission is thread-safe.
llvm::sys::SmartMutex<true> mutex;
@@ -228,7 +228,7 @@ struct DiagnosticEngineImpl {
/// Emit a diagnostic using the registered issue handle if present, or with
/// the default behavior if not.
-void DiagnosticEngineImpl::emit(Diagnostic diag) {
+void DiagnosticEngineImpl::emit(Diagnostic &&diag) {
llvm::sys::SmartScopedLock<true> lock(mutex);
// Try to process the given diagnostic on one of the registered handlers.
@@ -277,7 +277,7 @@ void DiagnosticEngine::eraseHandler(HandlerID handlerID) {
/// Emit a diagnostic using the registered issue handler if present, or with
/// the default behavior if not.
-void DiagnosticEngine::emit(Diagnostic diag) {
+void DiagnosticEngine::emit(Diagnostic &&diag) {
assert(diag.getSeverity() != DiagnosticSeverity::Note &&
"notes should not be emitted directly");
impl->emit(std::move(diag));
@@ -869,13 +869,13 @@ struct ParallelDiagnosticHandlerImpl : public llvm::PrettyStackTraceEntry {
return;
// Emit the diagnostics back to the context.
- emitDiagnostics([&](Diagnostic diag) {
+ emitDiagnostics([&](Diagnostic &diag) {
return context->getDiagEngine().emit(std::move(diag));
});
}
/// Utility method to emit any held diagnostics.
- void emitDiagnostics(llvm::function_ref<void(Diagnostic)> emitFn) const {
+ void emitDiagnostics(llvm::function_ref<void(Diagnostic &)> emitFn) const {
// Stable sort all of the diagnostics that were emitted. This creates a
// deterministic ordering for the diagnostics based upon which order id they
// were emitted for.
@@ -883,7 +883,7 @@ struct ParallelDiagnosticHandlerImpl : public llvm::PrettyStackTraceEntry {
// Emit each diagnostic to the context again.
for (ThreadDiagnostic &diag : diagnostics)
- emitFn(std::move(diag.diag));
+ emitFn(diag.diag);
}
/// Set the order id for the current thread.
More information about the Mlir-commits
mailing list