mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
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 <jakub@redhat.com>
* 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.
This commit is contained in:
committed by
Jakub Jelinek
parent
c44586acdc
commit
e69bea9b4c
@@ -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)));
|
||||
|
||||
Reference in New Issue
Block a user