diff mbox

[rs6000] Make ppc64-abi-2.c test case endian safe

Message ID 201311191504.rAJF4VWZ025732@d06av02.portsmouth.uk.ibm.com
State New
Headers show

Commit Message

Ulrich Weigand Nov. 19, 2013, 3:04 p.m. UTC
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

Comments

David Edelsohn Nov. 19, 2013, 3:41 p.m. UTC | #1
On Tue, Nov 19, 2013 at 10:04 AM, Ulrich Weigand <uweigand@de.ibm.com> wrote:
> 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?

Okay.

Thanks, David
diff mbox

Patch

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();
 }