This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug lto/55466] [4.8 Regression] Revision 191466 destroyed DWARF debug info


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]