http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55466



--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> 2012-11-29 19:08:28 
UTC ---

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.

Reply via email to