[Bug target/95237] LOCAL_DECL_ALIGNMENT shrinks alignment, FAIL gcc.target/i386/pr69454-2.c

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jul 21 23:30:04 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95237

--- Comment #21 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <hjl@gcc.gnu.org>:

https://gcc.gnu.org/g:0a9d711df36b42b6494b73a90c7ebf050e904493

commit r11-2259-g0a9d711df36b42b6494b73a90c7ebf050e904493
Author: Sunil K Pandey <skpgkp2@gmail.com>
Date:   Fri Jul 17 19:42:09 2020 -0700

    Add TARGET_LOWER_LOCAL_DECL_ALIGNMENT [PR95237]

    Default for this hook is NOP. For x86, in 32 bit mode, this hook
    sets alignment of long long on stack to 32 bits if preferred stack
    boundary is 32 bits.

      - This patch prevents lowering of alignment from following macros.
            LOCAL_ALIGNMENT
            STACK_SLOT_ALIGNMENT
            LOCAL_DECL_ALIGNMENT
      - This patch fixes
            gcc.target/i386/pr69454-2.c
            gcc.target/i386/stackalign/longlong-1.c
      - Regression test on x86-64, no new fail introduced.

    Tested on x86-64.

    gcc/c/ChangeLog:

            PR target/95237
            * c-decl.c (finish_decl): Call target hook
            lower_local_decl_alignment to lower local decl alignment.

    gcc/ChangeLog:

            PR target/95237
            * config/i386/i386-protos.h (ix86_local_alignment): Add
            another function parameter may_lower alignment. Default is
            false.
            * config/i386/i386.c (ix86_lower_local_decl_alignment): New
            function.
            (ix86_local_alignment): Amend ix86_local_alignment to accept
            another parameter may_lower. If may_lower is true, new align
            may be lower than incoming alignment. If may_lower is false,
            new align will be greater or equal to incoming alignment.
            (TARGET_LOWER_LOCAL_DECL_ALIGNMENT): Define.
            * doc/tm.texi: Regenerate.
            * doc/tm.texi.in (TARGET_LOWER_LOCAL_DECL_ALIGNMENT): New
            hook.
            * target.def (lower_local_decl_alignment): New hook.

    gcc/cp/ChangeLog:

            PR target/95237
            * decl.c (cp_finish_decl): Call target hook
            lower_local_decl_alignment to lower local decl alignment.

    gcc/testsuite/ChangeLog:

            PR target/95237
            * c-c++-common/pr95237-1.c: New test.
            * c-c++-common/pr95237-2.c: New test.
            * c-c++-common/pr95237-3.c: New test.
            * c-c++-common/pr95237-4.c: New test.
            * c-c++-common/pr95237-5.c: New test.
            * c-c++-common/pr95237-6.c: New test.
            * c-c++-common/pr95237-7.c: New test.
            * c-c++-common/pr95237-8.c: New test.
            * c-c++-common/pr95237-9.c: New test.


More information about the Gcc-bugs mailing list