From 7e17a1bfc7f21e9492b3e5178258e34012fbd3be Mon Sep 17 00:00:00 2001 From: hjl Date: Thu, 12 Mar 2009 19:56:34 +0000 Subject: [PATCH] gcc/ 2009-03-12 H.J. Lu PR target/39445 * config/i386/i386.c (ix86_expand_push): Don't set memory alignment. gcc/testsuite/ 2009-03-12 H.J. Lu PR target/39445 * gcc.target/i386/pr39445.c: New. * gcc.target/i386/push-1.c: XFAIL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144823 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 f41e2ea..9c17490 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2009-03-12 H.J. Lu + PR target/39445 + * config/i386/i386.c (ix86_expand_push): Don't set memory + alignment. + +2009-03-12 H.J. Lu + PR target/39327 * config/i386/sse.md (avx_addsubv8sf3): Correct item bits. (avx_addsubv4df3): Likewise. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 9a34912..e993dce 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 75f76d8..8c9a362 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2009-03-12 H.J. Lu + + PR target/39445 + * gcc.target/i386/pr39445.c: New. + + * gcc.target/i386/push-1.c: XFAIL. + 2009-03-11 Adam Nemet * 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 0000000..6f0295b --- /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 cf5a104..da9b39e 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 *-*-* } } } */ -- 2.7.4