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
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to