On 2/1/24 13:06, Xi Ruoyao wrote:
On Thu, 2024-02-01 at 14:01 +0100, Jakub Jelinek wrote:
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.
Should use HOST_WIDE_INT_PRINT_UNSIGNED instead of PRIu64.
Updated the patch with the suggestions.
diff --git a/gcc/ira-conflicts.cc b/gcc/ira-conflicts.cc
index 671b4e42b6f..32688f9dc39 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 "HOST_WIDE_INT_PRINT_UNSIGNED" bytes for conflict table (uncompressed
size "HOST_WIDE_INT_PRINT_UNSIGNED")\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 8d3294370404ceda3177bdd8fa7749bfc4d64bc6 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 HOST_WIDE_INT_PRINT_UNSIGNED for
build_conflict_bit_table
LLP64 platforms like uses 32bit for long and may truncate. Use
size_t and HOST_WIDE_INT_PRINT_UNSIGNED to guarantee 64bit lengths.
gcc:
*ira-conflicts.cc (build_conflict_bit_table):
use HOST_WIDE_INT_PRINT_UNSIGNED.
---
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..32688f9dc39 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 "HOST_WIDE_INT_PRINT_UNSIGNED" bytes for conflict table (uncompressed size "HOST_WIDE_INT_PRINT_UNSIGNED")\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