> 2020-12-10  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR rtl-optimization/98212
>       * dojump.c (do_compare_rtx_and_jump): Change computation of
>       first_prob for and_them and don't invert prob around it.
> 
>       * gcc.dg/predict-8.c: Adjust expected probability.
> 
> --- gcc/dojump.c.jj   2020-12-09 15:11:17.042888002 +0100
> +++ gcc/dojump.c      2020-12-09 20:05:59.535234206 +0100
> @@ -1148,9 +1148,8 @@ do_compare_rtx_and_jump (rtx op0, rtx op
>             if (and_them)
>               {
>                 rtx_code_label *dest_label;
> -               prob = prob.invert ();
> -               profile_probability first_prob = prob.split 
(cprob).invert ();
> -               prob = prob.invert ();
> +               profile_probability first_prob
> +                 = prob.split (cprob.invert ()).invert ();
>                 /* If we only jump if true, just bypass the second 
jump.  */
>                 if (! if_false_label)
>                   {

The computation looks plausible, but you need to fix the comment too, it is 
rather confusing as it seems to depict an OR-ELSE rather than an AND-THEN.

-- 
Eric Botcazou


Reply via email to