From b52db15861e60f5ca82b63caabed6a00da98c7d7 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Tue, 9 Jul 2019 11:22:30 +0200 Subject: [PATCH] Document and test __builtin_expect_with_probability. 2019-07-09 Martin Liska * doc/extend.texi: Document influence on loop optimizers. 2019-07-09 Martin Liska * gcc.dg/predict-17.c: Test loop optimizer assumption about loop iterations. From-SVN: r273295 --- gcc/ChangeLog | 5 +++++ gcc/doc/extend.texi | 5 ++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/predict-17.c | 4 +++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8fccc6bdab5..5072a03e56b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,11 @@ (vn_reference_lookup_pieces): Adjust. (vn_reference_lookup): Pass down original ref if we valueized. +2019-07-09 Martin Liska + + * doc/extend.texi: Document influence on loop + optimizers. + 2019-07-09 Martin Liska * lto-compress.c (lto_normalized_zstd_level): Do not use diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index f2619e12f93..061607411eb 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -13045,8 +13045,11 @@ when testing pointer or floating-point values. For the purposes of branch prediction optimizations, the probability that a @code{__builtin_expect} expression is @code{true} is controlled by GCC's @code{builtin-expect-probability} parameter, which defaults to 90%. + You can also use @code{__builtin_expect_with_probability} to explicitly -assign a probability value to individual expressions. +assign a probability value to individual expressions. If the built-in +is used in a loop construct, the provided probability will influence +the expected number of iterations made by loop optimizations. @end deftypefn @deftypefn {Built-in Function} long __builtin_expect_with_probability diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e9d01950ea3..ce78f7781f5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-07-09 Martin Liska + + * gcc.dg/predict-17.c: Test loop optimizer assumption + about loop iterations. + 2019-07-09 Richard Biener * gcc.dg/tree-ssa/alias-access-path-1.c: Scan fre1 dump. diff --git a/gcc/testsuite/gcc.dg/predict-17.c b/gcc/testsuite/gcc.dg/predict-17.c index 5069aa47c8c..45b618a942c 100644 --- a/gcc/testsuite/gcc.dg/predict-17.c +++ b/gcc/testsuite/gcc.dg/predict-17.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-profile_estimate" } */ +/* { dg-options "-O2 -fdump-tree-profile_estimate-details" } */ extern int global; @@ -11,3 +11,5 @@ void foo (int base) /* { dg-final { scan-tree-dump "first match heuristics: 5.00%" "profile_estimate"} } */ /* { dg-final { scan-tree-dump "__builtin_expect_with_probability heuristics of edge .*->.*: 5.00%" "profile_estimate"} } */ +/* { dg-final { scan-tree-dump "is probably executed at most 19" "profile_estimate"} } */ + -- 2.30.2