diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-02-07 03:11:27 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-02-07 02:11:27 +0000 |
commit | e2f0f5f70455606bf951e22457184e6bf18d580f (patch) | |
tree | 1b375a4749d5db755163291df7cd94b2113f649e /gcc/expr.c | |
parent | 44afe5e47bfc9397159fb0de15ff394960063661 (diff) | |
download | gcc-e2f0f5f70455606bf951e22457184e6bf18d580f.zip gcc-e2f0f5f70455606bf951e22457184e6bf18d580f.tar.gz gcc-e2f0f5f70455606bf951e22457184e6bf18d580f.tar.bz2 |
re PR target/60077 (gcc.target/i386/pr35767-5.c FAILs)
PR target/60077
* expr.c (emit_move_resolve_push): Export; be bit more selective
on when to clear alias set.
* expr.h (emit_move_resolve_push): Declare.
* function.h (struct function): Add tail_call_marked.
* tree-tailcall.c (optimize_tail_call): Set tail_call_marked.
* config/i386/i386-protos.h (ix86_expand_push): Remove.
* config/i386/i386.md (TImode move expander): De not call
ix86_expand_push.
(FP push expanders): Preserve memory attributes.
* config/i386/sse.md (push<mode>1): Remove.
* config/i386/i386.c (ix86_expand_vector_move): Handle push
operation.
(ix86_expand_push): Remove.
* config/i386/mmx.md (push<mode>1): Remove.
From-SVN: r207587
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -3221,7 +3221,7 @@ emit_move_via_integer (enum machine_mode mode, rtx x, rtx y, bool force) /* A subroutine of emit_move_insn_1. X is a push_operand in MODE. Return an equivalent MEM that does not use an auto-increment. */ -static rtx +rtx emit_move_resolve_push (enum machine_mode mode, rtx x) { enum rtx_code code = GET_CODE (XEXP (x, 0)); @@ -4070,7 +4070,7 @@ emit_single_push_insn_1 (enum machine_mode mode, rtx x, tree type) { set_mem_attributes (dest, type, 1); - if (flag_optimize_sibling_calls) + if (cfun->tail_call_marked) /* Function incoming arguments may overlap with sibling call outgoing arguments and we cannot allow reordering of reads from function arguments with stores to outgoing arguments |