Commit 438789ff by Martin Jambor Committed by Martin Jambor

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
parent 77102854
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> 2010-01-04 Richard Guenther <rguenther@suse.de>
* tree-ssa-sccvn.c (vn_reference_op_compute_hash): Use * tree-ssa-sccvn.c (vn_reference_op_compute_hash): Use
......
...@@ -633,14 +633,7 @@ ipcp_init_stage (void) ...@@ -633,14 +633,7 @@ ipcp_init_stage (void)
ipa_count_arguments (cs); ipa_count_arguments (cs);
if (ipa_get_cs_argument_count (IPA_EDGE_REF (cs)) if (ipa_get_cs_argument_count (IPA_EDGE_REF (cs))
!= ipa_get_param_count (IPA_NODE_REF (cs->callee))) != 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)); 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_compute_jump_functions (cs);
} }
} }
......
...@@ -2018,9 +2018,9 @@ ipa_write_node_info (struct output_block *ob, struct cgraph_node *node) ...@@ -2018,9 +2018,9 @@ ipa_write_node_info (struct output_block *ob, struct cgraph_node *node)
bp = bitpack_create (); bp = bitpack_create ();
bp_pack_value (bp, info->called_with_var_arguments, 1); 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 gcc_assert (info->modification_analysis_done
|| ipa_get_param_count (info) == 0); || 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->node_enqueued);
gcc_assert (!info->ipcp_orig_node); gcc_assert (!info->ipcp_orig_node);
for (j = 0; j < ipa_get_param_count (info); j++) 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, ...@@ -2063,6 +2063,7 @@ ipa_read_node_info (struct lto_input_block *ib, struct cgraph_node *node,
bp = lto_input_bitpack (ib); bp = lto_input_bitpack (ib);
info->called_with_var_arguments = bp_unpack_value (bp, 1); 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) if (ipa_get_param_count (info) != 0)
{ {
info->modification_analysis_done = true; info->modification_analysis_done = true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment