[Lldb-commits] [lldb] [lldb][ClangASTSource][NFC] Clean up RegisterNamespaceMap (PR #172520)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Tue Dec 16 08:46:49 PST 2025
https://github.com/Michael137 updated https://github.com/llvm/llvm-project/pull/172520
>From 6094c7a174baa4021677ea6184c7e85c1bcbb562 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Tue, 16 Dec 2025 16:40:28 +0000
Subject: [PATCH 1/2] [lldb][ClangASTSource][NFC] Clean up RegisterNamespaceMap
I've been trying to wrap my head around this code but there's a lot of
action-at-a-distance going on which I'm having trouble following. This
patch cleans up a small part of it.
We were passing the `context`s namespace map as a separate mutable argument. But nothing in this function requires it to be mutable (and separate from the owning structure). This patch drops the redundant argument and passes the shared_ptr by value.
---
.../ExpressionParser/Clang/ClangASTImporter.cpp | 4 ++--
.../ExpressionParser/Clang/ClangASTImporter.h | 2 +-
.../ExpressionParser/Clang/ClangASTSource.cpp | 12 +++++-------
.../Plugins/ExpressionParser/Clang/ClangASTSource.h | 3 +--
4 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp
index e3b6ff8f17b4c..0a00335e5c9fb 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp
@@ -969,10 +969,10 @@ void ClangASTImporter::SetDeclOrigin(const clang::Decl *decl,
}
void ClangASTImporter::RegisterNamespaceMap(const clang::NamespaceDecl *decl,
- NamespaceMapSP &namespace_map) {
+ NamespaceMapSP namespace_map) {
ASTContextMetadataSP context_md = GetContextMetadata(&decl->getASTContext());
- context_md->m_namespace_maps[decl] = namespace_map;
+ context_md->m_namespace_maps[decl] = std::move(namespace_map);
}
ClangASTImporter::NamespaceMapSP
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.h
index 03d2556ca6f23..f13d8678f22b9 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.h
@@ -202,7 +202,7 @@ class ClangASTImporter {
typedef std::shared_ptr<NamespaceMap> NamespaceMapSP;
void RegisterNamespaceMap(const clang::NamespaceDecl *decl,
- NamespaceMapSP &namespace_map);
+ NamespaceMapSP namespace_map);
NamespaceMapSP GetNamespaceMap(const clang::NamespaceDecl *decl);
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
index 0efeb2e68decb..d18b02ef03256 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
@@ -545,8 +545,7 @@ void ClangASTSource::FindExternalVisibleDecls(NameSearchContext &context) {
LLDB_LOG(log, " CAS::FEVD Registering namespace map {0:x} ({1} entries)",
context.m_namespace_map.get(), context.m_namespace_map->size());
- NamespaceDecl *clang_namespace_decl =
- AddNamespace(context, context.m_namespace_map);
+ NamespaceDecl *clang_namespace_decl = AddNamespace(context);
if (clang_namespace_decl)
clang_namespace_decl->setHasExternalVisibleStorage();
@@ -1433,12 +1432,11 @@ void ClangASTSource::CompleteNamespaceMap(
}
NamespaceDecl *ClangASTSource::AddNamespace(
- NameSearchContext &context,
- ClangASTImporter::NamespaceMapSP &namespace_decls) {
- if (!namespace_decls)
+ NameSearchContext &context) {
+ if (!context.m_namespace_map)
return nullptr;
- const CompilerDeclContext &namespace_decl = namespace_decls->begin()->second;
+ const CompilerDeclContext &namespace_decl = context.m_namespace_map->begin()->second;
clang::ASTContext *src_ast =
TypeSystemClang::DeclContextGetTypeSystemClang(namespace_decl);
@@ -1463,7 +1461,7 @@ NamespaceDecl *ClangASTSource::AddNamespace(
context.m_decls.push_back(copied_namespace_decl);
m_ast_importer_sp->RegisterNamespaceMap(copied_namespace_decl,
- namespace_decls);
+ context.m_namespace_map);
return dyn_cast<NamespaceDecl>(copied_decl);
}
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
index 2450635555eb6..2937a94e62e16 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
@@ -188,8 +188,7 @@ class ClangASTSource : public clang::ExternalASTSource,
//
clang::NamespaceDecl *
- AddNamespace(NameSearchContext &context,
- ClangASTImporter::NamespaceMapSP &namespace_decls);
+ AddNamespace(NameSearchContext &context);
/// The worker function for FindExternalVisibleDeclsByName.
///
>From 0c67a924a843d9efa7d83b3d73754f6c4b1274a0 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuch12 at gmail.com>
Date: Tue, 16 Dec 2025 16:46:33 +0000
Subject: [PATCH 2/2] fixup! clang-format
---
.../Plugins/ExpressionParser/Clang/ClangASTSource.cpp | 6 +++---
lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h | 3 +--
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
index d18b02ef03256..65c8d3e1305aa 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
@@ -1431,12 +1431,12 @@ void ClangASTSource::CompleteNamespaceMap(
}
}
-NamespaceDecl *ClangASTSource::AddNamespace(
- NameSearchContext &context) {
+NamespaceDecl *ClangASTSource::AddNamespace(NameSearchContext &context) {
if (!context.m_namespace_map)
return nullptr;
- const CompilerDeclContext &namespace_decl = context.m_namespace_map->begin()->second;
+ const CompilerDeclContext &namespace_decl =
+ context.m_namespace_map->begin()->second;
clang::ASTContext *src_ast =
TypeSystemClang::DeclContextGetTypeSystemClang(namespace_decl);
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
index 2937a94e62e16..33edc2d1eecc7 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
@@ -187,8 +187,7 @@ class ClangASTSource : public clang::ExternalASTSource,
// Helper APIs
//
- clang::NamespaceDecl *
- AddNamespace(NameSearchContext &context);
+ clang::NamespaceDecl *AddNamespace(NameSearchContext &context);
/// The worker function for FindExternalVisibleDeclsByName.
///
More information about the lldb-commits
mailing list