aboutsummaryrefslogtreecommitdiff
path: root/gcc/predict.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-01-19 13:05:20 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-01-19 12:05:20 +0000
commite2a1e6a441f9ced9412609cd4d8ae8ede52628a3 (patch)
tree4b5b32f73bb7f7d32c6c5d3c9876f543a772cdf4 /gcc/predict.c
parentd1b9a5724b8a05d2d2d51b3e5d13cc785326c74f (diff)
downloadgcc-e2a1e6a441f9ced9412609cd4d8ae8ede52628a3.zip
gcc-e2a1e6a441f9ced9412609cd4d8ae8ede52628a3.tar.gz
gcc-e2a1e6a441f9ced9412609cd4d8ae8ede52628a3.tar.bz2
Introduce PROB_UNINITIALIZED constant and use it in predict.def.
2018-01-19 Martin Liska <mliska@suse.cz> * predict.c (predict_insn_def): Add new assert. (struct branch_predictor): Change type to signed integer. (test_prediction_value_range): Amend test to cover PROB_UNINITIALIZED. * predict.def (PRED_LOOP_ITERATIONS): Use the new constant. (PRED_LOOP_ITERATIONS_GUESSED): Likewise. (PRED_LOOP_ITERATIONS_MAX): Likewise. (PRED_LOOP_IV_COMPARE): Likewise. * predict.h (PROB_UNINITIALIZED): Define new constant. From-SVN: r256887
Diffstat (limited to 'gcc/predict.c')
-rw-r--r--gcc/predict.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/predict.c b/gcc/predict.c
index fdf5d82..340c766 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -545,6 +545,7 @@ predict_insn_def (rtx_insn *insn, enum br_predictor predictor,
enum prediction taken)
{
int probability = predictor_info[(int) predictor].hitrate;
+ gcc_assert (probability != PROB_UNINITIALIZED);
if (taken != TAKEN)
probability = REG_BR_PROB_BASE - probability;
@@ -4196,7 +4197,7 @@ namespace selftest {
struct branch_predictor
{
const char *name;
- unsigned probability;
+ int probability;
};
#define DEF_PREDICTOR(ENUM, NAME, HITRATE, FLAGS) { NAME, HITRATE },
@@ -4211,6 +4212,9 @@ test_prediction_value_range ()
for (unsigned i = 0; predictors[i].name != NULL; i++)
{
+ if (predictors[i].probability == PROB_UNINITIALIZED)
+ continue;
+
unsigned p = 100 * predictors[i].probability / REG_BR_PROB_BASE;
ASSERT_TRUE (p > 50 && p <= 100);
}