[Lldb-commits] [PATCH] D85993: [lldb] Set the access property on member function decls

Adrian McCarthy via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Fri Aug 14 13:24:53 PDT 2020


amccarth created this revision.
amccarth added reviewers: clayborg, aganea.
amccarth requested review of this revision.

This fixes two failures in the PDB tests.  LLVM has a "sanity" check on function decls.  One of the requirements of member functions is that they have the access property (public, protected, private) set if the function is a member function.  The check is an assert, so you'll see the failure only if you're running with assertions enabled.

This sets the access property to public to match how the existing code handles member function templates.


https://reviews.llvm.org/D85993

Files:
  lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp


Index: lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
===================================================================
--- lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
+++ lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp
@@ -2017,6 +2017,12 @@
   func_decl->setHasWrittenPrototype(hasWrittenPrototype);
   func_decl->setConstexprKind(isConstexprSpecified ? CSK_constexpr
                                                    : CSK_unspecified);
+  // Functions inside a record need to have an access specifier.  It doesn't
+  // matter what access specifier we give the function as LLDB allows
+  // accessing everything inside a record.
+  if (decl_ctx->isRecord())
+    func_decl->setAccess(clang::AccessSpecifier::AS_public);
+
   SetOwningModule(func_decl, owning_module);
   if (func_decl)
     decl_ctx->addDecl(func_decl);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85993.285748.patch
Type: text/x-patch
Size: 861 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200814/ffee4238/attachment.bin>


More information about the lldb-commits mailing list