From: Richard Guenther Date: Thu, 22 Dec 2011 15:28:24 +0000 (+0000) Subject: re PR debug/51650 (LTO ICE in dwarf2out_finish, at dwarf2out.c:22501 while building... X-Git-Tag: releases/gcc-4.7.0~1347 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d002ee3980834eab0898e678339679c82eeb409b;p=thirdparty%2Fgcc.git re PR debug/51650 (LTO ICE in dwarf2out_finish, at dwarf2out.c:22501 while building libxul) 2011-12-22 Richard Guenther PR lto/51650 * lto.c (uniquify_nodes): Register TYPE_DECLs with the debuginfo machinery. * g++.dg/lto/pr51650-1_0.C: New testcase. * g++.dg/lto/pr51650-2_0.C: Likewise. From-SVN: r182625 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dfb2388697c5..d60eb0e096d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-12-22 Richard Guenther + + PR lto/51650 + * lto.c (uniquify_nodes): Register TYPE_DECLs with the + debuginfo machinery. + 2011-12-22 Bernd Schmidt * tree-pass.h (pass_reload): Declare. diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index 9efd9c333b2f..2ec6c44906ea 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -881,6 +881,9 @@ uniquify_nodes (struct data_in *data_in, unsigned from) lto_register_var_decl_in_symtab (data_in, t); else if (TREE_CODE (t) == FUNCTION_DECL && !DECL_BUILT_IN (t)) lto_register_function_decl_in_symtab (data_in, t); + else if (!flag_wpa + && TREE_CODE (t) == TYPE_DECL) + debug_hooks->type_decl (t, !DECL_FILE_SCOPE_P (t)); else if (TYPE_P (t) && !TYPE_CANONICAL (t)) TYPE_CANONICAL (t) = gimple_register_canonical_type (t); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9e58adc714ca..53fe4e8f21cf 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2011-12-22 Richard Guenther + + PR lto/51650 + * g++.dg/lto/pr51650-1_0.C: New testcase. + * g++.dg/lto/pr51650-2_0.C: Likewise. + 2011-12-21 Richard Earnshaw PR target/51643 diff --git a/gcc/testsuite/g++.dg/lto/pr51650-1_0.C b/gcc/testsuite/g++.dg/lto/pr51650-1_0.C new file mode 100644 index 000000000000..4c9ef3c8c483 --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr51650-1_0.C @@ -0,0 +1,19 @@ +// { dg-lto-do link } +// { dg-lto-options { { -flto -g } } } + +struct T; +struct C +{ + typedef ::T T; + static T *m () + { + static T *d; + return d; + } +}; +int +fn () +{ + C::m (); +} +int main() {} diff --git a/gcc/testsuite/g++.dg/lto/pr51650-2_0.C b/gcc/testsuite/g++.dg/lto/pr51650-2_0.C new file mode 100644 index 000000000000..0979674af35d --- /dev/null +++ b/gcc/testsuite/g++.dg/lto/pr51650-2_0.C @@ -0,0 +1,9 @@ +// { dg-lto-do link } +// { dg-lto-options { { -flto -g } } } + +typedef struct { } X; +int main () +{ + typedef X **P; + P g = 0; +}