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:
parent
12e917fff2
commit
350de209bf
3 changed files with 9 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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. */
|
||||
|
|
Loading…
Add table
Reference in a new issue