aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-02-07 03:11:27 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2014-02-07 02:11:27 +0000
commite2f0f5f70455606bf951e22457184e6bf18d580f (patch)
tree1b375a4749d5db755163291df7cd94b2113f649e /gcc/expr.c
parent44afe5e47bfc9397159fb0de15ff394960063661 (diff)
downloadgcc-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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 878a51b..c1f67f4 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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