From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 425 invoked by alias); 10 Jun 2011 15:53:24 -0000 Received: (qmail 415 invoked by uid 22791); 10 Jun 2011 15:53:24 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from nikam.ms.mff.cuni.cz (HELO nikam.ms.mff.cuni.cz) (195.113.20.16) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 10 Jun 2011 15:53:09 +0000 Received: by nikam.ms.mff.cuni.cz (Postfix, from userid 16202) id 385729AC86C; Fri, 10 Jun 2011 17:53:08 +0200 (CEST) Date: Fri, 10 Jun 2011 16:06:00 -0000 From: Jan Hubicka To: gcc-patches@gcc.gnu.org, mjambor@suse.cz Subject: Cgraph alias reorg 11/14 (stream indirect call jump functions) Message-ID: <20110610155308.GH28776@kam.mff.cuni.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-06/txt/msg00855.txt.bz2 Hi, this patch fixes omission I noticed while debugging unrelated problem. While we compute jump functions for indirect calls (so they can possibly be used after the indirect calls become direct) we forget to stream them. Fixed thus. Regtested/bootstrapped x86_64-linux, will commit it shortly. Honza * ipa-prop.c (ipa_write_node_info): Stream jump functions for indirect calls. (ipa_read_node_info): Likewise. Index: ipa-prop.c =================================================================== *** ipa-prop.c (revision 174911) --- ipa-prop.c (working copy) *************** ipa_write_node_info (struct output_block *** 2833,2839 **** ipa_write_jump_function (ob, ipa_get_ith_jump_func (args, j)); } for (e = node->indirect_calls; e; e = e->next_callee) ! ipa_write_indirect_edge_info (ob, e); } /* Stream in NODE info from IB. */ --- 2833,2847 ---- ipa_write_jump_function (ob, ipa_get_ith_jump_func (args, j)); } for (e = node->indirect_calls; e; e = e->next_callee) ! { ! struct ipa_edge_args *args = IPA_EDGE_REF (e); ! ! lto_output_uleb128_stream (ob->main_stream, ! ipa_get_cs_argument_count (args)); ! for (j = 0; j < ipa_get_cs_argument_count (args); j++) ! ipa_write_jump_function (ob, ipa_get_ith_jump_func (args, j)); ! ipa_write_indirect_edge_info (ob, e); ! } } /* Stream in NODE info from IB. */ *************** ipa_read_node_info (struct lto_input_blo *** 2871,2877 **** ipa_read_jump_function (ib, ipa_get_ith_jump_func (args, k), data_in); } for (e = node->indirect_calls; e; e = e->next_callee) ! ipa_read_indirect_edge_info (ib, data_in, e); } /* Write jump functions for nodes in SET. */ --- 2879,2898 ---- ipa_read_jump_function (ib, ipa_get_ith_jump_func (args, k), data_in); } for (e = node->indirect_calls; e; e = e->next_callee) ! { ! struct ipa_edge_args *args = IPA_EDGE_REF (e); ! int count = lto_input_uleb128 (ib); ! ! ipa_set_cs_argument_count (args, count); ! if (!count) ! continue; ! ! args->jump_functions = ggc_alloc_cleared_vec_ipa_jump_func ! (ipa_get_cs_argument_count (args)); ! for (k = 0; k < ipa_get_cs_argument_count (args); k++) ! ipa_read_jump_function (ib, ipa_get_ith_jump_func (args, k), data_in); ! ipa_read_indirect_edge_info (ib, data_in, e); ! } } /* Write jump functions for nodes in SET. */