On Thu, Feb 01, 2024 at 12:45:31PM +0000, Jonathan Yong wrote: > Attached patch OK? Copied inline for review convenience.
No, I think e.g. AIX doesn't support the z modifier. I don't see %zd or %zu used anywhere except in gcc/jit/ which presumably doesn't work on AIX. If you really want to avoid truncation, perhaps do something like if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL) { if (sizeof (void *) <= sizeof (long)) fprintf (ira_dump_file, "+++Allocating %lu bytes for conflict table " "(uncompressed size %lu)\n", (unsigned long) (sizeof (IRA_INT_TYPE) * allocated_words_num), (unsigned long) (sizeof (IRA_INT_TYPE) * object_set_words * ira_objects_num)); else fprintf (ira_dump_file, "+++Allocating %l" PRIu64 "bytes for conflict table " "(uncompressed size %" PRIu64 ")\n", (unsigned HOST_WIDE_INT) (sizeof (IRA_INT_TYPE) * allocated_words_num), (unsigned HOST_WIDE_INT) (sizeof (IRA_INT_TYPE) * object_set_words * ira_objects_num)); } > diff --git a/gcc/ira-conflicts.cc b/gcc/ira-conflicts.cc > index 671b4e42b6f..e966afe6cdc 100644 > --- a/gcc/ira-conflicts.cc > +++ b/gcc/ira-conflicts.cc > @@ -150,9 +150,9 @@ build_conflict_bit_table (void) > if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL) > fprintf > (ira_dump_file, > - "+++Allocating %ld bytes for conflict table (uncompressed size > %ld)\n", > - (long) allocated_words_num * sizeof (IRA_INT_TYPE), > - (long) object_set_words * ira_objects_num * sizeof (IRA_INT_TYPE)); > + "+++Allocating %zu bytes for conflict table (uncompressed size > %zu)\n", > + (size_t)(allocated_words_num * sizeof (IRA_INT_TYPE)), > + (size_t)(object_set_words * ira_objects_num * sizeof (IRA_INT_TYPE))); > objects_live = sparseset_alloc (ira_objects_num); > for (i = 0; i < ira_max_point; i++) > From 48861b8578526ac199b123ff71af8f9778c396c3 Mon Sep 17 00:00:00 2001 > From: Jonathan Yong <10wa...@gmail.com> > Date: Thu, 1 Feb 2024 12:35:52 +0000 > Subject: [PATCH] PR target/43613: use %zu for build_conflict_bit_table > > LLP64 platforms like uses 32bit for long and may truncate. Use > size_t and %zu to guarantee 64bit lengths. > > gcc: > *ira-conflicts.cc: use %zu for build_conflict_bit_table. > --- > gcc/ira-conflicts.cc | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/gcc/ira-conflicts.cc b/gcc/ira-conflicts.cc > index 671b4e42b6f..e966afe6cdc 100644 > --- a/gcc/ira-conflicts.cc > +++ b/gcc/ira-conflicts.cc > @@ -150,9 +150,9 @@ build_conflict_bit_table (void) > if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL) > fprintf > (ira_dump_file, > - "+++Allocating %ld bytes for conflict table (uncompressed size > %ld)\n", > - (long) allocated_words_num * sizeof (IRA_INT_TYPE), > - (long) object_set_words * ira_objects_num * sizeof (IRA_INT_TYPE)); > + "+++Allocating %zu bytes for conflict table (uncompressed size > %zu)\n", > + (size_t)(allocated_words_num * sizeof (IRA_INT_TYPE)), > + (size_t)(object_set_words * ira_objects_num * sizeof (IRA_INT_TYPE))); > > objects_live = sparseset_alloc (ira_objects_num); > for (i = 0; i < ira_max_point; i++) > -- > 2.43.0 > Jakub