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

--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <[email protected]>:

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

commit r16-5084-ga1de16a8e523de2ba928f7b5251059329eef0dc6
Author: Andrew Pinski <[email protected]>
Date:   Thu Nov 6 12:04:30 2025 -0800

    forwprop: Handle already true/false branchs in optimize_unreachable
[PR122588]

    When optimize_unreachable was moved from fab to forwprop, I missed that due
to
    the integrated copy prop, we might end up with an already true branch
leading
    to a __builtin_unreachable block. optimize_unreachable would switch around
    the if and things go down hill from there since the other edge was already
    marked as non-executable, forwprop didn't process those blocks and didn't
    do copy prop into that block and the original assignment statement was
removed.

    This fixes the problem by having optimize_unreachable not touch the if
    statement was already changed to true/false.

    Note I placed the testcase in gcc.c-torture/compile as gcc.dg/torture
    is NOT currently testing -Og (see PR 122450 for that).

    Changes since v1:
     * v2: Add gimple testcase.

    Bootstrapped and tested on x86_64-linux-gnu.

            PR tree-optimization/122588

    gcc/ChangeLog:

            * tree-ssa-forwprop.cc (optimize_unreachable): Don't touch
            if the condition was already true or false.

    gcc/testsuite/ChangeLog:

            * gcc.c-torture/compile/pr122588-1.c: New test.
            * gcc.dg/tree-ssa/pr122588-1.c: New test.

    Signed-off-by: Andrew Pinski <[email protected]>

Reply via email to