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
This commit is contained in:
Pat Haugen 2016-01-28 20:34:49 +00:00 committed by Pat Haugen
parent 2036f41326
commit d7e2ecf330
2 changed files with 9 additions and 3 deletions

View 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.

View 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