Hello, some routines in the ppc64-abi-2.c test case attempt to verify that the slots of the parameter save area in the caller hold correct values.
However, those slots holds (parts of) "vector int" data, which the test case compares against immediate long values. This of course hard-codes byte order. The patch below fixes the test to construct appropriate values for both byte orders, which fixes the test failure on powerpc64le. Tested on powerpc64le-linux. OK for mainline? Bye, Ulrich Index: gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c (revision 205009) +++ gcc/testsuite/gcc.target/powerpc/ppc64-abi-2.c (working copy) @@ -121,6 +121,12 @@ vector int v; } vector_int_t; +#ifdef __LITTLE_ENDIAN__ +#define MAKE_SLOT(x, y) ((long)x | ((long)y << 32)) +#else +#define MAKE_SLOT(x, y) ((long)y | ((long)x << 32)) +#endif + /* Paramter passing. s : gpr 3 v : vpr 2 @@ -228,8 +234,8 @@ sp = __builtin_frame_address(0); sp = sp->backchain; - if (sp->slot[2].l != 0x100000002ULL - || sp->slot[4].l != 0x500000006ULL) + if (sp->slot[2].l != MAKE_SLOT (1, 2) + || sp->slot[4].l != MAKE_SLOT (5, 6)) abort(); } @@ -270,8 +276,8 @@ sp = __builtin_frame_address(0); sp = sp->backchain; - if (sp->slot[4].l != 0x100000002ULL - || sp->slot[6].l != 0x500000006ULL) + if (sp->slot[4].l != MAKE_SLOT (1, 2) + || sp->slot[6].l != MAKE_SLOT (5, 6)) abort(); } @@ -298,8 +304,8 @@ sp = __builtin_frame_address(0); sp = sp->backchain; - if (sp->slot[4].l != 0x100000002ULL - || sp->slot[6].l != 0x500000006ULL) + if (sp->slot[4].l != MAKE_SLOT (1, 2) + || sp->slot[6].l != MAKE_SLOT (5, 6)) abort(); } -- Dr. Ulrich Weigand GNU/Linux compilers and toolchain ulrich.weig...@de.ibm.com