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

--- Comment #4 from CVS 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:35b5bb475375dba4ea9101d6db13a6012c4e84ca

commit r14-4611-g35b5bb475375dba4ea9101d6db13a6012c4e84ca
Author: Richard Biener <rguent...@suse.de>
Date:   Thu Oct 12 10:13:58 2023 +0200

    tree-optimization/111773 - avoid CD-DCE of noreturn special calls

    The support to elide calls to allocation functions in DCE runs into
    the issue that when implementations are discovered noreturn we end
    up DCEing the calls anyway, leaving blocks without termination and
    without outgoing edges which is both invalid IL and wrong-code when
    as in the example the noreturn call would throw.  The following
    avoids taking advantage of both noreturn and the ability to elide
    allocation at the same time.

    For the testcase it's valid to throw or return 10 by eliding the
    allocation.  But we have to do either where currently we'd run
    off the function.

            PR tree-optimization/111773
            * tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do
            not elide noreturn calls that are reflected to the IL.

            * g++.dg/torture/pr111773.C: New testcase.

Reply via email to