diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2009-03-12 19:56:34 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2009-03-12 12:56:34 -0700 |
commit | 122c59c73bbf3ef40c786f4faab80955a677553d (patch) | |
tree | 6d17a6227eb48feaa4157981bf09050a23de2679 /gcc | |
parent | cec8874f89b61cf90f03e9631eb27a1b7fc623f9 (diff) | |
download | gcc-122c59c73bbf3ef40c786f4faab80955a677553d.zip gcc-122c59c73bbf3ef40c786f4faab80955a677553d.tar.gz gcc-122c59c73bbf3ef40c786f4faab80955a677553d.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr39445.c | 25 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/push-1.c | 2 |
5 files changed, 42 insertions, 5 deletions
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 <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 * 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 <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 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 *-*-* } } } */ |