https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83610

--- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> ---
Author: marxin
Date: Fri Aug 10 09:43:06 2018
New Revision: 263466

URL: https://gcc.gnu.org/viewcvs?rev=263466&root=gcc&view=rev
Log:
Introduce __builtin_expect_with_probability (PR target/83610).

2018-08-10  Martin Liska  <mli...@suse.cz>

        PR target/83610
        * builtin-types.def (BT_FN_LONG_LONG_LONG_DOUBLE): Add new
        function type.
        * builtins.c (expand_builtin_expect_with_probability):
        New function.
        (expand_builtin_expect_with_probability): New function.
        (build_builtin_expect_predicate): Add new argumnet probability
        for BUILT_IN_EXPECT_WITH_PROBABILITY.
        (fold_builtin_expect):
        (fold_builtin_2):
        (fold_builtin_3):
        * builtins.def (BUILT_IN_EXPECT_WITH_PROBABILITY):
        * builtins.h (fold_builtin_expect): Set new argument.
        * doc/extend.texi: Document __builtin_expect_with_probability.
        * doc/invoke.texi: Likewise.
        * gimple-fold.c (gimple_fold_call): Pass new argument.
        * ipa-fnsummary.c (find_foldable_builtin_expect): Handle
        also BUILT_IN_EXPECT_WITH_PROBABILITY.
        * predict.c (get_predictor_value): New function.
        (expr_expected_value): Add new argument probability. Assume
        that predictor and probability are always non-null.
        (expr_expected_value_1): Likewise.  For __builtin_expect and
        __builtin_expect_with_probability set probability.  Handle
        combination in binary expressions.
        (tree_predict_by_opcode): Simplify code by simply calling
        get_predictor_value.
        (pass_strip_predict_hints::execute): Add handling of
        BUILT_IN_EXPECT_WITH_PROBABILITY.
        * predict.def (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Add
        new predictor.
        * tree.h (DECL_BUILT_IN_P): New function.
2018-08-10  Martin Liska  <mli...@suse.cz>

        PR target/83610
        * gcc.dg/predict-17.c: New test.
        * gcc.dg/predict-18.c: New test.
        * gcc.dg/predict-19.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/predict-17.c
    trunk/gcc/testsuite/gcc.dg/predict-18.c
    trunk/gcc/testsuite/gcc.dg/predict-19.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/builtin-types.def
    trunk/gcc/builtins.c
    trunk/gcc/builtins.def
    trunk/gcc/builtins.h
    trunk/gcc/doc/extend.texi
    trunk/gcc/doc/invoke.texi
    trunk/gcc/gimple-fold.c
    trunk/gcc/ipa-fnsummary.c
    trunk/gcc/predict.c
    trunk/gcc/predict.def
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree.h

Reply via email to