> -----Original Message-----
> From: lldb-commits [mailto:lldb-commits-boun...@lists.llvm.org] On Behalf
> Of Greg Clayton via lldb-commits
> Sent: Wednesday, July 31, 2019 2:29 PM
> To: Raphael Isemann
> Cc: lldb-commits
> Subject: Re: [Lldb-commits] [lldb] r367441 - Don't crash when pass by
> value struct has no definition.
> 
> 
> 
> > On Jul 31, 2019, at 10:57 AM, Raphael Isemann <teempe...@gmail.com>
> wrote:
> >
> > It seems that patch is lacking a test (which doesn't seem too hard to
> provide).
> 
> I am not the original author of this patch that was causing the crash,
> just fixing a crash that was introduced by the patch.
> 
> I am all ears for anyone that can provide me with DWARF to help reproduce
> this scenario where we have a DW_CC_pass_by_value struct with no
> definition. Not sure how you would have a compiler that is passing a
> struct to a function as a parameter and yet does not emit debug info for
> that struct it is clearly using in the debug info.

One wonders how you discovered the crash.

I know that Clang will skip the content of a type if it determines that
the definition is certain to be found elsewhere.  For example, if it has 
virtual methods and the key function is not defined in the current CU.  
Whether it will still add a CC attribute, I don't know.
--paulr

> 
> >
> > Am Mi., 31. Juli 2019 um 18:24 Uhr schrieb Greg Clayton via
> > lldb-commits <lldb-commits@lists.llvm.org>:
> >>
> >> Author: gclayton
> >> Date: Wed Jul 31 09:24:55 2019
> >> New Revision: 367441
> >>
> >> URL: http://llvm.org/viewvc/llvm-project?rev=367441&view=rev
> >> Log:
> >> Don't crash when pass by value struct has no definition.
> >>
> >>
> >> Modified:
> >>    lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
> >>
> >> Modified:
> lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
> >> URL: http://llvm.org/viewvc/llvm-
> project/lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
> ?rev=367441&r1=367440&r2=367441&view=diff
> >>
> ==========================================================================
> ====
> >> --- lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
> (original)
> >> +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
> Wed Jul 31 09:24:55 2019
> >> @@ -1010,7 +1010,7 @@ TypeSP DWARFASTParserClang::ParseTypeFro
> >>     if (attrs.calling_convention == llvm::dwarf::DW_CC_pass_by_value) {
> >>       clang::CXXRecordDecl *record_decl =
> >>           m_ast.GetAsCXXRecordDecl(clang_type.GetOpaqueQualType());
> >> -      if (record_decl) {
> >> +      if (record_decl && record_decl->getDefinition()) {
> >>         record_decl->setHasTrivialSpecialMemberForCall();
> >>       }
> >>     }
> >>
> >>
> >> _______________________________________________
> >> lldb-commits mailing list
> >> lldb-commits@lists.llvm.org
> >> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
> 
> _______________________________________________
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to