http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55466
--- Comment #9 from H.J. Lu <hjl.tools at gmail dot com> 2012-12-07 13:02:12 UTC --- I am testing 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..c637ec8 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -3083,8 +3083,16 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames) supports inlining, so we can push it here by hand. In future we need to stream this field into ltrans compilation. */ if (flag_ltrans) - FOR_EACH_DEFINED_FUNCTION (node) - node->ipa_transforms_to_apply.safe_push ((ipa_opt_pass)&pass_ipa_inline); + { + struct varpool_node *vnode; + + FOR_EACH_DEFINED_FUNCTION (node) + node->ipa_transforms_to_apply.safe_push ((ipa_opt_pass)&pass_ipa_inline); + + /* Record the global variables. */ + FOR_EACH_DEFINED_VARIABLE (vnode) + vec_safe_push (lto_global_var_decls, vnode->symbol.decl); + } timevar_pop (TV_IPA_LTO_CGRAPH_MERGE); ---