]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/predict.h
re PR c++/62199 (ICE with -Wlogical-not-parentheses)
[thirdparty/gcc.git] / gcc / predict.h
CommitLineData
21f1c577 1/* Definitions for branch prediction routines in the GNU compiler.
23a5b65a 2 Copyright (C) 2001-2014 Free Software Foundation, Inc.
4db384c9 3
1322177d 4This file is part of GCC.
4db384c9 5
1322177d
LB
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
9dcd6f09 8Software Foundation; either version 3, or (at your option) any later
1322177d 9version.
4db384c9 10
1322177d
LB
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14for more details.
4db384c9
JH
15
16You should have received a copy of the GNU General Public License
9dcd6f09
NC
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
4db384c9 19
6de9cd9a
DN
20#ifndef GCC_PREDICT_H
21#define GCC_PREDICT_H
22
31e071ae
MP
23/* Random guesstimation given names.
24 PROB_VERY_UNLIKELY should be small enough so basic block predicted
25 by it gets below HOT_BB_FREQUENCY_FRACTION. */
26#define PROB_VERY_UNLIKELY (REG_BR_PROB_BASE / 2000 - 1)
27#define PROB_EVEN (REG_BR_PROB_BASE / 2)
28#define PROB_VERY_LIKELY (REG_BR_PROB_BASE - PROB_VERY_UNLIKELY)
29#define PROB_ALWAYS (REG_BR_PROB_BASE)
30#define PROB_UNLIKELY (REG_BR_PROB_BASE / 5 - 1)
d5fa9cc9 31#define PROB_LIKELY (REG_BR_PROB_BASE - PROB_UNLIKELY)
31e071ae 32
134d3a2e 33#define DEF_PREDICTOR(ENUM, NAME, HITRATE, FLAGS) ENUM,
4db384c9
JH
34enum br_predictor
35{
36#include "predict.def"
37
2ba84f36 38 /* Upper bound on non-language-specific builtins. */
4db384c9
JH
39 END_PREDICTORS
40};
41#undef DEF_PREDICTOR
42enum prediction
43{
44 NOT_TAKEN,
45 TAKEN
46};
47
79a490a9 48extern void predict_insn_def (rtx, enum br_predictor, enum prediction);
bbd236a1 49extern int counts_to_freqs (void);
eb4b92c1 50extern void handle_missing_profiles (void);
67fa7880 51extern void estimate_bb_frequencies (bool);
2e28e797
JH
52extern const char *predictor_name (enum br_predictor);
53extern tree build_predict_expr (enum br_predictor, enum prediction);
8e88f9fd 54extern void tree_estimate_probability (void);
965b98d0 55extern void compute_function_frequency (void);
b35366ce 56extern void rebuild_frequencies (void);
4db384c9 57
6de9cd9a 58#endif /* GCC_PREDICT_H */