From: Jakub Jelinek Date: Mon, 1 Dec 2025 09:44:48 +0000 (+0100) Subject: a68: Fix algol68 build on i686-linux X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e69bea9b4ccfe79efeec6e87d7d24e6350f31375;p=thirdparty%2Fgcc.git a68: Fix algol68 build on i686-linux GCC with enabled algol68 fails to build on i686-linux, the error is ../../gcc/algol68/a68-low-multiples.cc:636:31: error: format ‘%ld’ expects argument of type ‘long int’, but argument 2 has type ‘size_t’ {aka ‘unsigned int’} [-Werror=format=] xasprintf is printf family, so it can't use %zd portably, so the following patch uses what is used elsewhere, the HOST_SIZE_T_PRINT* macros with (fmt_size_t) cast - the macros pick the smallest of %d, %ld and %lld depending on SIZE_MAX, but it could still disagree on the exact type and cause warnings or for hosts with say 24-bit size_t it could be even larger, so the cast is needed to handle that. 2025-12-01 Jakub Jelinek * algol68/a68-low-multiples.cc (copy_multiple_dimension_elems): Use HOST_SIZE_T_PRINT_DEC in xasprintf format string and cast to fmt_size_t. --- diff --git a/gcc/algol68/a68-low-multiples.cc b/gcc/algol68/a68-low-multiples.cc index ce5996c9249..572162e30ac 100644 --- a/gcc/algol68/a68-low-multiples.cc +++ b/gcc/algol68/a68-low-multiples.cc @@ -633,7 +633,7 @@ copy_multiple_dimension_elems (size_t dim, size_t num_dimensions, tree element_type = TREE_TYPE (element_pointer_type); tree upb = a68_multiple_upper_bound (from, size_int (dim)); - char *name = xasprintf ("r%ld%%", dim); + char *name = xasprintf ("r" HOST_SIZE_T_PRINT_DEC "%%", (fmt_size_t) dim); indexes[dim] = a68_lower_tmpvar (name, ssizetype, a68_multiple_lower_bound (from, size_int (dim)));