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