https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121150

            Bug ID: 121150
           Summary: FAIL: 20_util/hash/int128.cc  -std=c++17 execution
                    test
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: testsuite
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---

I got

FAIL: 20_util/hash/int128.cc  -std=c++17 execution test

with -mx32:

/export/gnu/import/git/sources/gcc/libstdc++-v3/testsuite/20_util/hash/int128.cc:12:
int main(): Assertion 'h(i) == i' failed. 

#ifdef __SIZEOF_INT128__
  std::hash<__int128> h;
  __int128 i = (__int128)0x123456789;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For x32, long is 32 bits. INT64 suffix should be used.

  VERIFY( h(i) == 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 );
#endif

Reply via email to