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

--- Comment #7 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Tom de Vries from comment #6)
> I wonder if this will work:
> ...
> diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
> index f8169eef781..79f716b9dbe 100644
> --- a/gcc/tree-cfgcleanup.c
> +++ b/gcc/tree-cfgcleanup.c
> @@ -212,7 +212,9 @@ static void
>  cleanup_call_ctrl_altering_flag (basic_block bb, gimple *bb_end)
>  {
>    if (!is_gimple_call (bb_end)
> -      || !gimple_call_ctrl_altering_p (bb_end))
> +      || !gimple_call_ctrl_altering_p (bb_end)
> +      || (gimple_call_internal_p (bb_end)
> +         && gimple_call_internal_unique_p (bb_end)))
>      return;
>  
>    int flags = gimple_call_flags (bb_end);
> ...

Yep, that seems to do the trick.

Reply via email to