]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/39445 (failure of SSE2 tests)
authorH.J. Lu <hongjiu.lu@intel.com>
Thu, 12 Mar 2009 19:56:34 +0000 (19:56 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Thu, 12 Mar 2009 19:56:34 +0000 (12:56 -0700)
gcc/

2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>

PR target/39445
* config/i386/i386.c (ix86_expand_push): Don't set memory
alignment.

gcc/testsuite/

2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>

PR target/39445
* gcc.target/i386/pr39445.c: New.

* gcc.target/i386/push-1.c: XFAIL.

From-SVN: r144823

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr39445.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/push-1.c

index f41e2ea105d31f510b8c4a93d9d4fad559fe4f3c..9c17490e349d807cc26ed5a3830086095d9c716e 100644 (file)
@@ -1,3 +1,9 @@
+2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/39445
+       * config/i386/i386.c (ix86_expand_push): Don't set memory
+       alignment.
+
 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/39327
index 9a34912c313b3a3cb78fdee2bc6c314956c0bde8..e993dce0bde4f8d3cb0a6812c2b94a5e9cb265d2 100644 (file)
@@ -12633,10 +12633,9 @@ ix86_expand_push (enum machine_mode mode, rtx x)
   tmp = gen_rtx_MEM (mode, stack_pointer_rtx);
 
   /* When we push an operand onto stack, it has to be aligned at least
-     at the function argument boundary.  */
-  set_mem_align (tmp,
-                ix86_function_arg_boundary (mode, NULL_TREE));
-
+     at the function argument boundary.  However since we don't have
+     the argument type, we can't determine the actual argument
+     boundary.  */
   emit_move_insn (tmp, x);
 }
 
index 75f76d8a157e4478eb82a5060114ac85b986825f..8c9a362f9c723fd8ae5bf06d06e534fa54251811 100644 (file)
@@ -1,3 +1,10 @@
+2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/39445
+       * gcc.target/i386/pr39445.c: New.
+
+       * gcc.target/i386/push-1.c: XFAIL.
+
 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
 
        * gcc.dg/inline-33.c: New test.
diff --git a/gcc/testsuite/gcc.target/i386/pr39445.c b/gcc/testsuite/gcc.target/i386/pr39445.c
new file mode 100644 (file)
index 0000000..6f0295b
--- /dev/null
@@ -0,0 +1,25 @@
+/* { dg-do run } */
+/* { dg-options "-Os -msse2" } */
+
+#include "sse2-check.h"
+
+typedef struct { __m128 f __attribute__((packed)); } packed;
+
+__m128  __attribute__((noinline))
+foo (__m128 a1, __m128 a2, __m128 a3, __m128 a4,
+     __m128 a5, __m128 a6, __m128 a7, __m128 a8,
+     int b1, int b2, int b3, int b4, int b5, int b6, int b7, packed y)
+{
+  return y.f;
+}
+
+void
+sse2_test (void)
+{
+  packed x;
+  __m128 y = { 0 };
+  x.f = y; 
+  y = foo (y, y, y, y, y, y, y, y, 1, 2, 3, 4, 5, 6, -1, x);
+  if (__builtin_memcmp (&y, &x.f, sizeof (y)) != 0)
+    abort ();
+}
index cf5a104136409b94e8961b93f4cf77370a04cf6c..da9b39ec9b5c391f1c09b8027114e786f1855ff5 100644 (file)
@@ -12,4 +12,4 @@ bar (void)
   foo (x, x, x, x, 5);
 }
 
-/* { dg-final { scan-assembler-not "movups" } } */
+/* { dg-final { scan-assembler-not "movups" { xfail *-*-* } } } */