> > gcc/ChangeLog: > > 2019-06-04 Martin Liska <mli...@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 ();