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

--- Comment #16 from Jan Hubicka <hubicka at ucw dot cz> ---
>                                run-old.result                run-new.result
> f416.gamess                             6.55s    6.70s (   2.29%,  -2.24% )
> i400.perlbench                          7.17s    7.37s (   2.79%,  -2.71% )
> i445.gobmk                              3.64s    3.55s (  -2.47%,   2.54% )
> i458.sjeng                              3.83s    3.75s (  -2.09%,   2.13% )
> i473.astar                              7.33s    7.62s (   3.96%,  -3.81% )

I can imagine perlbench to have indirect call in the internal loop, but the
other
benchmarks may be just a noise for reducing the hitrate down.

> i483.xalancbmk                          7.47s    8.06s (   7.90%,  -7.32% )

This however is probably a bug.  Does it help to change the direction of
predictor
for polymorphic calls back to likely not taken?
Index: predict.c
===================================================================
--- predict.c   (revision 244002)
+++ predict.c   (working copy)
@@ -2789,7 +2789,7 @@ tree_estimate_probability_bb (basic_bloc
                  if (gimple_call_fndecl (stmt))
                    predict_edge_def (e, PRED_CALL, NOT_TAKEN);
                  else if (virtual_method_call_p (gimple_call_fn (stmt)))
-                   predict_edge_def (e, PRED_POLYMORPHIC_CALL, TAKEN);
+                   predict_edge_def (e, PRED_POLYMORPHIC_CALL, NOT_TAKEN);
                  else
                    predict_edge_def (e, PRED_INDIR_CALL, TAKEN);
                  break;


Honza

Reply via email to