[Lldb-commits] [lldb] 7edff3c - [lldb] Use one Progress event per root module build
Dave Lee via lldb-commits
lldb-commits at lists.llvm.org
Thu Mar 30 13:59:08 PDT 2023
Author: Dave Lee
Date: 2023-03-30T13:59:02-07:00
New Revision: 7edff3c1b298f696c632625fa863acbc7d68d446
URL: https://github.com/llvm/llvm-project/commit/7edff3c1b298f696c632625fa863acbc7d68d446
DIFF: https://github.com/llvm/llvm-project/commit/7edff3c1b298f696c632625fa863acbc7d68d446.diff
LOG: [lldb] Use one Progress event per root module build
Following the work done by @jdevlieghere in D143690, this changes how Clang module build
events are emitted.
Instead of one Progress event per module being built, a single Progress event is used to
encompass all modules, and each module build is sent as an `Increment` update.
Differential Revision: https://reviews.llvm.org/D147248
Added:
Modified:
lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
lldb/test/API/functionalities/progress_reporting/clang_modules/TestClangModuleBuildProgress.py
Removed:
################################################################################
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
index 2b98fc83097a..98c1b1a73b78 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp
@@ -68,7 +68,7 @@ class StoringDiagnosticConsumer : public clang::DiagnosticConsumer {
private:
bool HandleModuleRemark(const clang::Diagnostic &info);
- void SetCurrentModuleProgress(llvm::StringRef module_name);
+ void SetCurrentModuleProgress(std::string module_name);
typedef std::pair<clang::DiagnosticsEngine::Level, std::string>
IDAndDiagnostic;
@@ -208,8 +208,9 @@ bool StoringDiagnosticConsumer::HandleModuleRemark(
if (m_module_build_stack.empty()) {
m_current_progress_up = nullptr;
} else {
- // Update the progress to re-show the module that was currently being
- // built from the time the now completed module was originally began.
+ // When the just completed module began building, a module that depends on
+ // it ("module A") was effectively paused. Update the progress to re-show
+ // "module A" as continuing to be built.
const auto &resumed_module_name = m_module_build_stack.back();
SetCurrentModuleProgress(resumed_module_name);
}
@@ -224,13 +225,12 @@ bool StoringDiagnosticConsumer::HandleModuleRemark(
}
void StoringDiagnosticConsumer::SetCurrentModuleProgress(
- llvm::StringRef module_name) {
- // Ensure the ordering of:
- // 1. Completing the existing progress event.
- // 2. Beginining a new progress event.
- m_current_progress_up = nullptr;
- m_current_progress_up = std::make_unique<Progress>(
- llvm::formatv("Currently building module {0}", module_name));
+ std::string module_name) {
+ if (!m_current_progress_up)
+ m_current_progress_up =
+ std::make_unique<Progress>("Building Clang modules");
+
+ m_current_progress_up->Increment(1, std::move(module_name));
}
ClangModulesDeclVendor::ClangModulesDeclVendor()
diff --git a/lldb/test/API/functionalities/progress_reporting/clang_modules/TestClangModuleBuildProgress.py b/lldb/test/API/functionalities/progress_reporting/clang_modules/TestClangModuleBuildProgress.py
index af0b59cd555f..228f676aedf6 100644
--- a/lldb/test/API/functionalities/progress_reporting/clang_modules/TestClangModuleBuildProgress.py
+++ b/lldb/test/API/functionalities/progress_reporting/clang_modules/TestClangModuleBuildProgress.py
@@ -43,4 +43,4 @@ def test_clang_module_build_progress_report(self):
event = lldbutil.fetch_next_event(self, listener, broadcaster)
payload = lldb.SBDebugger.GetProgressFromEvent(event)
message = payload[0]
- self.assertEqual(message, "Currently building module MyModule")
+ self.assertEqual(message, "Building Clang modules")
More information about the lldb-commits
mailing list