From 122c59c73bbf3ef40c786f4faab80955a677553d Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hongjiu.lu@intel.com>
Date: Thu, 12 Mar 2009 19:56:34 +0000
Subject: [PATCH] re PR target/39445 (failure of SSE2 tests)

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                           |  6 ++++++
 gcc/config/i386/i386.c                  |  7 +++----
 gcc/testsuite/ChangeLog                 |  7 +++++++
 gcc/testsuite/gcc.target/i386/pr39445.c | 25 +++++++++++++++++++++++++
 gcc/testsuite/gcc.target/i386/push-1.c  |  2 +-
 5 files changed, 42 insertions(+), 5 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr39445.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f41e2ea105d3..9c17490e349d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 9a34912c313b..e993dce0bde4 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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);
 }
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 75f76d8a157e..8c9a362f9c72 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 000000000000..6f0295bc1e0f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr39445.c
@@ -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 ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/push-1.c b/gcc/testsuite/gcc.target/i386/push-1.c
index cf5a10413640..da9b39ec9b5c 100644
--- a/gcc/testsuite/gcc.target/i386/push-1.c
+++ b/gcc/testsuite/gcc.target/i386/push-1.c
@@ -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 *-*-* } } } */
-- 
GitLab