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