[PATCH 3/4] Dump histograms only if present.
Jan Hubicka
hubicka@ucw.cz
Thu Jun 6 12:16:00 GMT 2019
>
> gcc/ChangeLog:
>
> 2019-06-04 Martin Liska <mliska@suse.cz>
>
> * value-prof.c (dump_histogram_value): Print histogram values
> only if present.
What is the point of having histogram value when there are no counters?
Honza
> ---
> gcc/value-prof.c | 72 +++++++++++++++++++-----------------------------
> 1 file changed, 28 insertions(+), 44 deletions(-)
>
> diff --git a/gcc/value-prof.c b/gcc/value-prof.c
> index e893ca084c9..25b957d0c0a 100644
> --- a/gcc/value-prof.c
> +++ b/gcc/value-prof.c
> @@ -228,42 +228,38 @@ dump_histogram_value (FILE *dump_file, histogram_value hist)
> switch (hist->type)
> {
> case HIST_TYPE_INTERVAL:
> - fprintf (dump_file, "Interval counter range %d -- %d",
> - hist->hdata.intvl.int_start,
> - (hist->hdata.intvl.int_start
> - + hist->hdata.intvl.steps - 1));
> if (hist->hvalue.counters)
> {
> - unsigned int i;
> - fprintf (dump_file, " [");
> - for (i = 0; i < hist->hdata.intvl.steps; i++)
> - fprintf (dump_file, " %d:%" PRId64,
> - hist->hdata.intvl.int_start + i,
> - (int64_t) hist->hvalue.counters[i]);
> - fprintf (dump_file, " ] outside range:%" PRId64,
> - (int64_t) hist->hvalue.counters[i]);
> + fprintf (dump_file, "Interval counter range %d -- %d",
> + hist->hdata.intvl.int_start,
> + (hist->hdata.intvl.int_start
> + + hist->hdata.intvl.steps - 1));
> +
> + unsigned int i;
> + fprintf (dump_file, " [");
> + for (i = 0; i < hist->hdata.intvl.steps; i++)
> + fprintf (dump_file, " %d:%" PRId64,
> + hist->hdata.intvl.int_start + i,
> + (int64_t) hist->hvalue.counters[i]);
> + fprintf (dump_file, " ] outside range:%" PRId64 ".\n",
> + (int64_t) hist->hvalue.counters[i]);
> }
> - fprintf (dump_file, ".\n");
> break;
>
> case HIST_TYPE_POW2:
> - fprintf (dump_file, "Pow2 counter ");
> if (hist->hvalue.counters)
> - {
> - fprintf (dump_file, "pow2:%" PRId64
> - " nonpow2:%" PRId64,
> - (int64_t) hist->hvalue.counters[1],
> - (int64_t) hist->hvalue.counters[0]);
> - }
> - fprintf (dump_file, ".\n");
> + fprintf (dump_file, "Pow2 counter pow2:%" PRId64
> + " nonpow2:%" PRId64 ".\n",
> + (int64_t) hist->hvalue.counters[1],
> + (int64_t) hist->hvalue.counters[0]);
> break;
>
> case HIST_TYPE_SINGLE_VALUE:
> case HIST_TYPE_INDIR_CALL:
> - fprintf (dump_file, (hist->type == HIST_TYPE_SINGLE_VALUE
> - ? "Single values " : "Indirect call "));
> if (hist->hvalue.counters)
> {
> + fprintf (dump_file, (hist->type == HIST_TYPE_SINGLE_VALUE
> + ? "Single values " : "Indirect call "));
> for (unsigned i = 0; i < GCOV_DISK_SINGLE_VALUES; i++)
> {
> fprintf (dump_file, "[%" PRId64 ":%" PRId64 "]",
> @@ -272,40 +268,28 @@ dump_histogram_value (FILE *dump_file, histogram_value hist)
> if (i != GCOV_DISK_SINGLE_VALUES - 1)
> fprintf (dump_file, ", ");
> }
> + fprintf (dump_file, ".\n");
> }
> - fprintf (dump_file, ".\n");
> break;
>
> case HIST_TYPE_AVERAGE:
> - fprintf (dump_file, "Average value ");
> if (hist->hvalue.counters)
> - {
> - fprintf (dump_file, "sum:%" PRId64
> - " times:%" PRId64,
> - (int64_t) hist->hvalue.counters[0],
> - (int64_t) hist->hvalue.counters[1]);
> - }
> - fprintf (dump_file, ".\n");
> + fprintf (dump_file, "Average value sum:%" PRId64
> + " times:%" PRId64 ".\n",
> + (int64_t) hist->hvalue.counters[0],
> + (int64_t) hist->hvalue.counters[1]);
> break;
>
> case HIST_TYPE_IOR:
> - fprintf (dump_file, "IOR value ");
> if (hist->hvalue.counters)
> - {
> - fprintf (dump_file, "ior:%" PRId64,
> - (int64_t) hist->hvalue.counters[0]);
> - }
> - fprintf (dump_file, ".\n");
> + fprintf (dump_file, "IOR value ior:%" PRId64 ".\n",
> + (int64_t) hist->hvalue.counters[0]);
> break;
>
> case HIST_TYPE_TIME_PROFILE:
> - fprintf (dump_file, "Time profile ");
> if (hist->hvalue.counters)
> - {
> - fprintf (dump_file, "time:%" PRId64,
> - (int64_t) hist->hvalue.counters[0]);
> - }
> - fprintf (dump_file, ".\n");
> + fprintf (dump_file, "Time profile time:%" PRId64 ".\n",
> + (int64_t) hist->hvalue.counters[0]);
> break;
> case HIST_TYPE_MAX:
> gcc_unreachable ();
More information about the Gcc-patches
mailing list