osprey-gcc-4.2.0/gcc/predict.c File Reference

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
#include "rtl.h"
#include "tm_p.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "insn-config.h"
#include "regs.h"
#include "flags.h"
#include "output.h"
#include "function.h"
#include "except.h"
#include "toplev.h"
#include "recog.h"
#include "expr.h"
#include "predict.h"
#include "coverage.h"
#include "sreal.h"
#include "params.h"
#include "target.h"
#include "cfgloop.h"
#include "tree-flow.h"
#include "ggc.h"
#include "tree-dump.h"
#include "tree-pass.h"
#include "timevar.h"
#include "tree-scalar-evolution.h"
#include "predict.def"

Include dependency graph for predict.c:

Go to the source code of this file.

Data Types

type  predictor_info
type  block_info_def
type  edge_info_def

Defines

#define PROB_VERY_UNLIKELY   (REG_BR_PROB_BASE / 100 - 1)
#define PROB_EVEN   (REG_BR_PROB_BASE / 2)
#define PROB_VERY_LIKELY   (REG_BR_PROB_BASE - PROB_VERY_UNLIKELY)
#define PROB_ALWAYS   (REG_BR_PROB_BASE)
#define PRED_FLAG_FIRST_MATCH   1
#define HITRATE(VAL)   ((int) ((VAL) * REG_BR_PROB_BASE + 50) / 100)
#define DEF_PREDICTOR(ENUM, NAME, HITRATE, FLAGS)   {NAME, HITRATE, FLAGS},
#define BLOCK_INFO(B)   ((block_info) (B)->aux)
#define EDGE_INFO(E)   ((edge_info) (E)->aux)

Typedefs

typedef struct block_info_defblock_info
typedef struct edge_info_defedge_info

Functions/Subroutines

static void combine_predictions_for_insn (rtx, basic_block)
static void dump_prediction (FILE *, enum br_predictor, int, basic_block, int)
static void estimate_loops_at_level (struct loop *, bitmap)
static void propagate_freq (struct loop *, bitmap)
static void estimate_bb_frequencies (struct loops *)
static void predict_paths_leading_to (basic_block, int *, enum br_predictor, enum prediction)
static bool last_basic_block_p (basic_block)
static void compute_function_frequency (void)
static void choose_function_section (void)
static bool can_predict_insn_p (rtx)
bool maybe_hot_bb_p (basic_block bb)
bool probably_cold_bb_p (basic_block bb)
bool probably_never_executed_bb_p (basic_block bb)
bool rtl_predicted_by_p (basic_block bb, enum br_predictor predictor)
bool tree_predicted_by_p (basic_block bb, enum br_predictor predictor)
static bool probability_reliable_p (int prob)
bool edge_probability_reliable_p (edge e)
bool br_prob_note_reliable_p (rtx note)
static void predict_insn (rtx insn, enum br_predictor predictor, int probability)
void predict_insn_def (rtx insn, enum br_predictor predictor, enum prediction taken)
void rtl_predict_edge (edge e, enum br_predictor predictor, int probability)
void tree_predict_edge (edge e, enum br_predictor predictor, int probability)
void remove_predictions_associated_with_edge (edge e)
void predict_edge_def (edge e, enum br_predictor predictor, enum prediction taken)
void invert_br_probabilities (rtx insn)
static void set_even_probabilities (basic_block bb)
static void combine_predictions_for_bb (basic_block bb)
static void predict_loops (struct loops *loops_info, bool rtlsimpleloops)
static void bb_estimate_probability_locally (basic_block bb)
void guess_outgoing_edge_probabilities (basic_block bb)
static tree expr_expected_value (tree expr, bitmap visited)
static void strip_builtin_expect (void)
static void tree_predict_by_opcode (basic_block bb)
static enum br_predictor return_prediction (tree val, enum prediction *prediction)
static void apply_return_prediction (int *heads)
static void tree_bb_level_predictions (void)
static unsigned int tree_estimate_probability (void)
void expected_value_to_br_prob (void)
int counts_to_freqs (void)
bool expensive_function_p (int threshold)
static bool gate_estimate_probability (void)

