]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Fix hash<__int128> test for x32 [PR121150]
authorJonathan Wakely <jwakely@redhat.com>
Fri, 18 Jul 2025 08:55:13 +0000 (09:55 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 18 Jul 2025 09:29:58 +0000 (10:29 +0100)
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.

libstdc++-v3/testsuite/20_util/hash/int128.cc

index 7c3a1baa0ec6983fd41b237ce7a79ebeaf803650..a26d2e219535f9b477f525e16300e8ee3211feb6 100644 (file)
@@ -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
 }