re PR middle-end/77484 (Static branch predictor causes ~6-8% regression of SPEC2000 GAP)

PR middle-end/77484
	* predict.def (PRED_POLYMORPHIC_CALL): Set to 58
	* predict.c (tree_estimate_probability_bb): Reverse direction of
	polymorphic call predictor.

From-SVN: r244167
This commit is contained in:
Jan Hubicka 2017-01-06 17:10:09 +01:00 committed by Jan Hubicka
parent 12e917fff2
commit 350de209bf
3 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2017-01-01 Jan Hubicka <hubicka@ucw.cz>
PR middle-end/77484
* predict.def (PRED_POLYMORPHIC_CALL): Set to 58
* predict.c (tree_estimate_probability_bb): Reverse direction of
polymorphic call predictor.
2017-01-06 David Malcolm <dmalcolm@redhat.com>
* passes.c (execute_one_pass): Split out pass-skipping logic

View File

@ -2789,7 +2789,7 @@ tree_estimate_probability_bb (basic_block bb)
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;

View File

@ -122,7 +122,7 @@ DEF_PREDICTOR (PRED_CALL, "call", HITRATE (55), 0)
less reliable for indirect calls and polymorphic calls. For spec2k6
the predictio nis slightly in the direction of taking the call. */
DEF_PREDICTOR (PRED_INDIR_CALL, "indirect call", HITRATE (51), 0)
DEF_PREDICTOR (PRED_POLYMORPHIC_CALL, "polymorphic call", HITRATE (58), 0)
DEF_PREDICTOR (PRED_POLYMORPHIC_CALL, "polymorphic call", HITRATE (59), 0)
/* Recursive calls are usually not taken or the function will recurse
indefinitely. */