re PR target/66697 (Feature request: -mstackrealign and force_align_arg_pointer for...
authorUros Bizjak <uros@gcc.gnu.org>
Wed, 7 Oct 2015 17:42:09 +0000 (19:42 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 7 Oct 2015 17:42:09 +0000 (19:42 +0200)
commitcba9c7897755fe9f7343d5428b12eea53c98b94e
tree3e395fd8afb8c4fb10c9236ec9c0e860b1e8081b
parent0786e1fe8688691332e6c4f9aab82956546073c5
re PR target/66697 (Feature request: -mstackrealign and force_align_arg_pointer for x86_64)

PR target/66697
* config/i386/i386.c (ix86_option_override_internal): Always use
8-byte minimum stack boundary in 64-bit mode.
(ix86_compute_frame_layout): Remove assert on INCOMING_STACK_BOUNDARY.
(ix86_emit_save_reg_using_mov): Support unaligned SSE store.
Add a REG_CFA_EXPRESSION note if needed.
(ix86_emit_restore_sse_regs_using_mov): Support unaligned SSE load.
(ix86_handle_force_align_arg_pointer_attribute): New.
(ix86_minimum_incoming_stack_boundary): Remove TARGET_64BIT check.
(ix86_attribute_table): Set ix86_force_align_arg_pointer_string
with ix86_handle_force_align_arg_pointer_attribute.
* config/i386/i386.h (MIN_STACK_BOUNDARY): Set to BITS_PER_WORD.

testsuite/ChangeLog:

PR target/66697
* gcc.target/i386/20060512-1.c: Remove ia32 requirement.
(PUSH, POP): New defines.
(sse2_test): Use PUSH and POP to misalign runtime stack.
* gcc.target/i386/20060512-2.c: Remove ia32 requirement.

From-SVN: r228577
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/20060512-1.c
gcc/testsuite/gcc.target/i386/20060512-2.c