From patchwork Fri Feb 18 16:03:04 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 83615 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 78DF8B7106 for ; Sat, 19 Feb 2011 03:03:18 +1100 (EST) Received: (qmail 26654 invoked by alias); 18 Feb 2011 16:03:15 -0000 Received: (qmail 26644 invoked by uid 22791); 18 Feb 2011 16:03:13 -0000 X-SWARE-Spam-Status: No, hits=-3.4 required=5.0 tests=AWL, BAYES_00, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from cantor2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 18 Feb 2011 16:03:07 +0000 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.221.2]) by mx2.suse.de (Postfix) with ESMTP id 683B58891E; Fri, 18 Feb 2011 17:03:04 +0100 (CET) Date: Fri, 18 Feb 2011 17:03:04 +0100 (CET) From: Richard Guenther To: Diego Novillo Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH][LTO] Fix PR47798, debug info for globals In-Reply-To: Message-ID: References: User-Agent: Alpine 2.00 (LNX 1167 2008-08-23) MIME-Version: 1.0 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org On Fri, 18 Feb 2011, Diego Novillo wrote: > On Fri, Feb 18, 2011 at 09:15, Richard Guenther wrote: > > > > 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   > > > >        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. > > The patch seems to be missing this hunk. Right. It's lto-tree.h, fixed patch below. Richard. 2011-02-18 Richard Guenther 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-tree.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/lto-tree.h =================================================================== *** gcc/lto/lto-tree.h (revision 170271) --- gcc/lto/lto-tree.h (working copy) *************** union GTY((desc ("lto_tree_node_structur *** 55,61 **** desc ("tree_node_structure (&%h)"))) generic; }; - /* Vector to keep track of external variables we've seen so far. */ - extern GTY(()) VEC(tree,gc) *lto_global_var_decls; - #endif /* GCC_LTO_TREE_H */ --- 55,58 ---- 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