Commit 350de209 by Jan Hubicka Committed by Jan Hubicka

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
parent 12e917ff
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> 2017-01-06 David Malcolm <dmalcolm@redhat.com>
* passes.c (execute_one_pass): Split out pass-skipping logic * passes.c (execute_one_pass): Split out pass-skipping logic
......
...@@ -2789,7 +2789,7 @@ tree_estimate_probability_bb (basic_block bb) ...@@ -2789,7 +2789,7 @@ tree_estimate_probability_bb (basic_block bb)
if (gimple_call_fndecl (stmt)) if (gimple_call_fndecl (stmt))
predict_edge_def (e, PRED_CALL, NOT_TAKEN); predict_edge_def (e, PRED_CALL, NOT_TAKEN);
else if (virtual_method_call_p (gimple_call_fn (stmt))) 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 else
predict_edge_def (e, PRED_INDIR_CALL, TAKEN); predict_edge_def (e, PRED_INDIR_CALL, TAKEN);
break; break;
......
...@@ -122,7 +122,7 @@ DEF_PREDICTOR (PRED_CALL, "call", HITRATE (55), 0) ...@@ -122,7 +122,7 @@ DEF_PREDICTOR (PRED_CALL, "call", HITRATE (55), 0)
less reliable for indirect calls and polymorphic calls. For spec2k6 less reliable for indirect calls and polymorphic calls. For spec2k6
the predictio nis slightly in the direction of taking the call. */ the predictio nis slightly in the direction of taking the call. */
DEF_PREDICTOR (PRED_INDIR_CALL, "indirect call", HITRATE (51), 0) 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 /* Recursive calls are usually not taken or the function will recurse
indefinitely. */ indefinitely. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment