https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119293
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #8)
> ```
> diff --git a/gcc/tree-cfgcleanup.cc b/gcc/tree-cfgcleanup.cc
> index 093fde93da6..9df75d963be 100644
> --- a/gcc/tree-cfgcleanup.cc
> +++ b/gcc/tree-cfgcleanup.cc
> @@ -226,6 +231,7 @@ cleanup_control_expr_graph (basic_block bb,
> gimple_stmt_iterator gsi)
> }
>
> taken_edge->probability += e->probability;
> + taken_edge->dest->count += e->count ();
> remove_edge_and_dominated_blocks (e);
> retval = true;
> }
> ```
>
> Here is the fix for one of the mismatch counts issue here.
> I am still debugging the other one.
e->dest->count -= e->count ();
But then all edges don't do the right thing afterwards ...