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.