Limit AA walking in IPA summary generation
authorMartin Jambor <mjambor@suse.cz>
Sun, 20 Jan 2019 20:17:02 +0000 (21:17 +0100)
committerMartin Jambor <jamborm@gcc.gnu.org>
Sun, 20 Jan 2019 20:17:02 +0000 (21:17 +0100)
commitc628d1c325e81467fac06a92c8dfb7768e0cf7ad
treec6bd7c0f2480cdcaf35aa161824faa675368d629
parent49686677ed7aa84d05b0c5db8eb28f06ebb5e529
Limit AA walking in IPA summary generation

2019-01-20  Martin Jambor  <mjambor@suse.cz>

PR ipa/87615
* ipa-prop.h (struct ipa_func_body_info): Replaced field aa_walked
with aa_walk_budget.
* cgraph.h (ipa_polymorphic_call_context::get_dynamic_type): Add
aa_walk_budget_p parameter.
* ipa-fnsummary.c (unmodified_parm_1): New parameter fbi.  Limit AA
walk.  Updated all callers.
(unmodified_parm): New parameter fbi, pass it to unmodified_parm_1.
(eliminated_by_inlining_prob): New parameter fbi, pass it on to
unmodified_parm.
(will_be_nonconstant_expr_predicate): New parameter fbi, removed
parameter info.  Extract info from fbi.  Pass fbi to recursive calls
and to unmodified_parm.
(phi_result_unknown_predicate): New parameter fbi, removed parameter
info, updated call to will_be_nonconstant_expr_predicate.
(param_change_prob): New parameter fbi, limit AA walking.
(analyze_function_body): Initialize aa_walk_budget in fbi.  Update
calls to various above functions.
* ipa-polymorphic-call.c (get_dynamic_type): Add aa_walk_budget_p
parameter.  Use it to limit AA walking.
* ipa-prop.c (detect_type_change_from_memory_writes): New parameter
fbi, limit AA walk.
(detect_type_change): New parameter fbi, pass it on to
detect_type_change_from_memory_writes.
(detect_type_change_ssa): Likewise.
(aa_overwalked): Removed.
(parm_preserved_before_stmt_p): Assume fbi is never NULL, stream line
accordingly, adjust to the neew AA limiting scheme.
(parm_ref_data_preserved_p): Likewise.
(ipa_compute_jump_functions_for_edge): Adjust call to
get_dynamic_type.
(ipa_analyze_call_uses): Likewise.
(ipa_analyze_virtual_call_uses): Pass fbi to detect_type_change_ssa.
(ipa_analyze_node): Initialize aa_walk_budget.
(ipcp_transform_function): Likewise.
* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt): Update call
to get_dynamic_type.

From-SVN: r268107
gcc/ChangeLog
gcc/cgraph.h
gcc/ipa-fnsummary.c
gcc/ipa-polymorphic-call.c
gcc/ipa-prop.c
gcc/ipa-prop.h
gcc/tree-ssa-sccvn.c