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

--- Comment #7 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:2fe432175ef135037dea210002881a093f328779

commit r16-3160-g2fe432175ef135037dea210002881a093f328779
Author: Andrew Pinski <andrew.pin...@oss.qualcomm.com>
Date:   Mon Aug 11 20:47:30 2025 +0000

    forwprop: Fix non-call exceptions some more with copy prop for aggregates
[PR121494]

    Note this conflicts with my not yet approved patch for copy prop for
aggregates into
    function arguments (I will get back to that soon).

    So the problem here is that I assumed if:
    *a = decl1;
    would not cause an exception that:
    decl2 = *a;
    would cause not cause one too.

    I was wrong, in some cases where the Ada front-end marks `*a` in the store
    as TREE_THIS_NOTRAP (due to knowing never be null or some other cases).
    So that means when we prop decl1 into the statement storing decl2, we need
to
    mark that statement as possible to cleanup for eh.

    Bootstraped and tested on x86_64-linux-gnu.
    Also tested on x86_64-linux-gnu with a hack to force generate LC constant
decls in the gimplifier.

            PR tree-optimization/121494
    gcc/ChangeLog:

            * tree-ssa-forwprop.cc (optimize_agr_copyprop): Mark the bb of the
use
            stmt if needed for eh cleanup.

    Signed-off-by: Andrew Pinski <andrew.pin...@oss.qualcomm.com>

Reply via email to