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

--- Comment #9 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Hans-Peter Nilsson <h...@gcc.gnu.org>:

https://gcc.gnu.org/g:3d03630b123411340e52d05124cb0cacfa1fc8b0

commit r14-6817-g3d03630b123411340e52d05124cb0cacfa1fc8b0
Author: Hans-Peter Nilsson <h...@axis.com>
Date:   Sun Dec 24 00:10:32 2023 +0100

    CRIS: Fix PR middle-end/113109; "throw" failing

    TL;DR: the "dse1" pass removed the eh-return-address store.  The
    PA also marks its EH_RETURN_HANDLER_RTX as volatile, for the same
    reason, as does visum.  See PR32769 - it's the same thing on PA.

    Conceptually, it's logical that stores to incoming args are
    optimized out on the return path or if no loads are seen -
    at least before epilogue expansion, when the subsequent load
    isn't seen in the RTL, as is the case for the "dse1" pass.

    I haven't looked into why this problem, that appeared for the PA
    already in 2007, was seen for CRIS only recently (with
    r14-6674-g4759383245ac97).

            PR middle-end/113109
            * config/cris/cris.cc (cris_eh_return_handler_rtx): New function.
            * config/cris/cris-protos.h (cris_eh_return_handler_rtx):
Prototype.
            * config/cris/cris.h (EH_RETURN_HANDLER_RTX): Redefine to call
            cris_eh_return_handler_rtx.

Reply via email to