[Lldb-commits] [lldb] [llvm] [LLDB][NativePDB] Introduce PdbAstBuilderClang (PR #175840)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Jan 13 14:20:55 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Leonard Grey (speednoisemovement)
<details>
<summary>Changes</summary>
This changes `PdbAstBuilder` to a language-neutral abstract interface and moves all of its functionality to the `PdbAstBuilderClang` derived class.
All Clang-specific methods with external callers are now public methods on `PdbAstBuilderClang` and `TypeSystemClang` and `UdtRecordCompleter` use this type directly.
Did my best to clean up includes and unused methods.
RFC for context:
https://discourse.llvm.org/t/rfc-lldb-make-pdbastbuilder-language-agnostic/89117
---
Patch is 43.07 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/175840.diff
9 Files Affected:
- (modified) lldb/source/Plugins/SymbolFile/NativePDB/CMakeLists.txt (+1-1)
- (modified) lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.h (+23-147)
- (renamed) lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.cpp (+83-76)
- (added) lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.h (+182)
- (modified) lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.cpp (+2-2)
- (modified) lldb/source/Plugins/SymbolFile/NativePDB/UdtRecordCompleter.h (+3-4)
- (modified) lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp (+3-2)
- (modified) lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h (+7-1)
- (modified) llvm/utils/gn/secondary/lldb/source/Plugins/SymbolFile/NativePDB/BUILD.gn (+1-1)
``````````diff
diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/CMakeLists.txt b/lldb/source/Plugins/SymbolFile/NativePDB/CMakeLists.txt
index 21756bb26c855..b13c112ce2927 100644
--- a/lldb/source/Plugins/SymbolFile/NativePDB/CMakeLists.txt
+++ b/lldb/source/Plugins/SymbolFile/NativePDB/CMakeLists.txt
@@ -2,7 +2,7 @@ add_lldb_library(lldbPluginSymbolFileNativePDB
CodeViewRegisterMapping.cpp
CompileUnitIndex.cpp
DWARFLocationExpression.cpp
- PdbAstBuilder.cpp
+ PdbAstBuilderClang.cpp
PdbFPOProgramToDWARFExpression.cpp
PdbIndex.cpp
PdbSymUid.cpp
diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.h b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.h
index d94de860576b5..86b3a8dd0d6a2 100644
--- a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.h
+++ b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.h
@@ -9,170 +9,46 @@
#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_PDBASTBUILDER_H
#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_PDBASTBUILDER_H
-#include "llvm/ADT/DenseMap.h"
+#include "lldb/Symbol/CompilerDecl.h"
+#include "lldb/Symbol/CompilerDeclContext.h"
+#include "lldb/Symbol/CompilerType.h"
+#include "lldb/lldb-types.h"
#include "llvm/ADT/StringRef.h"
-#include "llvm/Support/Threading.h"
-#include "Plugins/ExpressionParser/Clang/ClangASTImporter.h"
-
-#include "PdbIndex.h"
#include "PdbSymUid.h"
#include <optional>
-namespace clang {
-class TagDecl;
-class DeclContext;
-class Decl;
-class QualType;
-class FunctionDecl;
-class NamespaceDecl;
-} // namespace clang
-
-namespace llvm {
-namespace codeview {
-class ProcSym;
-}
-} // namespace llvm
-
namespace lldb_private {
-class ClangASTImporter;
-class ObjectFile;
+class Stream;
namespace npdb {
-class PdbIndex;
-struct VariableInfo;
-
-struct DeclStatus {
- DeclStatus() = default;
- DeclStatus(lldb::user_id_t uid, bool resolved)
- : uid(uid), resolved(resolved) {}
- lldb::user_id_t uid = 0;
- bool resolved = false;
-};
class PdbAstBuilder {
public:
- // Constructors and Destructors
- PdbAstBuilder(TypeSystemClang &clang);
-
- lldb_private::CompilerDeclContext GetTranslationUnitDecl();
-
- std::optional<lldb_private::CompilerDecl>
- GetOrCreateDeclForUid(PdbSymUid uid);
- lldb_private::CompilerDeclContext GetOrCreateDeclContextForUid(PdbSymUid uid);
- clang::DeclContext *GetOrCreateClangDeclContextForUid(PdbSymUid uid);
- lldb_private::CompilerDeclContext GetParentDeclContext(PdbSymUid uid);
- clang::DeclContext *GetParentClangDeclContext(PdbSymUid uid);
-
- void EnsureFunction(PdbCompilandSymId func_id);
- void EnsureInlinedFunction(PdbCompilandSymId inlinesite_id);
- void EnsureBlock(PdbCompilandSymId block_id);
- void EnsureVariable(PdbCompilandSymId scope_id, PdbCompilandSymId var_id);
- void EnsureVariable(PdbGlobalSymId var_id);
- CompilerType GetOrCreateTypedefType(PdbGlobalSymId id);
- void ParseDeclsForContext(lldb_private::CompilerDeclContext context);
-
- clang::QualType GetBasicType(lldb::BasicType type);
- clang::QualType GetOrCreateClangType(PdbTypeSymId type);
- CompilerType GetOrCreateType(PdbTypeSymId type);
-
- bool CompleteTagDecl(clang::TagDecl &tag);
- bool CompleteType(CompilerType ct);
-
- CompilerDecl ToCompilerDecl(clang::Decl *decl);
- CompilerType ToCompilerType(clang::QualType qt);
- CompilerDeclContext ToCompilerDeclContext(clang::DeclContext *context);
- clang::QualType FromCompilerType(CompilerType ct);
- clang::Decl *FromCompilerDecl(CompilerDecl decl);
- clang::DeclContext *FromCompilerDeclContext(CompilerDeclContext context);
-
- TypeSystemClang &clang() { return m_clang; }
- ClangASTImporter &GetClangASTImporter() { return m_importer; }
-
- void Dump(Stream &stream, llvm::StringRef filter, bool show_color);
-
- lldb_private::CompilerDeclContext
- FindNamespaceDecl(lldb_private::CompilerDeclContext parent_ctx,
- llvm::StringRef name);
-
-private:
- clang::Decl *TryGetDecl(PdbSymUid uid) const;
-
- clang::FunctionDecl *GetOrCreateFunctionDecl(PdbCompilandSymId func_id);
- clang::FunctionDecl *
- GetOrCreateInlinedFunctionDecl(PdbCompilandSymId inlinesite_id);
- clang::BlockDecl *GetOrCreateBlockDecl(PdbCompilandSymId block_id);
- clang::VarDecl *GetOrCreateVariableDecl(PdbCompilandSymId scope_id,
- PdbCompilandSymId var_id);
- clang::VarDecl *GetOrCreateVariableDecl(PdbGlobalSymId var_id);
-
- using TypeIndex = llvm::codeview::TypeIndex;
-
- clang::QualType
- CreatePointerType(const llvm::codeview::PointerRecord &pointer);
- clang::QualType
- CreateModifierType(const llvm::codeview::ModifierRecord &modifier);
- clang::QualType CreateArrayType(const llvm::codeview::ArrayRecord &array);
- clang::QualType CreateRecordType(PdbTypeSymId id,
- const llvm::codeview::TagRecord &record);
- clang::QualType CreateEnumType(PdbTypeSymId id,
- const llvm::codeview::EnumRecord &record);
- clang::QualType
- CreateFunctionType(TypeIndex args_type_idx, TypeIndex return_type_idx,
- llvm::codeview::CallingConvention calling_convention);
- clang::QualType CreateType(PdbTypeSymId type);
-
- void CreateFunctionParameters(PdbCompilandSymId func_id,
- clang::FunctionDecl &function_decl,
- uint32_t param_count);
- clang::Decl *GetOrCreateSymbolForId(PdbCompilandSymId id);
- clang::VarDecl *CreateVariableDecl(PdbSymUid uid,
- llvm::codeview::CVSymbol sym,
- clang::DeclContext &scope);
- clang::NamespaceDecl *GetOrCreateNamespaceDecl(const char *name,
- clang::DeclContext &context);
- clang::FunctionDecl *CreateFunctionDeclFromId(PdbTypeSymId func_tid,
- PdbCompilandSymId func_sid);
- clang::FunctionDecl *
- CreateFunctionDecl(PdbCompilandSymId func_id, llvm::StringRef func_name,
- TypeIndex func_ti, CompilerType func_ct,
- uint32_t param_count, clang::StorageClass func_storage,
- bool is_inline, clang::DeclContext *parent);
- void ParseNamespace(clang::DeclContext &parent);
- void ParseAllTypes();
- void ParseAllFunctionsAndNonLocalVars();
- void ParseDeclsForSimpleContext(clang::DeclContext &context);
- void ParseBlockChildren(PdbCompilandSymId block_id);
-
- std::pair<clang::DeclContext *, std::string>
- CreateDeclInfoForType(const llvm::codeview::TagRecord &record, TypeIndex ti);
- std::pair<clang::DeclContext *, std::string>
- CreateDeclInfoForUndecoratedName(llvm::StringRef uname);
- clang::QualType CreateSimpleType(TypeIndex ti);
+ virtual ~PdbAstBuilder() = default;
- TypeSystemClang &m_clang;
+ virtual std::optional<CompilerDecl> GetOrCreateDeclForUid(PdbSymUid uid) = 0;
+ virtual CompilerDeclContext GetOrCreateDeclContextForUid(PdbSymUid uid) = 0;
+ virtual CompilerDeclContext GetParentDeclContext(PdbSymUid uid) = 0;
- ClangASTImporter m_importer;
- llvm::once_flag m_parse_functions_and_non_local_vars;
- llvm::once_flag m_parse_all_types;
- llvm::DenseMap<clang::Decl *, DeclStatus> m_decl_to_status;
- llvm::DenseMap<lldb::user_id_t, clang::Decl *> m_uid_to_decl;
- llvm::DenseMap<lldb::user_id_t, clang::QualType> m_uid_to_type;
+ virtual void EnsureFunction(PdbCompilandSymId func_id) = 0;
+ virtual void EnsureInlinedFunction(PdbCompilandSymId inlinesite_id) = 0;
+ virtual void EnsureBlock(PdbCompilandSymId block_id) = 0;
+ virtual void EnsureVariable(PdbCompilandSymId scope_id,
+ PdbCompilandSymId var_id) = 0;
+ virtual void EnsureVariable(PdbGlobalSymId var_id) = 0;
- // From class/struct's opaque_compiler_type_t to a set containing the pairs of
- // method's name and CompilerType.
- llvm::DenseMap<lldb::opaque_compiler_type_t,
- llvm::SmallSet<std::pair<llvm::StringRef, CompilerType>, 8>>
- m_cxx_record_map;
+ virtual CompilerType GetOrCreateType(PdbTypeSymId type) = 0;
+ virtual CompilerType GetOrCreateTypedefType(PdbGlobalSymId id) = 0;
+ virtual bool CompleteType(CompilerType ct) = 0;
- using NamespaceSet = llvm::DenseSet<clang::NamespaceDecl *>;
+ virtual void ParseDeclsForContext(CompilerDeclContext context) = 0;
- // These namespaces are fully parsed
- NamespaceSet m_parsed_namespaces;
+ virtual CompilerDeclContext FindNamespaceDecl(CompilerDeclContext parent_ctx,
+ llvm::StringRef name) = 0;
- // We know about these namespaces, but they might not be completely parsed yet
- NamespaceSet m_known_namespaces;
- llvm::DenseMap<clang::DeclContext *, NamespaceSet> m_parent_to_namespaces;
+ virtual void Dump(Stream &stream, llvm::StringRef filter,
+ bool show_color) = 0;
};
} // namespace npdb
diff --git a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.cpp
similarity index 90%
rename from lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
rename to lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.cpp
index 61f09dff3c7e5..80baaf18d4d97 100644
--- a/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilder.cpp
+++ b/lldb/source/Plugins/SymbolFile/NativePDB/PdbAstBuilderClang.cpp
@@ -1,4 +1,4 @@
-#include "PdbAstBuilder.h"
+#include "PdbAstBuilderClang.h"
#include "llvm/DebugInfo/CodeView/CVTypeVisitor.h"
#include "llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h"
@@ -161,14 +161,16 @@ static bool IsAnonymousNamespaceName(llvm::StringRef name) {
return name == "`anonymous namespace'" || name == "`anonymous-namespace'";
}
-PdbAstBuilder::PdbAstBuilder(TypeSystemClang &clang) : m_clang(clang) {}
+PdbAstBuilderClang::PdbAstBuilderClang(TypeSystemClang &clang)
+ : m_clang(clang) {}
-lldb_private::CompilerDeclContext PdbAstBuilder::GetTranslationUnitDecl() {
+lldb_private::CompilerDeclContext PdbAstBuilderClang::GetTranslationUnitDecl() {
return ToCompilerDeclContext(m_clang.GetTranslationUnitDecl());
}
std::pair<clang::DeclContext *, std::string>
-PdbAstBuilder::CreateDeclInfoForType(const TagRecord &record, TypeIndex ti) {
+PdbAstBuilderClang::CreateDeclInfoForType(const TagRecord &record,
+ TypeIndex ti) {
SymbolFileNativePDB *pdb = static_cast<SymbolFileNativePDB *>(
m_clang.GetSymbolFile()->GetBackingSymbolFile());
// FIXME: Move this to GetDeclContextContainingUID.
@@ -240,7 +242,7 @@ static bool isLocalVariableType(SymbolKind K) {
return false;
}
-clang::Decl *PdbAstBuilder::GetOrCreateSymbolForId(PdbCompilandSymId id) {
+clang::Decl *PdbAstBuilderClang::GetOrCreateSymbolForId(PdbCompilandSymId id) {
SymbolFileNativePDB *pdb = static_cast<SymbolFileNativePDB *>(
m_clang.GetSymbolFile()->GetBackingSymbolFile());
PdbIndex &index = pdb->GetIndex();
@@ -276,7 +278,7 @@ clang::Decl *PdbAstBuilder::GetOrCreateSymbolForId(PdbCompilandSymId id) {
}
std::optional<CompilerDecl>
-PdbAstBuilder::GetOrCreateDeclForUid(PdbSymUid uid) {
+PdbAstBuilderClang::GetOrCreateDeclForUid(PdbSymUid uid) {
if (clang::Decl *result = TryGetDecl(uid))
return ToCompilerDecl(result);
@@ -306,7 +308,7 @@ PdbAstBuilder::GetOrCreateDeclForUid(PdbSymUid uid) {
}
clang::DeclContext *
-PdbAstBuilder::GetOrCreateClangDeclContextForUid(PdbSymUid uid) {
+PdbAstBuilderClang::GetOrCreateClangDeclContextForUid(PdbSymUid uid) {
if (uid.kind() == PdbSymUidKind::CompilandSym) {
if (uid.asCompilandSym().offset == 0)
return FromCompilerDeclContext(GetTranslationUnitDecl());
@@ -321,12 +323,13 @@ PdbAstBuilder::GetOrCreateClangDeclContextForUid(PdbSymUid uid) {
return clang::Decl::castToDeclContext(decl);
}
-CompilerDeclContext PdbAstBuilder::GetOrCreateDeclContextForUid(PdbSymUid uid) {
+CompilerDeclContext
+PdbAstBuilderClang::GetOrCreateDeclContextForUid(PdbSymUid uid) {
return ToCompilerDeclContext(GetOrCreateClangDeclContextForUid(uid));
}
std::pair<clang::DeclContext *, std::string>
-PdbAstBuilder::CreateDeclInfoForUndecoratedName(llvm::StringRef name) {
+PdbAstBuilderClang::CreateDeclInfoForUndecoratedName(llvm::StringRef name) {
SymbolFileNativePDB *pdb = static_cast<SymbolFileNativePDB *>(
m_clang.GetSymbolFile()->GetBackingSymbolFile());
PdbIndex &index = pdb->GetIndex();
@@ -362,12 +365,13 @@ PdbAstBuilder::CreateDeclInfoForUndecoratedName(llvm::StringRef name) {
return {context, std::string(uname)};
}
-clang::DeclContext *PdbAstBuilder::GetParentClangDeclContext(PdbSymUid uid) {
+clang::DeclContext *
+PdbAstBuilderClang::GetParentClangDeclContext(PdbSymUid uid) {
// We must do this *without* calling GetOrCreate on the current uid, as
// that would be an infinite recursion.
SymbolFileNativePDB *pdb = static_cast<SymbolFileNativePDB *>(
m_clang.GetSymbolFile()->GetBackingSymbolFile());
- PdbIndex& index = pdb->GetIndex();
+ PdbIndex &index = pdb->GetIndex();
switch (uid.kind()) {
case PdbSymUidKind::CompilandSym: {
std::optional<PdbCompilandSymId> scope =
@@ -402,7 +406,7 @@ clang::DeclContext *PdbAstBuilder::GetParentClangDeclContext(PdbSymUid uid) {
switch (global.kind()) {
case SymbolKind::S_GDATA32:
case SymbolKind::S_LDATA32:
- return CreateDeclInfoForUndecoratedName(getSymbolName(global)).first;;
+ return CreateDeclInfoForUndecoratedName(getSymbolName(global)).first;
case SymbolKind::S_PROCREF:
case SymbolKind::S_LPROCREF: {
ProcRefSym ref{global.kind()};
@@ -425,11 +429,11 @@ clang::DeclContext *PdbAstBuilder::GetParentClangDeclContext(PdbSymUid uid) {
return FromCompilerDeclContext(GetTranslationUnitDecl());
}
-CompilerDeclContext PdbAstBuilder::GetParentDeclContext(PdbSymUid uid) {
+CompilerDeclContext PdbAstBuilderClang::GetParentDeclContext(PdbSymUid uid) {
return ToCompilerDeclContext(GetParentClangDeclContext(uid));
}
-bool PdbAstBuilder::CompleteType(CompilerType ct) {
+bool PdbAstBuilderClang::CompleteType(CompilerType ct) {
if (GetClangASTImporter().CanImport(ct))
return GetClangASTImporter().CompleteType(ct);
@@ -447,7 +451,7 @@ bool PdbAstBuilder::CompleteType(CompilerType ct) {
return CompleteTagDecl(*tag);
}
-bool PdbAstBuilder::CompleteTagDecl(clang::TagDecl &tag) {
+bool PdbAstBuilderClang::CompleteTagDecl(clang::TagDecl &tag) {
// If this is not in our map, it's an error.
auto status_iter = m_decl_to_status.find(&tag);
lldbassert(status_iter != m_decl_to_status.end());
@@ -507,7 +511,7 @@ bool PdbAstBuilder::CompleteTagDecl(clang::TagDecl &tag) {
return true;
}
-clang::QualType PdbAstBuilder::CreateSimpleType(TypeIndex ti) {
+clang::QualType PdbAstBuilderClang::CreateSimpleType(TypeIndex ti) {
if (ti == TypeIndex::NullptrT())
return GetBasicType(lldb::eBasicTypeNullPtr);
@@ -528,7 +532,8 @@ clang::QualType PdbAstBuilder::CreateSimpleType(TypeIndex ti) {
return GetBasicType(bt);
}
-clang::QualType PdbAstBuilder::CreatePointerType(const PointerRecord &pointer) {
+clang::QualType
+PdbAstBuilderClang::CreatePointerType(const PointerRecord &pointer) {
clang::QualType pointee_type = GetOrCreateClangType(pointer.ReferentType);
// This can happen for pointers to LF_VTSHAPE records, which we shouldn't
@@ -601,7 +606,7 @@ clang::QualType PdbAstBuilder::CreatePointerType(const PointerRecord &pointer) {
}
clang::QualType
-PdbAstBuilder::CreateModifierType(const ModifierRecord &modifier) {
+PdbAstBuilderClang::CreateModifierType(const ModifierRecord &modifier) {
clang::QualType unmodified_type = GetOrCreateClangType(modifier.ModifiedType);
if (unmodified_type.isNull())
return {};
@@ -614,8 +619,8 @@ PdbAstBuilder::CreateModifierType(const ModifierRecord &modifier) {
return unmodified_type;
}
-clang::QualType PdbAstBuilder::CreateRecordType(PdbTypeSymId id,
- const TagRecord &record) {
+clang::QualType PdbAstBuilderClang::CreateRecordType(PdbTypeSymId id,
+ const TagRecord &record) {
clang::DeclContext *context = nullptr;
std::string uname;
std::tie(context, uname) = CreateDeclInfoForType(record, id.index);
@@ -649,7 +654,7 @@ clang::QualType PdbAstBuilder::CreateRecordType(PdbTypeSymId id,
return result;
}
-clang::Decl *PdbAstBuilder::TryGetDecl(PdbSymUid uid) const {
+clang::Decl *PdbAstBuilderClang::TryGetDecl(PdbSymUid uid) const {
auto iter = m_uid_to_decl.find(toOpaqueUid(uid));
if (iter != m_uid_to_decl.end())
return iter->second;
@@ -657,8 +662,8 @@ clang::Decl *PdbAstBuilder::TryGetDecl(PdbSymUid uid) const {
}
clang::NamespaceDecl *
-PdbAstBuilder::GetOrCreateNamespaceDecl(const char *name,
- clang::DeclContext &context) {
+PdbAstBuilderClang::GetOrCreateNamespaceDecl(const char *name,
+ clang::DeclContext &context) {
clang::NamespaceDecl *ns = m_clang.GetUniqueNamespaceDeclaration(
IsAnonymousNamespaceName(name) ? nullptr : name, &context,
OptionalClangModuleID());
@@ -668,7 +673,7 @@ PdbAstBuilder::GetOrCreateNamespaceDecl(const char *name,
}
clang::BlockDecl *
-PdbAstBuilder::GetOrCreateBlockDecl(PdbCompilandSymId block_id) {
+PdbAstBuilderClang::GetOrCreateBlockDecl(PdbCompilandSymId block_id) {
if (clang::Decl *decl = TryGetDecl(block_id))
return llvm::dyn_cast<clang::BlockDecl>(decl);
@@ -686,8 +691,9 @@ PdbAstBuilder::GetOrCreateBlockDecl(PdbCompilandSymId block_id) {
return block_decl;
}
-clang::VarDecl *PdbAstBuilder::CreateVariableDecl(PdbSymUid uid, CVSymbol sym,
- clang::DeclContext &scope) {
+clang::VarDecl *
+PdbAstBuilderClang::CreateVariableDecl(PdbSymUid uid, CVSymbol sym,
+ clang::DeclContext &scope) {
VariableInfo var_info = GetVariableNameInfo(sym);
clang::QualType qt = GetOrCreateClangType(var_info.type);
if (qt.isNull())
@@ -705,8 +711,8 @@ clang::VarDecl *PdbAstBuilder::CreateVariableDecl(PdbSymUid uid, CVSymbol sym,
}
clang::VarDecl *
-PdbAstBuilder::GetOrCreateVariableDecl(PdbCompilandSymId scope_id,
- PdbCompilandSymId var_id) {
+PdbAstBuilderClang::GetOrCreateVariableDecl(PdbCompilandSymId scope_id,
+ PdbCompilandSymId var_id) {
if (clang::Decl *decl = TryGetDecl(var_id))
return llvm::dyn_cast<clang::VarDecl>(decl);
@@ -721,7 +727,8 @@ PdbAstBuilder::GetOrCreateVariableDecl(PdbCompilandSymId scope_id,
return CreateVariableDecl(PdbSymUid(var_id), sym, *scope);
}
-clang::VarDecl *PdbAstBuilder::GetOrCreateVariableDecl(PdbGlobalSymId var_id) {
+clang::VarDecl *
+PdbAstBuilderClang::GetOrCreateVariableDecl(PdbGlobalSymId var_id) {
if (clang::Decl *decl = TryGetDecl(var_id))
return llvm::dyn_cast<clang::VarDecl>(decl);
@@ -733,7 +740,7 @@ clang::VarDecl *PdbAstBuilder::GetOrCreateVariableDecl(PdbGlobalSymId var_id) {
return CreateVariableDecl(PdbSymUid(var_id), sym, *context);
}
-CompilerType PdbAstBuilder::GetOrCreateTypedefType(PdbGlobalSymId id) {
+CompilerType PdbAstBuilderClang::GetOrCreateTypedefType(PdbGlobalSymId id) {
if (clang::Decl *decl = TryGetDecl(id)) {
if (auto *tnd = llvm::dyn_cast<clang::TypedefNameDecl>(decl))
return ToCompilerType(m_clang.getASTContext().getTypeDeclType(tnd));
@@ -765,12 +772,12 @@ CompilerType PdbAstBuilder::GetOrCreateTypedefType(PdbGlobalSymId id) {
return ct;
}
-clang::QualType PdbAstBuilder::GetBasicType(lldb::BasicType type) {
+clang::QualType PdbAstBuilderClang::GetBasicType(lldb::BasicType type) {
CompilerType ct = m_clang.GetBasicType(type);
return clang::QualType::getFromOpaquePtr(ct.GetOpaqueQualType());
}
-clang::QualType PdbAstBuilder::CreateType(PdbTypeSymId type) {
+clang::QualType PdbAstBuilderClang::CreateType(PdbTypeSymId type) {
if (type.index.isSimple())
return CreateSimpleType(type.index);
@@ -824,7 +831,7 @@ clang::QualType PdbAstBuilder::CreateType(PdbTypeSymId type) {
return {};
}
-clang::QualType PdbAstBuilder::GetOrCreateClangType(PdbTypeSymId type) {
+clang::QualType PdbAstBuilderClang::GetOrCreateClangType(PdbTypeSymId typ...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/175840
More information about the lldb-commits
mailing list