re PR debug/51650 (LTO ICE in dwarf2out_finish, at dwarf2out.c:22501 while building libxul)

2012-01-03  Richard Guenther  <rguenther@suse.de>

	PR debug/51650
	* dwarf2out.c (dwarf2out_finish): Always create a DIE for
	the context of a limbo DIE when it does not already exist.

	* g++.dg/lto/pr51650-3_0.C: New testcase.

From-SVN: r182835
This commit is contained in:
Richard Guenther 2012-01-03 11:30:27 +00:00 committed by Richard Biener
parent da89f7f38e
commit f3321fd715
4 changed files with 33 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2012-01-03 Richard Guenther <rguenther@suse.de>
PR debug/51650
* dwarf2out.c (dwarf2out_finish): Always create a DIE for
the context of a limbo DIE when it does not already exist.
2012-01-03 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/51719

View File

@ -22501,15 +22501,8 @@ dwarf2out_finish (const char *filename)
else if (TYPE_P (node->created_for))
context = TYPE_CONTEXT (node->created_for);
gcc_assert (context
&& (TREE_CODE (context) == FUNCTION_DECL
|| TREE_CODE (context) == NAMESPACE_DECL));
origin = lookup_decl_die (context);
if (origin)
add_child_die (origin, die);
else
add_child_die (comp_unit_die (), die);
origin = get_context_die (context);
add_child_die (origin, die);
}
}
}

View File

@ -1,3 +1,8 @@
2012-01-03 Richard Guenther <rguenther@suse.de>
PR debug/51650
* g++.dg/lto/pr51650-3_0.C: New testcase.
2012-01-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/15867

View File

@ -0,0 +1,20 @@
// { dg-lto-do link }
// { dg-lto-options { { -flto -g } } }
struct T;
struct C
{
typedef ::T T;
virtual void E();
static T *m ()
{
static T *d;
return d;
}
};
int
fn ()
{
C::m ();
}
int main() {}