re PR middle-end/77484 (Static branch predictor causes ~6-8% regression of SPEC2000...
authorJan Hubicka <hubicka@ucw.cz>
Fri, 6 Jan 2017 16:10:09 +0000 (17:10 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 6 Jan 2017 16:10:09 +0000 (16:10 +0000)
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

gcc/ChangeLog
gcc/predict.c
gcc/predict.def

index 4911025e7db4266337448e9b529bf19b24b00b89..cc9c11ce2b2beaca34443e7bdd720c87a7400bd3 100644 (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
index f851e14b4ed2bca1f1bfc98fb344387fb8d8bfb1..fa4e626fab86cd5866cad4275a649ef274fb413d 100644 (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;
index b6b2a402b22e1598ff9350b93197b61c166ae5a0..5ddb36a0b2c568d5f762697a3a31247799a4972f 100644 (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.  */