x86: Use DRAP only if there are outgoing arguments on stack
authorH.J. Lu <hongjiu.lu@intel.com>
Sun, 9 Jul 2017 18:25:49 +0000 (18:25 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Sun, 9 Jul 2017 18:25:49 +0000 (11:25 -0700)
commit35c95658180e67503f9de96567ab4d6e71b10a6e
tree958a5f65c985b55904f9ac79c387b66910f49bfc
parent4669526d7eee93bc6c5b54b6accf98b384f36f56
x86: Use DRAP only if there are outgoing arguments on stack

Since DRAP is needed only if there are outgoing arguments on stack, we
should track outgoing arguments on stack and avoid setting need_drap to
true when there are no outgoing arguments on stack.

gcc/

PR target/81313
* config/i386/i386.c (ix86_function_arg_advance): Set
outgoing_args_on_stack to true if there are outgoing arguments
on stack.
(ix86_function_arg): Likewise.
(ix86_get_drap_rtx): Use DRAP only if there are outgoing
arguments on stack and ACCUMULATE_OUTGOING_ARGS is false.
* config/i386/i386.h (machine_function): Add
outgoing_args_on_stack.

gcc/testsuite/

PR target/81313
* gcc.target/i386/pr81313-1.c: New test.
* gcc.target/i386/pr81313-2.c: Likewise.
* gcc.target/i386/pr81313-3.c: Likewise.
* gcc.target/i386/pr81313-4.c: Likewise.
* gcc.target/i386/pr81313-5.c: Likewise.

From-SVN: r250084
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr81313-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr81313-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr81313-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr81313-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr81313-5.c [new file with mode: 0644]