public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Cgraph alias reorg 11/14 (stream indirect call jump functions)
@ 2011-06-10 16:06 Jan Hubicka
  0 siblings, 0 replies; only message in thread
From: Jan Hubicka @ 2011-06-10 16:06 UTC (permalink / raw)
  To: gcc-patches, mjambor

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.  */

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-06-10 15:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-10 16:06 Cgraph alias reorg 11/14 (stream indirect call jump functions) Jan Hubicka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).