[Bug ipa/100413] [11/12/13 Regression] ICE: failed to reclaim unneeded function with custom flags since r11-4267-g0e590b68fa374365

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed May 11 21:29:39 GMT 2022


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

--- Comment #10 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Martin Jambor
<jamborm@gcc.gnu.org>:

https://gcc.gnu.org/g:988fbc636639621dadc5cecbe77aa3f9aefedefb

commit r12-8368-g988fbc636639621dadc5cecbe77aa3f9aefedefb
Author: Martin Jambor <mjambor@suse.cz>
Date:   Wed May 11 23:25:40 2022 +0200

    ipa: Release body of clone_of when removing its last clone (PR 100413)

    In the PR, the verifier complains that we did not manage to remove the
    body of a node and it is right.  The node is kept for materialization
    of two clones but after one is materialized, the other one is removed
    as unneeded (as a part of delete_unreachable_blocks_update_callgraph).
    The problem is that the node removal does not check for this situation
    and can leave the clone_of node there with a body attached to it even
    though there is no use for it any more.  This patch does checks for it
    and handles the situation in a simlar way that
    cgraph_node::materialize_clone does it, except that it also has to be
    careful that the removed node itself does not have any clones, which
    would still need the clone_of's body.  Failing to do that results in a
    bootstrap failure.

    gcc/ChangeLog:

    2022-04-27  Martin Jambor  <mjambor@suse.cz>

            PR ipa/100413
            * cgraph.cc (cgraph_node::remove): Release body of the node this
            is clone_of if appropriate.

    gcc/testsuite/ChangeLog:

    2022-04-27  Martin Jambor  <mjambor@suse.cz>

            PR ipa/100413
            * g++.dg/ipa/pr100413.C: New test.

    (cherry picked from commit 27ee75dbe81bb781214c66a9e6a759c08b7deb60)


More information about the Gcc-bugs mailing list