From: Eric Botcazou Date: Fri, 2 Aug 2019 10:09:04 +0000 (+0000) Subject: invoke.texi (hot-bb-count-fraction): Rework description. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cc692b4c402bba7dd92f681e3e095b5c6e5f27dd;p=gcc.git invoke.texi (hot-bb-count-fraction): Rework description. * doc/invoke.texi (hot-bb-count-fraction): Rework description. (hot-bb-count-ws-permille): Likewise. (hot-bb-frequency-fraction): Likewise. (unlikely-bb-count-fraction): Likewise. * params.def (hot-bb-count-fraction): Rework description. (hot-bb-count-ws-permille): Likewise. (hot-bb-frequency-fraction): Likewise. (unlikely-bb-count-fraction): Likewise. Remove min and max values. * predict.c (get_hot_bb_threshold): Deal with 0 HOT_BB_COUNT_FRACTION. From-SVN: r274006 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a523bf053a9..87877a25807 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2019-08-02 Eric Botcazou + + * doc/invoke.texi (hot-bb-count-fraction): Rework description. + (hot-bb-count-ws-permille): Likewise. + (hot-bb-frequency-fraction): Likewise. + (unlikely-bb-count-fraction): Likewise. + * params.def (hot-bb-count-fraction): Rework description. + (hot-bb-count-ws-permille): Likewise. + (hot-bb-frequency-fraction): Likewise. + (unlikely-bb-count-fraction): Likewise. Remove min and max values. + * predict.c (get_hot_bb_threshold): Deal with 0 HOT_BB_COUNT_FRACTION. + 2019-08-02 Uroš Bizjak PR target/91323 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 08e99564a70..7b3c77b8033 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -11443,13 +11443,38 @@ for vectorizer. Value -1 means no limit. The maximum number of iterations of a loop the brute-force algorithm for analysis of the number of iterations of the loop tries to evaluate. +@item hot-bb-count-fraction +The denominator n of fraction 1/n of the maximal execution count of a +basic block in the entire program that a basic block needs to at least +have in order to be considered hot. The default is 10000, which means +that a basic block is considered hot if its execution count is greater +than 1/10000 of the maximal execution count. 0 means that it is never +considered hot. Used in non-LTO mode. + @item hot-bb-count-ws-permille -A basic block profile count is considered hot if it contributes to -the given permillage (i.e.@: 0...1000) of the entire profiled execution. +The number of most executed permilles, ranging from 0 to 1000, of the +profiled execution of the entire program to which the execution count +of a basic block must be part of in order to be considered hot. The +default is 990, which means that a basic block is considered hot if +its execution count contributes to the upper 990 permilles, or 99.0%, +of the profiled execution of the entire program. 0 means that it is +never considered hot. Used in LTO mode. @item hot-bb-frequency-fraction -Select fraction of the entry block frequency of executions of basic block in -function given basic block needs to have to be considered hot. +The denominator n of fraction 1/n of the execution frequency of the +entry block of a function that a basic block of this function needs +to at least have in order to be considered hot. The default is 1000, +which means that a basic block is considered hot in a function if it +is executed more frequently than 1/1000 of the frequency of the entry +block of the function. 0 means that it is never considered hot. + +@item unlikely-bb-count-fraction +The denominator n of fraction 1/n of the number of profiled runs of +the entire program below which the execution count of a basic block +must be in order for the basic block to be considered unlikely executed. +The default is 20, which means that a basic block is considered unlikely +executed if it is executed in fewer than 1/20, or 5%, of the runs of +the program. 0 means that it is always considered unlikely executed. @item max-predicted-iterations The maximum number of loop iterations we predict statically. This is useful @@ -12130,11 +12155,6 @@ A threshold on the average loop count considered by the swing modulo scheduler. The number of cycles the swing modulo scheduler considers when checking conflicts using DFA. -@item hot-bb-count-fraction -Select fraction of the maximal count of repetitions of basic block -in program given basic block needs -to have to be considered hot (used in non-LTO mode) - @item max-inline-insns-recursive-auto The maximum number of instructions non-inline function can grow to via recursive inlining. @@ -12172,10 +12192,6 @@ Maximum number of arrays per scop. @item max-vartrack-reverse-op-size Max. size of loc list for which reverse ops should be added. -@item unlikely-bb-count-fraction -The minimum fraction of profile runs a given basic block execution count -must be not to be considered unlikely. - @item tracer-dynamic-coverage-feedback The percentage of function, weighted by execution frequency, that must be covered by trace formation. diff --git a/gcc/params.def b/gcc/params.def index 7d0dcae0aee..13001a7bb2d 100644 --- a/gcc/params.def +++ b/gcc/params.def @@ -427,23 +427,31 @@ DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD, DEFPARAM(HOT_BB_COUNT_FRACTION, "hot-bb-count-fraction", - "Select fraction of the maximal count of repetitions of basic block in program given basic " - "block needs to have to be considered hot (used in non-LTO mode).", + "The denominator n of fraction 1/n of the maximal execution count of " + "a basic block in the entire program that a basic block needs to at " + "least have in order to be considered hot (used in non-LTO mode).", 10000, 0, 0) + DEFPARAM(HOT_BB_COUNT_WS_PERMILLE, "hot-bb-count-ws-permille", - "A basic block profile count is considered hot if it contributes to " - "the given permillage of the entire profiled execution (used in LTO mode).", + "The number of most executed permilles of the profiled execution of " + "the entire program to which the execution count of a basic block " + "must be part of in order to be considered hot (used in LTO mode).", 990, 0, 1000) + DEFPARAM(HOT_BB_FREQUENCY_FRACTION, "hot-bb-frequency-fraction", - "Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot.", + "The denominator n of fraction 1/n of the execution frequency of the " + "entry block of a function that a basic block of this function needs " + "to at least have in order to be considered hot.", 1000, 0, 0) DEFPARAM(UNLIKELY_BB_COUNT_FRACTION, "unlikely-bb-count-fraction", - "The minimum fraction of profile runs a given basic block execution count must be not to be considered unlikely.", - 20, 1, 10000) + "The denominator n of fraction 1/n of the number of profiled runs of " + "the entire program below which the execution count of a basic block " + "must be in order for the basic block to be considered unlikely.", + 20, 0, 0) DEFPARAM (PARAM_ALIGN_THRESHOLD, "align-threshold", diff --git a/gcc/predict.c b/gcc/predict.c index f7bcbff1c35..915f0806b11 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -132,11 +132,15 @@ get_hot_bb_threshold () { if (min_count == -1) { - gcov_type t = profile_info->sum_max / PARAM_VALUE (HOT_BB_COUNT_FRACTION); - set_hot_bb_threshold (t); + const int hot_frac = PARAM_VALUE (HOT_BB_COUNT_FRACTION); + const gcov_type min_hot_count + = hot_frac + ? profile_info->sum_max / hot_frac + : (gcov_type)profile_count::max_count; + set_hot_bb_threshold (min_hot_count); if (dump_file) fprintf (dump_file, "Setting hotness threshold to %" PRId64 ".\n", - min_count); + min_hot_count); } return min_count; }