aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPat Haugen <pthaugen@us.ibm.com>2016-01-28 20:34:49 +0000
committerPat Haugen <pthaugen@gcc.gnu.org>2016-01-28 20:34:49 +0000
commitd7e2ecf3307766eba4d1a4d6dd714b8100d79b3f (patch)
tree1519763a6137e7f5a9bde0c18fa68ec1cd3cd27f /gcc
parent2036f4132628677b222003778a863bf3adc5dd6d (diff)
downloadgcc-d7e2ecf3307766eba4d1a4d6dd714b8100d79b3f.zip
gcc-d7e2ecf3307766eba4d1a4d6dd714b8100d79b3f.tar.gz
gcc-d7e2ecf3307766eba4d1a4d6dd714b8100d79b3f.tar.bz2
rs6000.c (output_cbranch): Don't statically predict branches if using guessed profile.
* config/rs6000/rs6000.c (output_cbranch): Don't statically predict branches if using guessed profile. From-SVN: r232945
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c7
2 files changed, 9 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 20e16f2..c2df5a0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index e9e12f5..41f53ad 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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