clang DebugInfo regression for -fdebug-types-section [Re: [llvm] r359122 - DebugInfo: Emit only declarations (not whole definitions) of non-unit user defined types into type units]

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Fri May 10 12:12:59 PDT 2019


Fixed in r360458

On Fri, May 10, 2019 at 7:40 AM David Blaikie <dblaikie at gmail.com> wrote:

> Yep - I think it should be sufficient to check if the type has a name
> when making this decision. (though this might make internal linkage
> types get weird/dropped if they're referenced from external linkage
> types - which is bogus (well... almost bogus, such an external linkage
> type can't be defined more than once, but if it's only defined once I
> think that's technically correct))
>
> On Fri, May 10, 2019 at 5:35 AM Pavel Labath <pavel at labath.sk> wrote:
> >
> > Yea, it looks like this patch makes clang too aggressive in removing the
> > information from the type unit. At least, I don't see a way how to
> > reconstruct the fact that type "strarr" is "char[32]" as the DW_AT_type
> > leads to a dead end.
> >
> > Judging by the commit message, it looks like we end up considering
> > "char[32]" to be a non-unit user-defined type and so we drop it. The
> > non-unit part is definitely true, but maybe this type should not be
> > considered "user-defined"?
> >
> > On 09/05/2019 22:26, Jan Kratochvil wrote:
> > > On Wed, 24 Apr 2019 20:09:44 +0200, David Blaikie via llvm-commits
> wrote:
> > >> Author: dblaikie
> > >> Date: Wed Apr 24 11:09:44 2019
> > >> New Revision: 359122
> > >>
> > >> URL: http://llvm.org/viewvc/llvm-project?rev=359122&view=rev
> > >> Log:
> > >> DebugInfo: Emit only declarations (not whole definitions) of non-unit
> user defined types into type units
> > >
> > > 832c7d9f36bcb7a99113999439c82390b31919bd is the first bad commit
> > > commit 832c7d9f36bcb7a99113999439c82390b31919bd
> > > Author: David Blaikie <dblaikie at gmail.com>
> > > Date:   Wed Apr 24 18:09:44 2019 +0000
> > >      DebugInfo: Emit only declarations (not whole definitions) of
> non-unit user defined types into type units
> > >
> > > -fdebug-types-section no longer produces needed type definitions.
> > >
> > > -fdebug-types-section support for LLDB I am going to submit/update
> hopefully
> > > tomorrow:
> > >       06/06: Implement .debug_types
> > >       https://reviews.llvm.org/D61505
> > >
> > > ../llvm-monorepo-clangassert/bin/clang++ -o 1 -g -fdebug-types-section
> lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-smart-array/main.cpp;gdb
> -batch ./1 -ex 'b 59' -ex r -ex 'p other'
> > >
> > > FAIL = 832c7d9f36bcb7a99113999439c82390b31919bd
> > > PASS = 832c7d9f36bcb7a99113999439c82390b31919bd^
> > >
> > > FAIL: $1 = {strarr = 0x7fffffffcba0, strptr = 0x416e70 "Nested Hello
> world!", intarr = 0x7fffffffcbc8, flarr = 0x7fffffffcbdc}
> > > PASS: $1 = {strarr = "Nested Hello
> world!\000\377\377\377\377`\\\305\367\377\177\000", strptr = 0x416e70
> "Nested Hello world!", intarr = {9, 8, 7, 6, 5}, flarr = {25.5, 25.25,
> 25.125, 26.75, 27.375, 27.5, 26.125}}
> > >
> > > FAIL:
> > > Contents of the .debug_types section:
> > >   <2><af>: Abbrev Number: 3 (DW_TAG_member)
> > >      <b0>   DW_AT_name        : (indirect string, offset: 0x245):
> strarr
> > >      <b4>   DW_AT_type        : <0xed>
> > >      <b8>   DW_AT_decl_file   : 6
> > >      <b9>   DW_AT_decl_line   : 21
> > >      <ba>   DW_AT_data_member_location: 0
> > >   <1><ed>: Abbrev Number: 8 (DW_TAG_array_type)
> > >      <ee>   DW_AT_declaration : 1
> > >
> > > PASS:
> > > Contents of the .debug_types section:
> > >   <2><af>: Abbrev Number: 3 (DW_TAG_member)
> > >      <b0>   DW_AT_name        : (indirect string, offset: 0x245):
> strarr
> > >      <b4>   DW_AT_type        : <0xed>
> > >      <b8>   DW_AT_decl_file   : 6
> > >      <b9>   DW_AT_decl_line   : 21
> > >      <ba>   DW_AT_data_member_location: 0
> > >   <1><ed>: Abbrev Number: 8 (DW_TAG_array_type)
> > >      <ee>   DW_AT_type        : <0xf9>
> > >   <2><f2>: Abbrev Number: 9 (DW_TAG_subrange_type)
> > >      <f3>   DW_AT_type        : <0x100>
> > >      <f7>   DW_AT_count       : 32
> > >   <2><f8>: Abbrev Number: 0
> > >   <1><f9>: Abbrev Number: 4 (DW_TAG_base_type)
> > >      <fa>   DW_AT_name        : (indirect string, offset: 0xf5): char
> > >      <fe>   DW_AT_encoding    : 6        (signed char)
> > >      <ff>   DW_AT_byte_size   : 1
> > >   <1><100>: Abbrev Number: 10 (DW_TAG_base_type)
> > >      <101>   DW_AT_name        : (indirect string, offset: 0x24c):
> __ARRAY_SIZE_TYPE__
> > >      <105>   DW_AT_byte_size   : 8
> > >      <106>   DW_AT_encoding    : 7       (unsigned)
> > >
> > >
> > > Regards,
> > > Jan
> > >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190510/6026b3aa/attachment.html>


More information about the llvm-commits mailing list