Commit 50aab7dc by H.J. Lu Committed by H.J. Lu

re PR target/37049 (Unaligned move used on aligned destination of push insn)

gcc/

2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/37049
	* config/i386/i386.c (ix86_expand_push): Set memory alignment
	to function argument boundary.

gcc/testsuite/

2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/37049
	* gcc.target/i386/push-1.c: New.

From-SVN: r144209
parent 7f720bdb
2009-02-16 H.J. Lu <hongjiu.lu@intel.com>
PR target/37049
* config/i386/i386.c (ix86_expand_push): Set memory alignment
to function argument boundary.
2009-02-16 Hariharan Sandanagobalane <hariharan@picochip.com>
* config/picochip/picochip.md (lea_add): Allow any nonimmediate
......
......@@ -12594,6 +12594,12 @@ ix86_expand_push (enum machine_mode mode, rtx x)
emit_move_insn (stack_pointer_rtx, tmp);
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));
emit_move_insn (tmp, x);
}
......
2009-02-16 H.J. Lu <hongjiu.lu@intel.com>
PR target/37049
* gcc.target/i386/push-1.c: New.
2009-02-15 Uros Bizjak <ubizjak@gmail.com>
* gcc.dg/struct/w_prof_single_str_global.c: Mask return value.
......
/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-w -msse2 -Os" } */
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
extern void foo (__m128 x, __m128 y ,__m128 z ,__m128 a, int size);
void
bar (void)
{
__m128 x = { 1.0 };
foo (x, x, x, x, 5);
}
/* { dg-final { scan-assembler-not "movups" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment