Enable recursive function versioning
authorFeng Xue <fxue@os.amperecomputing.com>
Mon, 2 Dec 2019 06:37:30 +0000 (06:37 +0000)
committerFeng Xue <fxue@gcc.gnu.org>
Mon, 2 Dec 2019 06:37:30 +0000 (06:37 +0000)
commit9b14fc3326e087975653b1af8ac54114041cde51
tree7898f1998d7895c9f2958982aae053a808ebc318
parent4569f8b3652ae1e5ca353c24148b50c786b36c8b
Enable recursive function versioning

2019-12-02  Feng Xue <fxue@os.amperecomputing.com>

        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<valtype>::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  <fxue@os.amperecomputing.com>

        PR ipa/92133
        * gcc.dg/ipa/ipa-clone-2.c: New test.

From-SVN: r278893
gcc/ChangeLog
gcc/doc/invoke.texi
gcc/ipa-cp.c
gcc/ipa-prop.h
gcc/params.opt
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/ipa/ipa-clone-2.c [new file with mode: 0644]