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

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Biener <rgue...@gcc.gnu.org>:

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

commit r15-6686-geca04660a2c9546c8ecefc5288395eb8a9fdc168
Author: Richard Biener <rguent...@suse.de>
Date:   Wed Jan 8 09:25:52 2025 +0100

    tree-optimization/117979 - failed irreducible loop update from DCE

    When CD-DCE creates forwarders to reduce false control dependences
    it fails to update the irreducible state of edge and the forwarder
    block in case the fowarder groups both normal (entry) and edges
    from an irreducible region (necessarily backedges).  This is because
    when we split the first edge, if that's a normal edge, the forwarder
    and its edge to the original block will not be marked as part
    of the irreducible region but when we then redirect an edge from
    within the region it becomes so.

    The following fixes this up.

    Note I think creating a forwarder that includes backedges is
    likely not going to help, but at this stage I don't want to change
    the CFG going into DCE.  For regular loops we'll have a single
    entry and a single backedge by means of loop init and will never
    create a forwarder - so this is solely happening for irreducible
    regions where it's harder to prove that such forwarder doesn't help.

            PR tree-optimization/117979
            * tree-ssa-dce.cc (make_forwarders_with_degenerate_phis):
            Properly update the irreducible region state.

            * gcc.dg/torture/pr117979.c: New testcase.

Reply via email to