On Thu, Nov 15, 2018 at 2:31 PM Michael Matz <m...@suse.de> wrote: > > Hi, > > On Thu, 15 Nov 2018, Richard Biener wrote: > > > > Okay, probably. Then consider the same patch with sprinkling casts to > > > long for all these arguments (the actual numbers will fit that type in > > > reality). I could of course also use PRIu64 but that makes my eyes > > > bleed. > > > > Hmm. Can you use PRIu64 please and cast to uint64_t? OK with that > > change. > > Instead I'd like to check in this. It adds a new macro expanding to > "%" #n PRIu64 "%c" > (with n being the width) corresponding to one SIZE_AMOUNT macro "argument" > (which are actually two arguments), and hides the cast in the latter macro > itself. At least the number of format string args and actual args > corresponds again then and my eyes bleed a little less. Still okay?
Works for me. Richard. > > Ciao, > Michael. > > * system.h (PRsa): New macro. > (SIZE_AMOUNT): Cast number to uint64_t. > * alloc-pool.h (pool_usage::dump): Don't use %zu but PRsa. > (pool_usage::dump_footer): Likewise and also use PRIu64. > * bitmap.h (bitmap_usage::dump): Likewise. > * ggc-common.c (ggc_usage::dump): Likewise. > * ggc-page.c (ggc_print_statistics): Likewise. > * mem-stats.h (mem_usage::dump): Likewise. > (mem_usage::dump_footer): Likewise. > * rtl.c (dump_rtx_statistics): Likewise. > * vec.c (vec_usage::dump): Likewise. > (vec_usage::dump_footer): Likewise. > > diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h > index d17a05ca4fb1..81cb69e227ab 100644 > --- a/gcc/alloc-pool.h > +++ b/gcc/alloc-pool.h > @@ -63,8 +63,8 @@ struct pool_usage: public mem_usage > { > char *location_string = loc->to_string (); > > - fprintf (stderr, "%-32s%-48s %5zu%c%9zu%c:%5.1f%%%9zu" > - "%c%9zu%c:%5.1f%%%12zu\n", > + fprintf (stderr, "%-32s%-48s " PRsa(5) PRsa(9) ":%5.1f%%" > + PRsa(9) PRsa(9) ":%5.1f%%%12" PRIu64 "\n", > m_pool_name, location_string, > SIZE_AMOUNT (m_instances), > SIZE_AMOUNT (m_allocated), > @@ -72,7 +72,7 @@ struct pool_usage: public mem_usage > SIZE_AMOUNT (m_peak), > SIZE_AMOUNT (m_times), > get_percent (m_times, total.m_times), > - m_element_size); > + (uint64_t)m_element_size); > > free (location_string); > } > @@ -91,7 +91,7 @@ struct pool_usage: public mem_usage > dump_footer () > { > print_dash_line (); > - fprintf (stderr, "%s%82zu%c%10zu%c\n", "Total", > + fprintf (stderr, "%s" PRsa(82) PRsa(10) "\n", "Total", > SIZE_AMOUNT (m_instances), SIZE_AMOUNT (m_allocated)); > print_dash_line (); > } > diff --git a/gcc/bitmap.h b/gcc/bitmap.h > index 973ea846baf1..9a180daa7454 100644 > --- a/gcc/bitmap.h > +++ b/gcc/bitmap.h > @@ -239,9 +239,9 @@ struct bitmap_usage: public mem_usage > { > char *location_string = loc->to_string (); > > - fprintf (stderr, "%-48s %9zu%c:%5.1f%%" > - "%9zu%c%9zu%c:%5.1f%%" > - "%11" PRIu64 "%c%11" PRIu64 "%c%10s\n", > + fprintf (stderr, "%-48s " PRsa (9) ":%5.1f%%" > + PRsa (9) PRsa (9) ":%5.1f%%" > + PRsa (11) PRsa (11) "%10s\n", > location_string, SIZE_AMOUNT (m_allocated), > get_percent (m_allocated, total.m_allocated), > SIZE_AMOUNT (m_peak), SIZE_AMOUNT (m_times), > diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c > index 9fdba23ce4c2..c989fb01e669 100644 > --- a/gcc/ggc-common.c > +++ b/gcc/ggc-common.c > @@ -884,8 +884,8 @@ struct ggc_usage: public mem_usage > { > size_t balance = get_balance (); > fprintf (stderr, > - "%-48s %9zu%c:%5.1f%%%9zu%c:%5.1f%%" > - "%9zu%c:%5.1f%%%9zu%c:%5.1f%%%9zu%c\n", > + "%-48s " PRsa (9) ":%5.1f%%" PRsa (9) ":%5.1f%%" > + PRsa (9) ":%5.1f%%" PRsa (9) ":%5.1f%%" PRsa (9) "\n", > prefix, SIZE_AMOUNT (m_collected), > get_percent (m_collected, total.m_collected), > SIZE_AMOUNT (m_freed), get_percent (m_freed, total.m_freed), > diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c > index 00c2864711f0..f04b22ca8cca 100644 > --- a/gcc/ggc-page.c > +++ b/gcc/ggc-page.c > @@ -2288,14 +2288,15 @@ ggc_print_statistics (void) > overhead += (sizeof (page_entry) - sizeof (long) > + BITMAP_SIZE (OBJECTS_IN_PAGE (p) + 1)); > } > - fprintf (stderr, "%-8zu %10zu%c %10zu%c %10zu%c\n", > - OBJECT_SIZE (i), > + fprintf (stderr, "%-8" PRIu64 " " PRsa (10) " " PRsa (10) " " > + PRsa (10) "\n", > + (uint64_t)OBJECT_SIZE (i), > SIZE_AMOUNT (allocated), > SIZE_AMOUNT (in_use), > SIZE_AMOUNT (overhead)); > total_overhead += overhead; > } > - fprintf (stderr, "%-8s %10zu%c %10zu%c %10zu%c\n", > + fprintf (stderr, "%-8s " PRsa (10) " " PRsa (10) " " PRsa (10) "\n", > "Total", > SIZE_AMOUNT (G.bytes_mapped), > SIZE_AMOUNT (G.allocated), > @@ -2306,42 +2307,42 @@ ggc_print_statistics (void) > fprintf (stderr, "\nTotal allocations and overheads during " > "the compilation process\n"); > > - fprintf (stderr, "Total Overhead: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Overhead: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_overhead)); > - fprintf (stderr, "Total Allocated: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Allocated: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_allocated)); > > - fprintf (stderr, "Total Overhead under 32B: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Overhead under 32B: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_overhead_under32)); > - fprintf (stderr, "Total Allocated under 32B: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Allocated under 32B: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_allocated_under32)); > - fprintf (stderr, "Total Overhead under 64B: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Overhead under 64B: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_overhead_under64)); > - fprintf (stderr, "Total Allocated under 64B: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Allocated under 64B: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_allocated_under64)); > - fprintf (stderr, "Total Overhead under 128B: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Overhead under 128B: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_overhead_under128)); > - fprintf (stderr, "Total Allocated under 128B: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > + fprintf (stderr, "Total Allocated under 128B: " > + PRsa (9) "\n", > SIZE_AMOUNT (G.stats.total_allocated_under128)); > > for (i = 0; i < NUM_ORDERS; i++) > if (G.stats.total_allocated_per_order[i]) > { > - fprintf (stderr, "Total Overhead page size %9zu: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > - OBJECT_SIZE (i), > + fprintf (stderr, "Total Overhead page size %9" PRIu64 ": " > + PRsa (9) "\n", > + (uint64_t)OBJECT_SIZE (i), > SIZE_AMOUNT (G.stats.total_overhead_per_order[i])); > - fprintf (stderr, "Total Allocated page size %9zu: %9" > - HOST_LONG_LONG_FORMAT "d%c\n", > - OBJECT_SIZE (i), > + fprintf (stderr, "Total Allocated page size %9" PRIu64 ": " > + PRsa (9) "\n", > + (uint64_t)OBJECT_SIZE (i), > SIZE_AMOUNT (G.stats.total_allocated_per_order[i])); > } > } > diff --git a/gcc/mem-stats.h b/gcc/mem-stats.h > index 6ab92211cf47..219959faa992 100644 > --- a/gcc/mem-stats.h > +++ b/gcc/mem-stats.h > @@ -205,8 +205,8 @@ struct mem_usage > { > char *location_string = loc->to_string (); > > - fprintf (stderr, "%-48s %9zu%c:%5.1f%%" > - "%9zu%c%9zu%c:%5.1f%%%10s\n", > + fprintf (stderr, "%-48s " PRsa (9) ":%5.1f%%" > + PRsa (9) PRsa (9) ":%5.1f%%%10s\n", > location_string, SIZE_AMOUNT (m_allocated), > get_percent (m_allocated, total.m_allocated), > SIZE_AMOUNT (m_peak), SIZE_AMOUNT (m_times), > @@ -220,7 +220,7 @@ struct mem_usage > dump_footer () const > { > print_dash_line (); > - fprintf (stderr, "%s%53zu%c%26zu%c\n", "Total", > + fprintf (stderr, "%s" PRsa (53) PRsa (26) "\n", "Total", > SIZE_AMOUNT (m_allocated), SIZE_AMOUNT (m_times)); > print_dash_line (); > } > diff --git a/gcc/rtl.c b/gcc/rtl.c > index bf897bf75b4e..2ab349981d9b 100644 > --- a/gcc/rtl.c > +++ b/gcc/rtl.c > @@ -821,7 +821,7 @@ dump_rtx_statistics (void) > unsigned j = indices[i]; > if (rtx_alloc_counts[j]) > { > - fprintf (stderr, "%-24s %6zu%c %9zu%c\n", > + fprintf (stderr, "%-24s " PRsa (6) " " PRsa (9) "\n", > GET_RTX_NAME (j), > SIZE_AMOUNT (rtx_alloc_counts[j]), > SIZE_AMOUNT (rtx_alloc_sizes[j])); > @@ -832,14 +832,14 @@ dump_rtx_statistics (void) > > if (rtvec_alloc_counts) > { > - fprintf (stderr, "%-24s %6zu%c %9zu%c\n", "rtvec", > + fprintf (stderr, "%-24s " PRsa (6) " " PRsa (9) "\n", "rtvec", > SIZE_AMOUNT (rtvec_alloc_counts), > SIZE_AMOUNT (rtvec_alloc_sizes)); > total_counts += rtvec_alloc_counts; > total_sizes += rtvec_alloc_sizes; > } > fprintf (stderr, "-----------------------------------------------\n"); > - fprintf (stderr, "%-24s %6d%c %9d%c\n", > + fprintf (stderr, "%-24s " PRsa (6) " " PRsa (9) "\n", > "Total", SIZE_AMOUNT (total_counts), > SIZE_AMOUNT (total_sizes)); > fprintf (stderr, "-----------------------------------------------\n"); > diff --git a/gcc/system.h b/gcc/system.h > index ba328213a693..d23300f5e5db 100644 > --- a/gcc/system.h > +++ b/gcc/system.h > @@ -1231,6 +1231,10 @@ void gcc_stablesort (void *, size_t, size_t, > /* Display an integer amount as multiple of 1K or 1M (in base 2). > Display the correct unit (either k, M, or ' ') after the amount, as > well. */ > -#define SIZE_AMOUNT(size) SIZE_SCALE (size), SIZE_LABEL (size) > +#define SIZE_AMOUNT(size) (uint64_t)SIZE_SCALE (size), SIZE_LABEL (size) > + > +/* Format string particle for printing a SIZE_AMOUNT with N being the width > + of the number. */ > +#define PRsa(n) "%" #n PRIu64 "%c" > > #endif /* ! GCC_SYSTEM_H */ > diff --git a/gcc/vec.c b/gcc/vec.c > index bd49d0358c5c..c08ef0445af6 100644 > --- a/gcc/vec.c > +++ b/gcc/vec.c > @@ -83,13 +83,13 @@ struct vec_usage: public mem_usage > s[48] = '\0'; > > fprintf (stderr, > - "%-48s %10zu%10zu%c:%4.1f%%%9zu%c%10zu" > - ":%4.1f%%%10zu%c%10zu%c\n", > + "%-48s %10" PRIu64 PRsa (10) ":%4.1f%%" PRsa (9) "%10" PRIu64 > + ":%4.1f%%" PRsa (10) PRsa (10) "\n", > s, > - m_element_size, > + (uint64_t)m_element_size, > SIZE_AMOUNT (m_allocated), > m_allocated * 100.0 / total.m_allocated, > - SIZE_AMOUNT (m_peak), m_times, > + SIZE_AMOUNT (m_peak), (uint64_t)m_times, > m_times * 100.0 / total.m_times, > SIZE_AMOUNT (m_items), SIZE_AMOUNT (m_items_peak)); > } > @@ -99,7 +99,7 @@ struct vec_usage: public mem_usage > dump_footer () > { > print_dash_line (); > - fprintf (stderr, "%s%64zu%c%25zu%c%16zu%c\n", > + fprintf (stderr, "%s" PRsa (64) PRsa (25) PRsa (16) "\n", > "Total", SIZE_AMOUNT (m_allocated), > SIZE_AMOUNT (m_times), SIZE_AMOUNT (m_items)); > print_dash_line ();