Variables

static sreal real_zero
static sreal real_one
static sreal real_almost_one
static sreal real_br_prob_base
static sreal real_inv_br_prob_base
static sreal real_one_half
static sreal real_bb_freq_max
static struct predictor_info predictor_info []
struct tree_opt_pass pass_profile


Define Documentation

#define BLOCK_INFO ( B   )     ((block_info) (B)->aux)

Definition at line 1549 of file predict.c.

#define DEF_PREDICTOR ( ENUM,
NAME,
HITRATE,
FLAGS   )     {NAME, HITRATE, FLAGS},

Definition at line 108 of file predict.c.

#define EDGE_INFO (  )     ((edge_info) (E)->aux)

Definition at line 1550 of file predict.c.

#define HITRATE ( VAL   )     ((int) ((VAL) * REG_BR_PROB_BASE + 50) / 100)

Definition at line 106 of file predict.c.

#define PRED_FLAG_FIRST_MATCH   1

Definition at line 102 of file predict.c.

#define PROB_ALWAYS   (REG_BR_PROB_BASE)

Definition at line 76 of file predict.c.

#define PROB_EVEN   (REG_BR_PROB_BASE / 2)

Definition at line 74 of file predict.c.

#define PROB_VERY_LIKELY   (REG_BR_PROB_BASE - PROB_VERY_UNLIKELY)

Definition at line 75 of file predict.c.

#define PROB_VERY_UNLIKELY   (REG_BR_PROB_BASE / 100 - 1)

Definition at line 73 of file predict.c.


Typedef Documentation


Function Documentation

static void apply_return_prediction ( int *  heads  )  [static]

static void bb_estimate_probability_locally ( basic_block  bb  )  [static]

bool br_prob_note_reliable_p ( rtx  note  ) 

Definition at line 217 of file predict.c.

References gcc_assert, INTVAL, probability_reliable_p(), REG_BR_PROB, REG_NOTE_KIND, and XEXP.

Referenced by ia64_print_operand(), and output_cbranch().

static bool can_predict_insn_p ( rtx  insn  )  [static]

Definition at line 312 of file predict.c.

References any_condjump_p(), BLOCK_FOR_INSN, EDGE_COUNT, and JUMP_P.

static void choose_function_section ( void   )  [static]

static void combine_predictions_for_bb ( basic_block  bb  )  [static]

static void combine_predictions_for_insn ( rtx  insn,
basic_block  bb 
) [static]

static void compute_function_frequency ( void   )  [static]

int counts_to_freqs ( void   ) 

static void dump_prediction ( FILE file,
enum br_predictor  predictor,
int  probability,
basic_block  bb,
int  used 
) [static]

bool edge_probability_reliable_p ( edge  e  ) 

Definition at line 210 of file predict.c.

References probability_reliable_p().

static void estimate_bb_frequencies ( struct loops loops  )  [static]

static void estimate_loops_at_level ( struct loop first_loop,
bitmap  tovisit 
) [static]

void expected_value_to_br_prob ( void   ) 

bool expensive_function_p ( int  threshold  ) 

static tree expr_expected_value ( tree  expr,
bitmap  visited 
) [static]

static bool gate_estimate_probability ( void   )  [static]

Definition at line 1907 of file predict.c.

References flag_guess_branch_prob.

void guess_outgoing_edge_probabilities ( basic_block  bb  ) 

void invert_br_probabilities ( rtx  insn  ) 

Definition at line 337 of file predict.c.

References GEN_INT, INTVAL, REG_BR_PRED, REG_BR_PROB, REG_BR_PROB_BASE, REG_NOTE_KIND, REG_NOTES, and XEXP.

static bool last_basic_block_p ( basic_block  bb  )  [static]

