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