This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug debug/46796] debug info missing builtin type names with lto


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46796

--- Comment #9 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-12-10 14:32:48 UTC ---
The volatile qualified case happens because dwarf2out.c wants to emit an
unqualified variant first and gets at it via get_qualified_type which in
turn uses check_qualified_type to pick one from the list of variant types.

But as we never merge TYPE_DECLs we have different TYPE_NAMEs for the
qualified and unqualified variants:

(gdb) call debug_tree ($34)
 <type_decl 0xb7758798 float
    type <real_type 0xb7750900 float asm_written SF
        size <integer_cst 0xb773f240 constant 32>
        unit size <integer_cst 0xb773f078 constant 4>
        align 32 symtab 0 alias set -1 structural equality precision 32
        pointer_to_this <pointer_type 0xb7750a20>>
    VOID file (null) line 0 col 0
    align 1>
(gdb) call debug_tree ($35)
 <type_decl 0xb775857c float
    type <real_type 0xb7750900 float asm_written SF
        size <integer_cst 0xb773f240 constant 32>
        unit size <integer_cst 0xb773f078 constant 4>
        align 32 symtab 0 alias set -1 structural equality precision 32
        pointer_to_this <pointer_type 0xb7750a20>>
    VOID file (null) line 0 col 0
    align 1>

and thus get_qualified_type happily returns NULL which leads to
name being set to NULL even though the original type does
have a name in modified_type_die.

Now.  We probably should start to merge TYPE_DECLs at some point,
even if it is only for memory use.

But instead of

  /* This probably indicates a bug.  */
  else if (mod_type_die && mod_type_die->die_tag == DW_TAG_base_type)
    add_name_attribute (mod_type_die, "__unknown__");

we could use TYPE_NAME of the original type here, it will have no
qualifications anyway.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]