]> gcc.gnu.org Git - gcc.git/commitdiff
rs6000.c (output_cbranch): Don't statically predict branches if using guessed profile.
authorPat Haugen <pthaugen@us.ibm.com>
Thu, 28 Jan 2016 20:34:49 +0000 (20:34 +0000)
committerPat Haugen <pthaugen@gcc.gnu.org>
Thu, 28 Jan 2016 20:34:49 +0000 (20:34 +0000)
* config/rs6000/rs6000.c (output_cbranch): Don't statically predict
branches if using guessed profile.

From-SVN: r232945

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 20e16f2d0f049a3b03f8aeceab26d65b9ab20b73..c2df5a036fcf984d5187946becf6c38d8dc3f810 100644 (file)
@@ -1,3 +1,8 @@
+2016-01-28  Pat Haugen  <pthaugen@us.ibm.com>
+
+       * config/rs6000/rs6000.c (output_cbranch): Don't statically predict
+       branches if using guessed profile.
+
 2016-01-28  H.J. Lu  <hongjiu.lu@intel.com>
 
        * graphite-optimize-isl.c (optimize_isl): Fix dump.
index e9e12f530206c78415398aae0b8c26d7d64690aa..41f53adc0c37ea1c29ea5017e65568ffbd067a3d 100644 (file)
@@ -21432,14 +21432,15 @@ output_cbranch (rtx op, const char *label, int reversed, rtx_insn *insn)
       /* PROB is the difference from 50%.  */
       int prob = XINT (note, 0) - REG_BR_PROB_BASE / 2;
 
-      /* Only hint for highly probable/improbable branches on newer
-        cpus as static prediction overrides processor dynamic
-        prediction.  For older cpus we may as well always hint, but
+      /* Only hint for highly probable/improbable branches on newer cpus when
+        we have real profile data, as static prediction overrides processor
+        dynamic prediction.  For older cpus we may as well always hint, but
         assume not taken for branches that are very close to 50% as a
         mispredicted taken branch is more expensive than a
         mispredicted not-taken branch.  */
       if (rs6000_always_hint
          || (abs (prob) > REG_BR_PROB_BASE / 100 * 48
+             && (profile_status_for_fn (cfun) != PROFILE_GUESSED)
              && br_prob_note_reliable_p (note)))
        {
          if (abs (prob) > REG_BR_PROB_BASE / 20
This page took 0.120553 seconds and 5 git commands to generate.