re PR debug/69137 (ICE in odr_type_p, at ipa-utils.h:257)
2016-01-15 Richard Biener <rguenther@suse.de> PR debug/69137 * dwarf2out.c (add_linkage_name_raw): New function split out from ... (add_linkage_name): ... here. (gen_typedef_die): Use add_linkage_name_raw instead of add_linkage_attr to delay DECL_ASSEMBLER_NAME computation if necessary. * g++.dg/lto/pr69137_0.C: New testcase. From-SVN: r232434
This commit is contained in:
parent
33a126a6f2
commit
2bd847fed3
|
@ -1,3 +1,12 @@
|
|||
2016-01-15 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR debug/69137
|
||||
* dwarf2out.c (add_linkage_name_raw): New function split out from ...
|
||||
(add_linkage_name): ... here.
|
||||
(gen_typedef_die): Use add_linkage_name_raw instead of
|
||||
add_linkage_attr to delay DECL_ASSEMBLER_NAME computation
|
||||
if necessary.
|
||||
|
||||
2016-01-15 Cesar Philippidis <cesar@codesourcery.com>
|
||||
|
||||
* gimplify.c (oacc_default_clause): Decode reference and pointer
|
||||
|
|
|
@ -18573,6 +18573,26 @@ add_src_coords_attributes (dw_die_ref die, tree decl)
|
|||
|
||||
/* Add DW_AT_{,MIPS_}linkage_name attribute for the given decl. */
|
||||
|
||||
static void
|
||||
add_linkage_name_raw (dw_die_ref die, tree decl)
|
||||
{
|
||||
/* Defer until we have an assembler name set. */
|
||||
if (!DECL_ASSEMBLER_NAME_SET_P (decl))
|
||||
{
|
||||
limbo_die_node *asm_name;
|
||||
|
||||
asm_name = ggc_cleared_alloc<limbo_die_node> ();
|
||||
asm_name->die = die;
|
||||
asm_name->created_for = decl;
|
||||
asm_name->next = deferred_asm_name;
|
||||
deferred_asm_name = asm_name;
|
||||
}
|
||||
else if (DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl))
|
||||
add_linkage_attr (die, decl);
|
||||
}
|
||||
|
||||
/* Add DW_AT_{,MIPS_}linkage_name attribute for the given decl if desired. */
|
||||
|
||||
static void
|
||||
add_linkage_name (dw_die_ref die, tree decl)
|
||||
{
|
||||
|
@ -18581,21 +18601,7 @@ add_linkage_name (dw_die_ref die, tree decl)
|
|||
&& TREE_PUBLIC (decl)
|
||||
&& !(TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl))
|
||||
&& die->die_tag != DW_TAG_member)
|
||||
{
|
||||
/* Defer until we have an assembler name set. */
|
||||
if (!DECL_ASSEMBLER_NAME_SET_P (decl))
|
||||
{
|
||||
limbo_die_node *asm_name;
|
||||
|
||||
asm_name = ggc_cleared_alloc<limbo_die_node> ();
|
||||
asm_name->die = die;
|
||||
asm_name->created_for = decl;
|
||||
asm_name->next = deferred_asm_name;
|
||||
deferred_asm_name = asm_name;
|
||||
}
|
||||
else if (DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl))
|
||||
add_linkage_attr (die, decl);
|
||||
}
|
||||
add_linkage_name_raw (die, decl);
|
||||
}
|
||||
|
||||
/* Add a DW_AT_name attribute and source coordinate attribute for the
|
||||
|
@ -22425,7 +22431,7 @@ gen_typedef_die (tree decl, dw_die_ref context_die)
|
|||
is the name of the typedef decl naming the anonymous
|
||||
struct. This greatly eases the work of consumers of
|
||||
this debug info. */
|
||||
add_linkage_attr (lookup_type_die (type), decl);
|
||||
add_linkage_name_raw (lookup_type_die (type), decl);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2016-01-15 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR debug/69137
|
||||
* g++.dg/lto/pr69137_0.C: New testcase.
|
||||
|
||||
2016-01-15 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
PR middle-end/69246
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
// { dg-lto-do link }
|
||||
// { dg-lto-options { { -std=c++11 -g -flto } } }
|
||||
// { dg-extra-ld-options "-r -nostdlib" }
|
||||
|
||||
typedef struct {
|
||||
typedef struct { } VarSelectorRecord;
|
||||
} Format14Cmap;
|
||||
void fn1() { Format14Cmap a; }
|
Loading…
Reference in New Issue