From 9b14fc3326e087975653b1af8ac54114041cde51 Mon Sep 17 00:00:00 2001 From: Feng Xue Date: Mon, 2 Dec 2019 06:37:30 +0000 Subject: Enable recursive function versioning 2019-12-02 Feng Xue PR ipa/92133 * doc/invoke.texi (ipa-cp-max-recursive-depth): Document new option. (ipa-cp-min-recursive-probability): Likewise. * params.opt (ipa-cp-max-recursive-depth): New. (ipa-cp-min-recursive-probability): Likewise. * ipa-cp.c (ipcp_lattice::add_value): Add two new parameters val_p and unlimited. (self_recursively_generated_p): New function. (get_val_across_arith_op): Likewise. (propagate_vals_across_arith_jfunc): Add constant propagation for self-recursive function. (incorporate_penalties): Do not penalize pure self-recursive function. (good_cloning_opportunity_p): Dump node_is_self_scc flag. (propagate_constants_topo): Set node_is_self_scc flag for cgraph node. (get_info_about_necessary_edges): Relax hotness check for edge to self-recursive function. * ipa-prop.h (ipa_node_params): Add new field node_is_self_scc. 2019-12-02 Feng Xue PR ipa/92133 * gcc.dg/ipa/ipa-clone-2.c: New test. From-SVN: r278893 --- gcc/params.opt | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'gcc/params.opt') diff --git a/gcc/params.opt b/gcc/params.opt index 586b539ec5f..d88ae0c468b 100644 --- a/gcc/params.opt +++ b/gcc/params.opt @@ -198,6 +198,14 @@ Threshold ipa-cp opportunity evaluation that is still considered beneficial to c Common Joined UInteger Var(param_ipa_cp_loop_hint_bonus) Init(64) Param Compile-time bonus IPA-CP assigns to candidates which make loop bounds or strides known. +-param=ipa-cp-max-recursive-depth= +Common Joined UInteger Var(param_ipa_cp_max_recursive_depth) Init(8) Param +Maximum depth of recursive cloning for self-recursive function. + +-param=ipa-cp-min-recursive-probability= +Common Joined UInteger Var(param_ipa_cp_min_recursive_probability) Init(2) Param +Recursive cloning only when the probability of call being executed exceeds the parameter. + -param=ipa-cp-recursion-penalty= Common Joined UInteger Var(param_ipa_cp_recursion_penalty) Init(40) IntegerRange(0, 100) Param Percentage penalty the recursive functions will receive when they are evaluated for cloning. -- cgit v1.2.3