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

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Alexandre Oliva <aol...@gcc.gnu.org>:

https://gcc.gnu.org/g:1b1a33f76879dae3e6c2c1e8fb3656b0adb52ad5

commit r15-6610-g1b1a33f76879dae3e6c2c1e8fb3656b0adb52ad5
Author: Alexandre Oliva <ol...@adacore.com>
Date:   Fri Dec 20 18:02:08 2024 -0300

    expand: drop stack adjustments after barrier [PR118006]

    A gimple block with __builtin_unreachable () can't have code after it,
    and gimple optimizers ensure there isn't any, even without
    optimization.  But if the block requires stack adjustments,
    e.g. because of a call that passes arguments on the stack, expand will
    emit that after the barrier, and then rtl checkers rightfully
    complain.  Arrange to discard adjustments after a barrier.

    Strub expanders seem to be necessary to bring about the exact
    conditions that require stack adjustments after the block that ends
    with a __builtin_unreachable call.


    for  gcc/ChangeLog

            PR middle-end/118006
            * cfgexpand.cc (expand_gimple_basic_block): Do not emit
            pending stack adjustments after a barrier.

    for  gcc/testsuite/ChangeLog

            PR middle-end/118006
            * gcc.target/i386/strub-pr118006.c: New.

Reply via email to