This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/55466] [4.8 Regression] Revision 191466 destroyed DWARF debug info
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 29 Nov 2012 19:08:28 +0000
- Subject: [Bug lto/55466] [4.8 Regression] Revision 191466 destroyed DWARF debug info
- Auto-submitted: auto-generated
- References: <bug-55466-4@http.gcc.gnu.org/bugzilla/>
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.