dse-1.c: Pass the union as a second parameter to each function.
authorRichard Sandiford <rsandifo@nildram.co.uk>
Mon, 15 Oct 2007 20:27:24 +0000 (20:27 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Mon, 15 Oct 2007 20:27:24 +0000 (20:27 +0000)
gcc/testsuite/
* gcc.target/mips/dse-1.c: Pass the union as a second parameter
to each function.  Check that there are no unsigned loads.

From-SVN: r129369

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/dse-1.c

index 63f57c486d1c2e462bf4c4b33484beba41a7c368..791b6e115afac04f4c0c70652165f4c88e48b600 100644 (file)
@@ -1,3 +1,8 @@
+2007-10-15  Richard Sandiford  <rsandifo@nildram.co.uk>
+
+       * gcc.target/mips/dse-1.c: Pass the union as a second parameter
+       to each function.  Check that there are no unsigned loads.
+
 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/33136
index a2b844509683edb7e44c1eedfa7c1e2c3834f774..0491265ae6c472f6dad7df3da4951661750fe0c8 100644 (file)
@@ -1,19 +1,19 @@
 /* { dg-mips-options "-mgp64 -O" } */
 
 #define TEST(ID, TYPE1, TYPE2)                                 \
-  union {                                                      \
+  union u##ID {                                                        \
     TYPE1 m1[sizeof (TYPE2) / sizeof (TYPE1)];                 \
     TYPE2 m2;                                                  \
-  } u##ID;                                                     \
+  };                                                           \
                                                                \
   /* The MIPS16 versions of the shifts we need are too         \
      expensive.  */                                            \
   TYPE1 __attribute__((nomips16))                              \
-  f##ID (TYPE2 x)                                              \
+  f##ID (TYPE2 x, union u##ID *u)                              \
   {                                                            \
-    u##ID.m2 = x;                                              \
-    return (u##ID.m1[0]                                                \
-           + u##ID.m1[sizeof (TYPE2) / sizeof (TYPE1) - 1]);   \
+    u->m2 = x;                                                 \
+    return (u->m1[0]                                           \
+           + u->m1[sizeof (TYPE2) / sizeof (TYPE1) - 1]);      \
   }
 
 TEST (1, unsigned int, unsigned long long);
@@ -32,5 +32,8 @@ TEST (10, signed char, int);
    (char, short) tests won't pass.  */
 
 /* { dg-final { scan-assembler-not "\tlh\t" } } */
+/* { dg-final { scan-assembler-not "\tlhu\t" } } */
 /* { dg-final { scan-assembler-not "\tlw\t" } } */
+/* { dg-final { scan-assembler-not "\tlwu\t" } } */
 /* { dg-final { scan-assembler-not "\tlb\t" } } */
+/* { dg-final { scan-assembler-not "\tlbu\t" } } */