predict.*: Use rtx_insn (also touches function.c and config/cris/cris.c)
gcc/ * predict.h (predict_insn_def): Strengthen param "insn" from rtx to rtx_insn *. * function.c (stack_protect_epilogue): Add checked cast to rtx_insn for now when invoking predict_insn_def. * predict.c (predict_insn): Strengthen param "insn" from rtx to rtx_insn *. (predict_insn_def): Likewise. (rtl_predict_edge): Likewise for local "last_insn". (can_predict_insn_p): Strengthen param "insn" from const_rtx to const rtx_insn *. (combine_predictions_for_insn): Strengthen param "insn" from rtx to rtx_insn *. (bb_estimate_probability_locally): Likewise for local "last_insn". (expensive_function_p): Likewise for local "insn". * config/cris/cris.c (cris_emit_trap_for_misalignment): Likewise for local "jmp", since this is used when invoking predict_insn_def. From-SVN: r214361
This commit is contained in:
parent
59ea036456
commit
9f215bf54c
|
@ -1,3 +1,25 @@
|
||||||
|
2014-08-22 David Malcolm <dmalcolm@redhat.com>
|
||||||
|
|
||||||
|
* predict.h (predict_insn_def): Strengthen param "insn" from rtx
|
||||||
|
to rtx_insn *.
|
||||||
|
|
||||||
|
* function.c (stack_protect_epilogue): Add checked cast to
|
||||||
|
rtx_insn for now when invoking predict_insn_def.
|
||||||
|
|
||||||
|
* predict.c (predict_insn): Strengthen param "insn" from rtx to
|
||||||
|
rtx_insn *.
|
||||||
|
(predict_insn_def): Likewise.
|
||||||
|
(rtl_predict_edge): Likewise for local "last_insn".
|
||||||
|
(can_predict_insn_p): Strengthen param "insn" from const_rtx to
|
||||||
|
const rtx_insn *.
|
||||||
|
(combine_predictions_for_insn): Strengthen param "insn" from rtx
|
||||||
|
to rtx_insn *.
|
||||||
|
(bb_estimate_probability_locally): Likewise for local "last_insn".
|
||||||
|
(expensive_function_p): Likewise for local "insn".
|
||||||
|
|
||||||
|
* config/cris/cris.c (cris_emit_trap_for_misalignment): Likewise for
|
||||||
|
local "jmp", since this is used when invoking predict_insn_def.
|
||||||
|
|
||||||
2014-08-22 Marek Polacek <polacek@redhat.com>
|
2014-08-22 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c++/62199
|
PR c++/62199
|
||||||
|
|
|
@ -2034,7 +2034,8 @@ cris_simple_epilogue (void)
|
||||||
void
|
void
|
||||||
cris_emit_trap_for_misalignment (rtx mem)
|
cris_emit_trap_for_misalignment (rtx mem)
|
||||||
{
|
{
|
||||||
rtx addr, reg, ok_label, andop, jmp;
|
rtx addr, reg, ok_label, andop;
|
||||||
|
rtx_insn *jmp;
|
||||||
int natural_alignment;
|
int natural_alignment;
|
||||||
gcc_assert (MEM_P (mem));
|
gcc_assert (MEM_P (mem));
|
||||||
|
|
||||||
|
|
|
@ -4691,7 +4691,7 @@ stack_protect_epilogue (void)
|
||||||
except adding the prediction by hand. */
|
except adding the prediction by hand. */
|
||||||
tmp = get_last_insn ();
|
tmp = get_last_insn ();
|
||||||
if (JUMP_P (tmp))
|
if (JUMP_P (tmp))
|
||||||
predict_insn_def (tmp, PRED_NORETURN, TAKEN);
|
predict_insn_def (as_a <rtx_insn *> (tmp), PRED_NORETURN, TAKEN);
|
||||||
|
|
||||||
expand_call (targetm.stack_protect_fail (), NULL_RTX, /*ignore=*/true);
|
expand_call (targetm.stack_protect_fail (), NULL_RTX, /*ignore=*/true);
|
||||||
free_temp_slots ();
|
free_temp_slots ();
|
||||||
|
|
|
@ -74,11 +74,11 @@ along with GCC; see the file COPYING3. If not see
|
||||||
static sreal real_zero, real_one, real_almost_one, real_br_prob_base,
|
static sreal real_zero, real_one, real_almost_one, real_br_prob_base,
|
||||||
real_inv_br_prob_base, real_one_half, real_bb_freq_max;
|
real_inv_br_prob_base, real_one_half, real_bb_freq_max;
|
||||||
|
|
||||||
static void combine_predictions_for_insn (rtx, basic_block);
|
static void combine_predictions_for_insn (rtx_insn *, basic_block);
|
||||||
static void dump_prediction (FILE *, enum br_predictor, int, basic_block, int);
|
static void dump_prediction (FILE *, enum br_predictor, int, basic_block, int);
|
||||||
static void predict_paths_leading_to (basic_block, enum br_predictor, enum prediction);
|
static void predict_paths_leading_to (basic_block, enum br_predictor, enum prediction);
|
||||||
static void predict_paths_leading_to_edge (edge, enum br_predictor, enum prediction);
|
static void predict_paths_leading_to_edge (edge, enum br_predictor, enum prediction);
|
||||||
static bool can_predict_insn_p (const_rtx);
|
static bool can_predict_insn_p (const rtx_insn *);
|
||||||
|
|
||||||
/* Information we hold about each branch predictor.
|
/* Information we hold about each branch predictor.
|
||||||
Filled using information from predict.def. */
|
Filled using information from predict.def. */
|
||||||
|
@ -563,7 +563,7 @@ br_prob_note_reliable_p (const_rtx note)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
predict_insn (rtx insn, enum br_predictor predictor, int probability)
|
predict_insn (rtx_insn *insn, enum br_predictor predictor, int probability)
|
||||||
{
|
{
|
||||||
gcc_assert (any_condjump_p (insn));
|
gcc_assert (any_condjump_p (insn));
|
||||||
if (!flag_guess_branch_prob)
|
if (!flag_guess_branch_prob)
|
||||||
|
@ -578,7 +578,7 @@ predict_insn (rtx insn, enum br_predictor predictor, int probability)
|
||||||
/* Predict insn by given predictor. */
|
/* Predict insn by given predictor. */
|
||||||
|
|
||||||
void
|
void
|
||||||
predict_insn_def (rtx insn, enum br_predictor predictor,
|
predict_insn_def (rtx_insn *insn, enum br_predictor predictor,
|
||||||
enum prediction taken)
|
enum prediction taken)
|
||||||
{
|
{
|
||||||
int probability = predictor_info[(int) predictor].hitrate;
|
int probability = predictor_info[(int) predictor].hitrate;
|
||||||
|
@ -594,7 +594,7 @@ predict_insn_def (rtx insn, enum br_predictor predictor,
|
||||||
void
|
void
|
||||||
rtl_predict_edge (edge e, enum br_predictor predictor, int probability)
|
rtl_predict_edge (edge e, enum br_predictor predictor, int probability)
|
||||||
{
|
{
|
||||||
rtx last_insn;
|
rtx_insn *last_insn;
|
||||||
last_insn = BB_END (e->src);
|
last_insn = BB_END (e->src);
|
||||||
|
|
||||||
/* We can store the branch prediction information only about
|
/* We can store the branch prediction information only about
|
||||||
|
@ -681,7 +681,7 @@ clear_bb_predictions (basic_block bb)
|
||||||
At the moment we represent predictions only on conditional
|
At the moment we represent predictions only on conditional
|
||||||
jumps, not at computed jump or other complicated cases. */
|
jumps, not at computed jump or other complicated cases. */
|
||||||
static bool
|
static bool
|
||||||
can_predict_insn_p (const_rtx insn)
|
can_predict_insn_p (const rtx_insn *insn)
|
||||||
{
|
{
|
||||||
return (JUMP_P (insn)
|
return (JUMP_P (insn)
|
||||||
&& any_condjump_p (insn)
|
&& any_condjump_p (insn)
|
||||||
|
@ -774,7 +774,7 @@ set_even_probabilities (basic_block bb)
|
||||||
note if not already present. Remove now useless REG_BR_PRED notes. */
|
note if not already present. Remove now useless REG_BR_PRED notes. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
combine_predictions_for_insn (rtx insn, basic_block bb)
|
combine_predictions_for_insn (rtx_insn *insn, basic_block bb)
|
||||||
{
|
{
|
||||||
rtx prob_note;
|
rtx prob_note;
|
||||||
rtx *pnote;
|
rtx *pnote;
|
||||||
|
@ -1668,7 +1668,7 @@ predict_loops (void)
|
||||||
static void
|
static void
|
||||||
bb_estimate_probability_locally (basic_block bb)
|
bb_estimate_probability_locally (basic_block bb)
|
||||||
{
|
{
|
||||||
rtx last_insn = BB_END (bb);
|
rtx_insn *last_insn = BB_END (bb);
|
||||||
rtx cond;
|
rtx cond;
|
||||||
|
|
||||||
if (! can_predict_insn_p (last_insn))
|
if (! can_predict_insn_p (last_insn))
|
||||||
|
@ -2890,7 +2890,7 @@ expensive_function_p (int threshold)
|
||||||
limit = ENTRY_BLOCK_PTR_FOR_FN (cfun)->frequency * threshold;
|
limit = ENTRY_BLOCK_PTR_FOR_FN (cfun)->frequency * threshold;
|
||||||
FOR_EACH_BB_FN (bb, cfun)
|
FOR_EACH_BB_FN (bb, cfun)
|
||||||
{
|
{
|
||||||
rtx insn;
|
rtx_insn *insn;
|
||||||
|
|
||||||
FOR_BB_INSNS (bb, insn)
|
FOR_BB_INSNS (bb, insn)
|
||||||
if (active_insn_p (insn))
|
if (active_insn_p (insn))
|
||||||
|
|
|
@ -45,7 +45,7 @@ enum prediction
|
||||||
TAKEN
|
TAKEN
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void predict_insn_def (rtx, enum br_predictor, enum prediction);
|
extern void predict_insn_def (rtx_insn *, enum br_predictor, enum prediction);
|
||||||
extern int counts_to_freqs (void);
|
extern int counts_to_freqs (void);
|
||||||
extern void handle_missing_profiles (void);
|
extern void handle_missing_profiles (void);
|
||||||
extern void estimate_bb_frequencies (bool);
|
extern void estimate_bb_frequencies (bool);
|
||||||
|
|
Loading…
Reference in New Issue