https://gcc.gnu.org/g:6f5d89063d79c776c4d612b7240e54c53156cedd

commit r16-2345-g6f5d89063d79c776c4d612b7240e54c53156cedd
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Fri Jul 18 09:55:13 2025 +0100

    libstdc++: Fix hash<__int128> test for x32 [PR121150]
    
    I incorrectly assumed that all targets that support __int128 use the
    LP64 ABI, so size_t is a 64-bit type. But x32 uses ILP32 and still
    supports __int128 (because it's an ILP32 target on 64-bit hardware).
    
    Add casts to the tests so that we get the correct expected values using
    size_t type.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/121150
            * testsuite/20_util/hash/int128.cc: Cast expected values to
            size_t.

Diff:
---
 libstdc++-v3/testsuite/20_util/hash/int128.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/testsuite/20_util/hash/int128.cc 
b/libstdc++-v3/testsuite/20_util/hash/int128.cc
index 7c3a1baa0ec6..a26d2e219535 100644
--- a/libstdc++-v3/testsuite/20_util/hash/int128.cc
+++ b/libstdc++-v3/testsuite/20_util/hash/int128.cc
@@ -9,12 +9,12 @@ int main()
 #ifdef __SIZEOF_INT128__
   std::hash<__int128> h;
   __int128 i = (__int128)0x123456789;
-  VERIFY( h(i) == i );
+  VERIFY( h(i) == (std::size_t)i );
   VERIFY( h(-i) == (std::size_t)-i );
   VERIFY( h(~i) == (std::size_t)~i );
   std::hash<unsigned __int128> hu;
   unsigned __int128 u = i;
-  VERIFY( hu(u) == u );
+  VERIFY( hu(u) == (std::size_t)u );
   VERIFY( hu(~u) == (std::size_t)~u );
 #endif
 }

Reply via email to