The attached patch from Andre is fairly straight forward.

The problem was found during our complete patch set testing.

Regression tested on x86_64 with -m32.

OK for mainline along with the whole patch set when ready?

Regards,

Jerry

Author: Andre Vehreschild <[email protected]>
Date:   Sat Feb 14 20:20:48 2026 -0800

    Fortran: Fix run time failures when compiled with -m32

            PR fortran/124080

    libgfortran/ChangeLog:

            * caf/shmem/hashmap.c (hash): Use size_t instead of
            uint64.
            (hmiadd): Use size_t instead of ssize_t.
            (scan_inside_lookahead): Use size_t instead of
            ssize_t.
            (scan_empty): Likewise.
commit 13d1b63a24ac561f7d3595b5152ea44622ec4c52
Author: Andre Vehreschild <[email protected]>
Date:   Sat Feb 14 20:20:48 2026 -0800

    Fortran: Fix run time failures when compiled with -m32
    
            PR fortran/124080
    
    libgfortran/ChangeLog:
    
            * caf/shmem/hashmap.c (hash): Use size_t instead of
            uint64.
            (hmiadd): Use size_t instead of ssize_t.
            (scan_inside_lookahead): Use size_t instead of
            ssize_t.
            (scan_empty): Likewise.

diff --git a/libgfortran/caf/shmem/hashmap.c b/libgfortran/caf/shmem/hashmap.c
index e17d6dd2dca..1dd39801861 100644
--- a/libgfortran/caf/shmem/hashmap.c
+++ b/libgfortran/caf/shmem/hashmap.c
@@ -45,8 +45,8 @@ typedef struct
 
 /* 64 bit to 64 bit hash function.  */
 
-static inline uint64_t
-hash (uint64_t key)
+static inline size_t
+hash (size_t key)
 {
   key ^= (key >> 30);
   key *= 0xbf58476d1ce4e5b9ul;
@@ -83,7 +83,7 @@ hmiadd (hashmap *hm, size_t s, ssize_t o)
 
 /* Get the expected offset for entry id.  */
 
-static inline ssize_t
+static inline size_t
 get_expected_offset (hashmap *hm, memid id)
 {
   return hash (id) >> (VOIDP_BITS - hm->s->bitnum);
@@ -115,7 +115,7 @@ hashmap_init_supervisor (hashmap *hm, hashmap_shared *hs, allocator *a)
    the expected position and the maximum lookahead.  */
 
 static ssize_t
-scan_inside_lookahead (hashmap *hm, ssize_t expected_off, memid id)
+scan_inside_lookahead (hashmap *hm, size_t expected_off, memid id)
 {
   ssize_t lookahead;
   hashmap_entry *data;
@@ -135,7 +135,7 @@ scan_inside_lookahead (hashmap *hm, ssize_t expected_off, memid id)
    to the expected position.  */
 
 static ssize_t
-scan_empty (hashmap *hm, ssize_t expected_off)
+scan_empty (hashmap *hm, size_t expected_off)
 {
   hashmap_entry *data;
 

Reply via email to