This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/81313] Bad stack realignment code with -mno-accumulate-outgoing-args


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]