From 438789ffe3864516f7b30b532894b2e64f016165 Mon Sep 17 00:00:00 2001 From: Martin Jambor <mjambor@suse.cz> Date: Mon, 4 Jan 2010 19:18:54 +0100 Subject: [PATCH] re PR tree-optimization/42366 (ICE in ipa_write_node_info, at ipa-prop.c:2023) 2010-01-04 Martin Jambor <mjambor@suse.cz> PR tree-optimization/42366 * ipa-cp.c (ipcp_init_stage): Always call ipa_compute_jump_functions on edges with variable number of parameters. * ipa-prop.c (ipa_write_node_info): Stream out uses_analysis_done flag instead of asserting it. (ipa_read_node_info): Read uses_analysis_done flag. From-SVN: r155630 --- gcc/ChangeLog | 9 +++++++++ gcc/ipa-cp.c | 11 ++--------- gcc/ipa-prop.c | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad67466278a1..a3ada177f40a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2010-01-04 Martin Jambor <mjambor@suse.cz> + + PR tree-optimization/42366 + * ipa-cp.c (ipcp_init_stage): Always call ipa_compute_jump_functions on + edges with variable number of parameters. + * ipa-prop.c (ipa_write_node_info): Stream out uses_analysis_done + flag instead of asserting it. + (ipa_read_node_info): Read uses_analysis_done flag. + 2010-01-04 Richard Guenther <rguenther@suse.de> * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Use diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index b6e471230fa8..66de8db7c0a4 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -633,15 +633,8 @@ ipcp_init_stage (void) ipa_count_arguments (cs); if (ipa_get_cs_argument_count (IPA_EDGE_REF (cs)) != ipa_get_param_count (IPA_NODE_REF (cs->callee))) - { - /* Handle cases of functions with - a variable number of parameters. */ - ipa_set_called_with_variable_arg (IPA_NODE_REF (cs->callee)); - if (flag_indirect_inlining) - ipa_compute_jump_functions (cs); - } - else - ipa_compute_jump_functions (cs); + ipa_set_called_with_variable_arg (IPA_NODE_REF (cs->callee)); + ipa_compute_jump_functions (cs); } } } diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 9387f0e0779a..9fbd9d804e92 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -2018,9 +2018,9 @@ ipa_write_node_info (struct output_block *ob, struct cgraph_node *node) bp = bitpack_create (); bp_pack_value (bp, info->called_with_var_arguments, 1); + bp_pack_value (bp, info->uses_analysis_done, 1); gcc_assert (info->modification_analysis_done || ipa_get_param_count (info) == 0); - gcc_assert (info->uses_analysis_done || ipa_get_param_count (info) == 0); gcc_assert (!info->node_enqueued); gcc_assert (!info->ipcp_orig_node); for (j = 0; j < ipa_get_param_count (info); j++) @@ -2063,6 +2063,7 @@ ipa_read_node_info (struct lto_input_block *ib, struct cgraph_node *node, bp = lto_input_bitpack (ib); info->called_with_var_arguments = bp_unpack_value (bp, 1); + info->uses_analysis_done = bp_unpack_value (bp, 1); if (ipa_get_param_count (info) != 0) { info->modification_analysis_done = true; -- GitLab