This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH][LTO] Fix PR47798, debug info for globals
- From: Richard Guenther <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Diego Novillo <dnovillo at google dot com>
- Date: Fri, 18 Feb 2011 15:15:00 +0100 (CET)
- Subject: [PATCH][LTO] Fix PR47798, debug info for globals
We fail to emit debug information for privatized variables which causes
several guality fails. The following patch fixes that.
Bootstrapped and tested on x86_64-unknown-linux-gnu.
Ok?
Thanks,
Richard.
2011-02-18 Richard Guenther <rguenther@suse.de>
PR lto/47798
* lto-streamer.h (lto_global_var_decls): Declare.
* lto-streamer-in.c (lto_register_var_decl_in_symtab): Register
statics for global var processing.
lto/
* lto-lang.h (lto_global_var_decls): Do not declare here.
* lto-lang.c: Include lto-streamer.h.
* Make-lang.in (lto-lang.o): Adjust dependencies.
Index: gcc/lto-streamer.h
===================================================================
--- gcc/lto-streamer.h (revision 170270)
+++ gcc/lto-streamer.h (working copy)
@@ -914,6 +914,7 @@ extern void lto_symtab_merge_cgraph_node
extern tree lto_symtab_prevailing_decl (tree decl);
extern enum ld_plugin_symbol_resolution lto_symtab_get_resolution (tree decl);
extern void lto_symtab_free (void);
+extern GTY(()) VEC(tree,gc) *lto_global_var_decls;
/* In lto-opts.c. */
Index: gcc/lto/lto-lang.c
===================================================================
--- gcc/lto/lto-lang.c (revision 170270)
+++ gcc/lto/lto-lang.c (working copy)
@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3.
#include "gimple.h"
#include "diagnostic-core.h"
#include "toplev.h"
+#include "lto-streamer.h"
static tree handle_noreturn_attribute (tree *, tree, tree, int, bool *);
static tree handle_leaf_attribute (tree *, tree, tree, int, bool *);
Index: gcc/lto/Make-lang.in
===================================================================
--- gcc/lto/Make-lang.in (revision 170270)
+++ gcc/lto/Make-lang.in (working copy)
@@ -79,7 +79,7 @@ $(LTO_EXE): $(LTO_OBJS) $(BACKEND) $(LIB
lto/lto-lang.o: lto/lto-lang.c $(CONFIG_H) coretypes.h debug.h \
flags.h $(GGC_H) langhooks.h $(LANGHOOKS_DEF_H) $(SYSTEM_H) \
$(TARGET_H) $(LTO_H) $(GIMPLE_H) gtype-lto.h gt-lto-lto-lang.h \
- $(EXPR_H)
+ $(EXPR_H) lto-streamer.h
lto/lto.o: lto/lto.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(OPTS_H) \
toplev.h $(TREE_H) $(DIAGNOSTIC_CORE_H) $(TM_H) \
$(CGRAPH_H) $(GGC_H) tree-ssa-operands.h $(TREE_PASS_H) \
Index: gcc/lto-streamer-in.c
===================================================================
--- gcc/lto-streamer-in.c (revision 170271)
+++ gcc/lto-streamer-in.c (working copy)
@@ -2432,6 +2427,8 @@ lto_register_var_decl_in_symtab (struct
ASM_FORMAT_PRIVATE_NAME (label, name, DECL_UID (decl));
SET_DECL_ASSEMBLER_NAME (decl, get_identifier (label));
rest_of_decl_compilation (decl, 1, 0);
+
+ VEC_safe_push (tree, gc, lto_global_var_decls, decl);
}
/* If this variable has already been declared, queue the