This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/81313] Bad stack realignment code with -mno-accumulate-outgoing-args
- From: "hjl at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sun, 09 Jul 2017 18:26:21 +0000
- Subject: [Bug target/81313] Bad stack realignment code with -mno-accumulate-outgoing-args
- Auto-submitted: auto-generated
- References: <bug-81313-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81313
--- Comment #2 from hjl at gcc dot gnu.org <hjl at gcc dot gnu.org> ---
Author: hjl
Date: Sun Jul 9 18:25:49 2017
New Revision: 250084
URL: https://gcc.gnu.org/viewcvs?rev=250084&root=gcc&view=rev
Log:
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.
Added:
trunk/gcc/testsuite/gcc.target/i386/pr81313-1.c
trunk/gcc/testsuite/gcc.target/i386/pr81313-2.c
trunk/gcc/testsuite/gcc.target/i386/pr81313-3.c
trunk/gcc/testsuite/gcc.target/i386/pr81313-4.c
trunk/gcc/testsuite/gcc.target/i386/pr81313-5.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.h
trunk/gcc/testsuite/ChangeLog