Definition at line 1458 of file predict.c.

References EXIT_BLOCK_PTR, basic_block_def::next_bb, single_succ(), and single_succ_p().

bool maybe_hot_bb_p ( basic_block  bb  ) 

void predict_edge_def ( edge  e,
enum br_predictor  predictor,
enum prediction  taken 
)

Definition at line 322 of file predict.c.

References predictor_info::hitrate, int, predict_edge(), REG_BR_PROB_BASE, and TAKEN.

static void predict_insn ( rtx  insn,
enum br_predictor  predictor,
int  probability 
) [static]

void predict_insn_def ( rtx  insn,
enum br_predictor  predictor,
enum prediction  taken 
)

Definition at line 241 of file predict.c.

References predictor_info::hitrate, int, predict_insn(), REG_BR_PROB_BASE, and TAKEN.

static void predict_loops ( struct loops loops_info,
bool  rtlsimpleloops 
) [static]

static void predict_paths_leading_to ( basic_block  bb,
int *  heads,
enum br_predictor  pred,
enum prediction  taken 
) [static]

static bool probability_reliable_p ( int  prob  )  [static]

Definition at line 201 of file predict.c.

References HITRATE, PROFILE_GUESSED, and PROFILE_READ.

Referenced by br_prob_note_reliable_p(), and edge_probability_reliable_p().

bool probably_cold_bb_p ( basic_block  bb  ) 

bool probably_never_executed_bb_p ( basic_block  bb  ) 

Definition at line 148 of file predict.c.

References basic_block_def::count, and flag_branch_probabilities.

static void propagate_freq ( struct loop loop,
bitmap  tovisit 
) [static]

void remove_predictions_associated_with_edge ( edge  e  ) 

Definition at line 293 of file predict.c.

References edge::src.

Referenced by remove_edge().

static enum br_predictor return_prediction ( tree  val,
enum prediction prediction 
) [static]

void rtl_predict_edge ( edge  e,
enum br_predictor  predictor,
int  probability 
)

bool rtl_predicted_by_p ( basic_block  bb,
enum br_predictor  predictor 
)

Definition at line 159 of file predict.c.

References BB_END, INSN_P, int, INTVAL, REG_BR_PRED, REG_NOTE_KIND, REG_NOTES, and XEXP.

static void set_even_probabilities ( basic_block  bb  )  [static]

Definition at line 387 of file predict.c.

References EDGE_EH, EDGE_FAKE, edge::flags, FOR_EACH_EDGE, and REG_BR_PROB_BASE.

static void strip_builtin_expect ( void   )  [static]

static void tree_bb_level_predictions ( void   )  [static]

static unsigned int tree_estimate_probability ( void   )  [static]

static void tree_predict_by_opcode ( basic_block  bb  )  [static]

void tree_predict_edge ( edge  e,
enum br_predictor  predictor,
int  probability 
)

bool tree_predicted_by_p ( basic_block  bb,
enum br_predictor  predictor 
)

Definition at line 175 of file predict.c.

References bb_ann(), and i.


Variable Documentation

Initial value:

 
{
  "profile",        
  gate_estimate_probability,    
  tree_estimate_probability,    
  NULL,         
  NULL,         
  0,          
  TV_BRANCH_PROB,     
  PROP_cfg,       
  0,          
  0,          
  0,          
  TODO_ggc_collect | TODO_verify_ssa,     
  0         
}

Definition at line 1917 of file predict.c.

Definition at line 109 of file predict.c.

Definition at line 69 of file predict.c.

Definition at line 69 of file predict.c.

Definition at line 69 of file predict.c.

Definition at line 69 of file predict.c.

sreal real_one [static]

Definition at line 69 of file predict.c.

sreal real_one_half [static]

Definition at line 69 of file predict.c.

sreal real_zero [static]

Definition at line 69 of file predict.c.


Generated on Wed Apr 8 15:41:44 2009 for Open64 by  doxygen 1.5.6