diff options
| author | jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-01-04 18:18:54 +0000 |
|---|---|---|
| committer | jamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-01-04 18:18:54 +0000 |
| commit | 7103fda3ffe6c2ca02dc7e19a457be1e3a594adb (patch) | |
| tree | f5165a7f5cc72d4605f0b8c609a2d76f7cac6b73 | |
| parent | 854e880b7504ad0eaa2db14e3e48939065ca0a90 (diff) | |
| download | ppe42-gcc-7103fda3ffe6c2ca02dc7e19a457be1e3a594adb.tar.gz ppe42-gcc-7103fda3ffe6c2ca02dc7e19a457be1e3a594adb.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155630 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/ChangeLog | 9 | ||||
| -rw-r--r-- | gcc/ipa-cp.c | 11 | ||||
| -rw-r--r-- | gcc/ipa-prop.c | 3 |
3 files changed, 13 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad67466278a..a3ada177f40 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 b6e471230fa..66de8db7c0a 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 9387f0e0779..9fbd9d804e9 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; |

