[PATCH] dojump: Fix up probabilities splitting in dojump.c comparison splitting [PR98212]

Eric Botcazou botcazou@adacore.com
Thu Dec 10 11:14:22 GMT 2020


> 2020-12-10  Jakub Jelinek  <jakub@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




More information about the Gcc-patches mailing list