On Tue, 6 May 2025, Jørgen Kvalsvik wrote:

> Some systems don't support the %zu format modifier for size_t, such as
> hppa64-hp-hpux. We don't really need the full width of size_t for
> printing the number of prime paths as path counts of those sizes
> would've already blown up the machine. For printing the vector size we
> can use the formatting directives from hwint.h.

OK.

Thanks,
Richard.

>       PR gcov-profile/120086
> 
> gcc/ChangeLog:
> 
>       * gcov.cc (print_prime_path_lines): Use unsigned, format with
>         %u.
>       (print_prime_path_source): Likewise.
>       (output_path_coverage): Format with HOST_SIZE_T_PRINT_UNSIGNED,
>       use unsigned for pathno.
> ---
> 
> I bootstrapped and tested this on x86_64-linux-gnu. John, could you
> please try it on your hppa64 system, and verify that it fixes the tests?
> 
> ---
>  gcc/gcov.cc | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/gcc/gcov.cc b/gcc/gcov.cc
> index e1ad80162b3..0dfe513723c 100644
> --- a/gcc/gcov.cc
> +++ b/gcc/gcov.cc
> @@ -3591,7 +3591,7 @@ print_source_line (FILE *f, const vector<const char *> 
> &source_lines,
>     Returns 1 if the path was printed, 0 otherwise.  */
>  static unsigned
>  print_prime_path_lines (FILE *gcov_file, const function_info &fn,
> -                     const vector<unsigned> &path, size_t pathno)
> +                     const vector<unsigned> &path, unsigned pathno)
>  {
>    const bool is_covered = fn.paths.covered_p (pathno);
>    if (is_covered && !flag_prime_paths_lines_covered)
> @@ -3600,9 +3600,9 @@ print_prime_path_lines (FILE *gcov_file, const 
> function_info &fn,
>      return 0;
>  
>    if (is_covered)
> -    fprintf (gcov_file, "path %zu covered: lines", pathno);
> +    fprintf (gcov_file, "path %u covered: lines", pathno);
>    else
> -    fprintf (gcov_file, "path %zu not covered: lines", pathno);
> +    fprintf (gcov_file, "path %u not covered: lines", pathno);
>  
>    for (size_t k = 0; k != path.size (); ++k)
>      {
> @@ -3658,7 +3658,7 @@ print_inlined_separator (FILE *gcov_file, unsigned 
> current_index, const
>     Returns 1 if the path was printed, 0 otherwise.  */
>  static unsigned
>  print_prime_path_source (FILE *gcov_file, const function_info &fn,
> -                      const vector<unsigned> &path, size_t pathno)
> +                      const vector<unsigned> &path, unsigned pathno)
>  {
>    const bool is_covered = fn.paths.covered_p (pathno);
>    if (is_covered && !flag_prime_paths_source_covered)
> @@ -3667,9 +3667,9 @@ print_prime_path_source (FILE *gcov_file, const 
> function_info &fn,
>      return 0;
>  
>    if (is_covered)
> -    fprintf (gcov_file, "path %zu covered:\n", pathno);
> +    fprintf (gcov_file, "path %u covered:\n", pathno);
>    else
> -    fprintf (gcov_file, "path %zu not covered:\n", pathno);
> +    fprintf (gcov_file, "path %u not covered:\n", pathno);
>    unsigned current = fn.src;
>    for (size_t k = 0; k != path.size (); ++k)
>      {
> @@ -3728,19 +3728,19 @@ output_path_coverage (FILE *gcov_file, const 
> function_info *fn)
>    if (fn->paths.paths.empty ())
>      fnotice (gcov_file, "path coverage omitted\n");
>    else
> -    fnotice (gcov_file, "paths covered %u of %zu\n",
> -          fn->paths.covered_paths (), fn->paths.paths.size ());
> +    fnotice (gcov_file, "paths covered %u of " HOST_SIZE_T_PRINT_UNSIGNED 
> "\n",
> +          fn->paths.covered_paths (), (fmt_size_t)fn->paths.paths.size ());
>  
>    if (flag_prime_paths_lines_uncovered || flag_prime_paths_lines_covered)
>      {
> -      size_t pathno = 0;
> +      unsigned pathno = 0;
>        for (const vector<unsigned> &path : fn->paths.paths)
>       print_prime_path_lines (gcov_file, *fn, path, pathno++);
>      }
>  
>    if (flag_prime_paths_source_uncovered || flag_prime_paths_source_covered)
>      {
> -      size_t pathno = 0;
> +      unsigned pathno = 0;
>        for (const vector<unsigned> &path : fn->paths.paths)
>       print_prime_path_source (gcov_file, *fn, path, pathno++);
>      }
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to