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.