From: Martin Jambor Date: Mon, 4 Jan 2010 18:18:54 +0000 (+0100) Subject: re PR tree-optimization/42366 (ICE in ipa_write_node_info, at ipa-prop.c:2023) X-Git-Tag: releases/gcc-4.5.0~1402 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=438789ffe3864516f7b30b532894b2e64f016165;p=thirdparty%2Fgcc.git re PR tree-optimization/42366 (ICE in ipa_write_node_info, at ipa-prop.c:2023) 2010-01-04 Martin Jambor 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 --- 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 + + 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 * 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;