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

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

commit r13-2541-g78ef801b7263606d27a6a752a40cbeecc584fb3d
Author: Richard Biener <rguent...@suse.de>
Date:   Wed Sep 7 12:01:34 2022 +0200

    Fix some gimple_ctrl_altering_p mistakes

    CFG cleanup resets the control altering flag for noreturn functions
    when they are ECF_LEAF (like __builtin_unreachable ()).  The
    .ABNORMAL_DISPATCHER call built during CFG construction is not
    marked as control altering.  Several passes inserting traps or
    unreachables fail to set the flag.  And more.

            PR middle-end/106870
            * gimple-harden-conditionals.cc (insert_check_and_trap):
            Set the control-altering flag on the built IFN_TRAP.
            * gimple.cc (gimple_build_builtin_unreachable): Likewise.
            * tree-cfg.cc (handle_abnormal_edges): Set the control-altering
            flag on the .ABNORMAL_DISPATCHER call.
            * tree-cfgcleanup.cc (cleanup_call_ctrl_altering_flag): Avoid
            resetting the control altering flag for ECF_NORETURN calls.
            (cleanup_control_flow_bb): Set the control altering flag on
            discovered noreturn calls.
            * symtab-thunks.cc (expand_thunk): Set the control altering
            flag for the noreturn tailcall case.
            * tree-eh.cc (lower_resx): Likewisw for trap and unwind_resume
            calls.

Reply via email to