invoke.texi (hot-bb-count-fraction): Rework description.
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 2 Aug 2019 10:09:04 +0000 (10:09 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 2 Aug 2019 10:09:04 +0000 (10:09 +0000)
* 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

gcc/ChangeLog
gcc/doc/invoke.texi
gcc/params.def
gcc/predict.c

index a523bf053a9317f95f4b0ef9d38476033488e7f5..87877a2580711f88e297d3e83a286a9beed57286 100644 (file)
@@ -1,3 +1,15 @@
+2019-08-02  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * 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  <ubizjak@gmail.com>
 
        PR target/91323
index 08e99564a70e8f8734560b39c849f5b3862fecf6..7b3c77b8033a53e7a53e6f3ec9a0863a2041c743 100644 (file)
@@ -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.
index 7d0dcae0aeeff21c17e38b2f56093eda7506759c..13001a7bb2d3a6fe63b3e5a455e9cb42f84669e6 100644 (file)
@@ -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",
index f7bcbff1c35004bf6f849a6efba9f9d1403ce653..915f0806b110f99030e0c817ce55c1c060f7a090 100644 (file)
@@ -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;
 }