Improve IPA-CP handling of self-recursive calls
authorMartin Jambor <mjambor@suse.cz>
Wed, 11 Apr 2018 13:30:53 +0000 (15:30 +0200)
committerMartin Jambor <jamborm@gcc.gnu.org>
Wed, 11 Apr 2018 13:30:53 +0000 (15:30 +0200)
commit7b668576fc09c86a301087f464e195678cb0aea0
treeeeba5abe393b99f0ba5516eb12172c1f4fbe8de3
parentfe0604d349c4d9eb18b17dd018383d591eed67c7
Improve IPA-CP handling of self-recursive calls

2018-04-11  Martin Jambor  <mjambor@suse.cz>

PR ipa/84149
* ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
(cgraph_edge_brings_value_p): New parameter dest_val, check if it is
not the same as the source val.
(cgraph_edge_brings_value_p): New parameter.
(gather_edges_for_value): Pass destination value to
cgraph_edge_brings_value_p.
(perhaps_add_new_callers): Likewise.
(get_info_about_necessary_edges): Likewise and exclude values brought
only by self-recursive edges.
(create_specialized_node): Redirect only clones of self-calling edges.
(+self_recursive_pass_through_p): New function.
(find_more_scalar_values_for_callers_subset): Use it.
(find_aggregate_values_for_callers_subset): Likewise.
(known_aggs_to_agg_replacement_list): Removed.
(decide_whether_version_node): Re-calculate known constants for all
remaining context clones.

From-SVN: r259319
gcc/ChangeLog
gcc/ipa-cp.c