[Bug lto/55466] [4.8 Regression] Revision 191466 destroyed DWARF debug info
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Dec 7 18:49:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55466
--- Comment #10 from H.J. Lu <hjl.tools at gmail dot com> 2012-12-07 18:49:10 UTC ---
(In reply to comment #7)
> This patch:
>
> diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c
> index 0b0cdac..295fd37 100644
> --- a/gcc/lto-symtab.c
> +++ b/gcc/lto-symtab.c
> @@ -443,10 +443,6 @@ lto_symtab_merge_decls_1 (symtab_node first)
>
> symtab_prevail_in_asm_name_hash (prevailing);
>
> - /* Record the prevailing variable. */
> - if (TREE_CODE (prevailing->symbol.decl) == VAR_DECL)
> - vec_safe_push (lto_global_var_decls, prevailing->symbol.decl);
> -
> /* Diagnose mismatched objects. */
> for (e = prevailing->symbol.next_sharing_asm_name;
> e; e = e->symbol.next_sharing_asm_name)
> diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
> index 376af85..177fbfc 100644
> --- a/gcc/lto/lto.c
> +++ b/gcc/lto/lto.c
> @@ -2910,6 +2910,7 @@ read_cgraph_and_symbols (unsigned nfiles, const char
> **fnames)
> struct cgraph_node *node;
> int count = 0;
> struct lto_file_decl_data **decl_data;
> + struct varpool_node *vnode;
>
> init_cgraph ();
>
> @@ -3088,6 +3089,10 @@ read_cgraph_and_symbols (unsigned nfiles, const char
> **fnames)
>
> timevar_pop (TV_IPA_LTO_CGRAPH_MERGE);
>
> + /* Record the global variables. */
> + FOR_EACH_DEFINED_VARIABLE (vnode)
> + vec_safe_push (lto_global_var_decls, vnode->symbol.decl);
> +
> timevar_push (TV_IPA_LTO_DECL_INIT_IO);
>
> /* Indicate that the cgraph is built and ready. */
>
> or
>
> diff --git a/gcc/lto-symtab.c b/gcc/lto-symtab.c
> index 0b0cdac..295fd37 100644
> --- a/gcc/lto-symtab.c
> +++ b/gcc/lto-symtab.c
> @@ -443,10 +443,6 @@ lto_symtab_merge_decls_1 (symtab_node first)
>
> symtab_prevail_in_asm_name_hash (prevailing);
>
> - /* Record the prevailing variable. */
> - if (TREE_CODE (prevailing->symbol.decl) == VAR_DECL)
> - vec_safe_push (lto_global_var_decls, prevailing->symbol.decl);
> -
> /* Diagnose mismatched objects. */
> for (e = prevailing->symbol.next_sharing_asm_name;
> e; e = e->symbol.next_sharing_asm_name)
> diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
> index 376af85..c7e1100 100644
> --- a/gcc/lto/lto.c
> +++ b/gcc/lto/lto.c
> @@ -3373,6 +3373,8 @@ lto_main (void)
>
> if (!seen_error ())
> {
> + struct varpool_node *vnode;
> +
> /* If WPA is enabled analyze the whole call graph and create an
> optimization plan. Otherwise, read in all the function
> bodies and continue with optimization. */
> @@ -3398,6 +3400,10 @@ lto_main (void)
> if (flag_lto_report)
> print_lto_report_1 ();
> }
> +
> + /* Record the global variables. */
> + FOR_EACH_DEFINED_VARIABLE (vnode)
> + vec_safe_push (lto_global_var_decls, vnode->symbol.decl);
> }
>
> /* Here we make LTO pretend to be a parser. */
>
> seem to work.
It doesn't work. When gcc is configured with
--enable-languages=c,c++,fortran,java,lto,objc,obj-c++,go, I got
lto1: internal compiler error: in add_AT_specification, at dwarf2out.c:3985
0x629ad9 add_AT_specification
/export/gnu/import/git/gcc/gcc/dwarf2out.c:3985
0x64dabb gen_variable_die
/export/gnu/import/git/gcc/gcc/dwarf2out.c:18327
0x65336b gen_decl_die
/export/gnu/import/git/gcc/gcc/dwarf2out.c:20033
0x653fcd dwarf2out_decl(tree_node*)
/export/gnu/import/git/gcc/gcc/dwarf2out.c:20348
0x6535f9 dwarf2out_global_decl
/export/gnu/import/git/gcc/gcc/dwarf2out.c:20083
0x997703 emit_debug_global_declarations(tree_node**, int)
/export/gnu/import/git/gcc/gcc/toplev.c:530
0x521aaa lto_write_globals
/export/gnu/import/git/gcc/gcc/lto/lto-lang.c:1067
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
make[6]: *** [/tmp/cc3yYR7d.ltrans4.ltrans.o] Error 1
lto-wrapper: make returned 2 exit status
lto-wrapper: make returned 2 exit status
/usr/local/x86_64-unknown-linux-gnu/bin/ld: lto-wrapper failed
collect2: error: ld returned 1 exit status
make[5]: *** [go1] Error 1
More information about the Gcc-bugs
mailing list