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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The test is clearly little-endian only, it fails on powerpc64-linux as well:
FAIL: gcc.dg/torture/pr116037.c   -O0  execution test
FAIL: gcc.dg/torture/pr116037.c   -O1  execution test
FAIL: gcc.dg/torture/pr116037.c   -O2  execution test
FAIL: gcc.dg/torture/pr116037.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none  execution test
FAIL: gcc.dg/torture/pr116037.c   -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects  execution test
FAIL: gcc.dg/torture/pr116037.c   -O3 -g  execution test
FAIL: gcc.dg/torture/pr116037.c   -Os  execution test
So, either replace
  x &= -((VC) vv)[0];
with
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  x &= -((VC) vv)[0];
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
  x &= -((VC) vv)[sizeof (__int128) - 1];
#else
  x &= -(VC) (vv[0]);
#endif
or so.

Reply via email to