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

--- Comment #9 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pins...@gcc.gnu.org>:

https://gcc.gnu.org/g:ae4c22ab05501940e345ee799be3aa36ffa7269a

commit r15-9202-gae4c22ab05501940e345ee799be3aa36ffa7269a
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Wed Apr 2 18:18:50 2025 -0700

    always turn return into __builtin_unreachable for noreturn fuctions
[PR119599]

    r8-3988-g356fcc67fba52b added code to turn return statements into
__builtin_unreachable
    calls inside noreturn functions but only while optimizing. Since
-funreachable-traps
    was added (r13-1204-gd68d3664253696), it is a good idea to move over to
using
    __builtin_unreachable (and the trap version with this option which defaults
at -O0 and -0g)
    instead of just a follow through even at -O0.

    This also fixes a regression when inlining a noreturn function that returns
at -O0 (due to always_inline)
    as we would get an empty bb which has no successor edge instead of one with
a call to __builtin_unreachable.

    I also noticed there was no testcase testing the warning about
__builtin_return inside a noreturn function
    so I added a testcase there.

    Bootstrapped and tested on x86_64-linux-gnu.

            PR ipa/119599

    gcc/ChangeLog:

            * tree-cfg.cc (pass_warn_function_return::execute): Turn return
statements always
            into __builtin_unreachable calls.

    gcc/testsuite/ChangeLog:

            * gcc.dg/torture/pr119599-1.c: New test.
            * gcc.dg/builtin-apply5.c: New test.

    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Reply via email to