int probability; /* biased by REG_BR_PROB_BASE */
gcov_type count; /* Expected number of executions calculated
in profile.c */
- bool crossing_edge; /* Crosses between hot and cold sections, when
- we do partitioning. */
};
typedef struct edge_def *edge;
predicate is zero. */
#define EDGE_EXECUTABLE 4096 /* Edge is executable. Only
valid during SSA-CCP. */
-#define EDGE_ALL_FLAGS 8191
+#define EDGE_CROSSING 8192 /* Edge crosses between hot
+ and cold sections, when we
+ do partitioning. */
+#define EDGE_ALL_FLAGS 16383
#define EDGE_COMPLEX (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH)
extern int n_edges;
+/* Signalize the status of profile information in the CFG. */
+extern enum profile_status
+{
+ PROFILE_ABSENT,
+ PROFILE_GUESSED,
+ PROFILE_READ
+} profile_status;
+
/* Index by basic block number, get basic block struct info. */
extern GTY(()) varray_type basic_block_info;
extern int dfs_enumerate_from (basic_block, int,
bool (*)(basic_block, void *),
basic_block *, int, void *);
+extern void compute_dominance_frontiers (bitmap *);
extern void dump_edge_info (FILE *, edge, int);
extern void brief_dump_cfg (FILE *);
extern void clear_edges (void);
extern bool control_flow_insn_p (rtx);
/* In bb-reorder.c */
-extern void reorder_basic_blocks (void);
+extern void reorder_basic_blocks (unsigned int);
extern void partition_hot_cold_basic_blocks (void);
/* In cfg.c */
extern basic_block next_dom_son (enum cdi_direction, basic_block);
extern edge try_redirect_by_replacing_jump (edge, basic_block, bool);
extern void break_superblocks (void);
+extern void check_bb_profile (basic_block, FILE *);
#include "cfghooks.h"