osprey/kg++fe/gnu/cfgloop.c File Reference

#include "config.h"
#include "system.h"
#include "rtl.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "toplev.h"

Include dependency graph for cfgloop.c:

Go to the source code of this file.

Defines

#define HEAVY_EDGE_RATIO   8
#define HEADER_BLOCK(B)   (* (int *) (B)->aux)
#define LATCH_EDGE(E)   (*(int *) (E)->aux)

Functions/Subroutines

static void flow_loops_cfg_dump PARAMS ((const struct loops *, FILE *))
static void
flow_loop_entry_edges_find 
PARAMS ((struct loop *))
static int flow_loop_nodes_find PARAMS ((basic_block, struct loop *))
static basic_block
flow_loop_pre_header_find 
PARAMS ((basic_block, dominance_info))
static int flow_loops_level_compute PARAMS ((struct loops *))
static basic_block
make_forwarder_block 
PARAMS ((basic_block, int, int, edge, int))
static void
canonicalize_loop_headers 
PARAMS ((void))
static bool glb_enum_p PARAMS ((basic_block, void *))
static void
redirect_edge_with_latch_update 
PARAMS ((edge, basic_block))
static void flow_loops_cfg_dump (struct loops *loops, FILE *file) const
bool flow_loop_nested_p (struct loop *outer, const struct loop *loop) const
void flow_loop_dump (struct loop *loop, void *FILE *, void *loop_dump_aux, int verbose) const
void flow_loops_dump (struct loops *loops, void *FILE *, void *loop_dump_aux, int verbose) const
static void flow_loop_free (struct loop *loop)
void flow_loops_free (struct loops *loops)
static void flow_loop_entry_edges_find (struct loop *loop)
static void flow_loop_exit_edges_find (struct loop *loop)
static int flow_loop_nodes_find (basic_block header, struct loop *loop)
static void flow_loop_pre_header_scan (struct loop *loop)
static basic_block flow_loop_pre_header_find (basic_block header, dominance_info dom)
void flow_loop_tree_node_add (struct loop *father, struct loop *loop)
void flow_loop_tree_node_remove (struct loop *loop)
static int flow_loop_level_compute (struct loop *loop)
static int flow_loops_level_compute (struct loops *loops)
int flow_loop_scan (struct loops *loops, struct loop *loop, int flags)
static void redirect_edge_with_latch_update (edge e, basic_block to)
static basic_block make_forwarder_block (basic_block bb, int redirect_latch, int redirect_nonlatch, edge except, int conn_latch)
static void canonicalize_loop_headers ()
int flow_loops_find (struct loops *loops, int flags)
int flow_loops_update (struct loops *loops, int flags)
bool flow_bb_inside_loop_p (struct loop *loop, const basic_block bb) const
bool flow_loop_outside_edge_p (struct loop *loop, edge e) const
static bool glb_enum_p (basic_block bb, void *glb_header)
basic_blockget_loop_body (struct loop *loop) const
void add_bb_to_loop (basic_block bb, struct loop *loop)
void remove_bb_from_loops (basic_block bb)
struct loopfind_common_loop (struct loop *loop_s, struct loop *loop_d)
void verify_loop_structure (struct loops *loops, int flags)
edge loop_latch_edge (struct loop *loop)
edge loop_preheader_edge (struct loop *loop)


Define Documentation

#define HEADER_BLOCK ( B   )     (* (int *) (B)->aux)

#define HEAVY_EDGE_RATIO   8

Definition at line 30 of file cfgloop.c.

Referenced by canonicalize_loop_headers().

#define LATCH_EDGE (  )     (*(int *) (E)->aux)


Function Documentation

void add_bb_to_loop ( basic_block  bb,
struct loop loop 
)

static void canonicalize_loop_headers ( void   )  [static]

struct loop* find_common_loop ( struct loop loop_s,
struct loop loop_d 
) [read]

bool flow_bb_inside_loop_p ( struct loop loop,
const basic_block  bb 
) const

Definition at line 954 of file cfgloop.c.

References ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, flow_loop_nested_p(), and basic_block_def::loop_father.

Referenced by add_exit_phis_edge(), add_to_dst_predicate_list(), analyze_evolution_in_loop(), analyze_initial_condition(), analyze_scalar_evolution_1(), can_put_in_inner_loop(), chain_of_csts_start(), check_irred(), check_loop_closed_ssa_use(), copy_loop_headers(), create_loop_notes(), duplicate_loop_to_header_edge(), estimate_probability(), expr_invariant_in_loop_p(), fill_always_executed_in(), fill_sons_in_loop(), find_exits(), find_interesting_uses(), find_simple_exit(), find_uses_to_rename_use(), fix_irreducible_loops(), fix_loop_placement(), flow_loop_exit_edges_find(), flow_loop_outside_edge_p(), follow_ssa_edge_inner_loop_phi(), gcc_loop_to_lambda_loop(), get_iv(), get_loop_body_in_bfs_order(), get_loop_exit_edges(), get_loops_exits(), insert_into_preds_of_block(), instantiate_parameters_1(), ip_normal_pos(), iv_elimination_compare(), loop_exit_edge_p(), mark_irreducible_loops(), mark_single_exit_loops(), may_eliminate_iv(), may_unswitch_on(), maybe_queue_var(), phi_loop_edge_uses_def(), predict_loops(), protect_loop_closed_ssa_form_use(), record_invariant(), rename_variables_in_bb(), should_duplicate_loop_header_p(), single_reachable_address(), slpeel_tree_duplicate_loop_to_edge_cfg(), tree_may_unswitch_on(), tree_unswitch_loop(), unroll_loop_runtime_iterations(), unswitch_loop(), update_vuses_to_preheader(), vect_create_epilog_for_reduction(), vect_get_vec_def_for_operand(), vect_is_simple_reduction(), vect_is_simple_use(), vect_mark_stmts_to_be_vectorized(), vect_stmt_relevant_p(), and verify_loop_structure().

void flow_loop_dump ( struct loop loop,
void FILE *,
void loop_dump_aux,
int  verbose 
) const

static void flow_loop_entry_edges_find ( struct loop loop  )  [static]

Definition at line 240 of file cfgloop.c.

References abort, flow_loop_outside_edge_p(), num_entries, edge::pred, edge::pred_next, and xmalloc().

Referenced by flow_loop_scan().

static void flow_loop_exit_edges_find ( struct loop loop  )  [static]

static void flow_loop_free ( struct loop loop  )  [static]

Definition at line 185 of file cfgloop.c.

References free().

Referenced by cancel_loop(), fix_loop_structure(), flow_loops_free(), and unloop().

static int flow_loop_level_compute ( struct loop loop  )  [static]

Definition at line 495 of file cfgloop.c.

References loop::inner, loop::level, and loop::next.

Referenced by flow_loop_level_compute(), and flow_loops_level_compute().

bool flow_loop_nested_p ( struct loop outer,
const struct loop loop 
) const

static int flow_loop_nodes_find ( basic_block  header,
struct loop loop 
) [static]

bool flow_loop_outside_edge_p ( struct loop loop,
edge  e 
) const

Definition at line 970 of file cfgloop.c.

References abort, edge::dest, flow_bb_inside_loop_p(), and edge::src.

Referenced by flow_loop_entry_edges_find().

static basic_block flow_loop_pre_header_find ( basic_block  header,
dominance_info  dom 
) [static]

Definition at line 416 of file cfgloop.c.

References dominated_by_p(), ENTRY_BLOCK_PTR, node, NULL, loop::pre_header, edge::pred, edge::pred_next, and edge::src.

Referenced by flow_loop_scan().

static void flow_loop_pre_header_scan ( struct loop loop  )  [static]

Definition at line 379 of file cfgloop.c.

References ENTRY_BLOCK_PTR, loop::num, basic_block_def::pred, edge::pred_next, edge::src, and xmalloc().

Referenced by flow_loop_scan().

int flow_loop_scan ( struct loops loops,
struct loop loop,
int  flags 
)

void flow_loop_tree_node_add ( struct loop father,
struct loop loop 
)

void flow_loop_tree_node_remove ( struct loop loop  ) 

Definition at line 469 of file cfgloop.c.

Referenced by cancel_loop(), fix_loop_placement(), fix_loop_structure(), and unloop().

static void flow_loops_cfg_dump ( struct loops loops,
FILE file 
) const [static]

void flow_loops_dump ( struct loops loops,
void FILE *,
void loop_dump_aux,
int  verbose 
) const

int flow_loops_find ( struct loops loops,
int  flags 
)

void flow_loops_free ( struct loops loops  ) 

static int flow_loops_level_compute ( struct loops loops  )  [static]

Definition at line 526 of file cfgloop.c.

References flow_loop_level_compute().

Referenced by flow_loops_find().

int flow_loops_update ( struct loops loops,
int  flags 
)

Definition at line 940 of file cfgloop.c.

References flow_loops_find(), and flow_loops_free().

basic_block* get_loop_body ( struct loop loop  )  const

static bool glb_enum_p ( basic_block  bb,
void glb_header 
) [static]

Definition at line 981 of file cfgloop.c.

Referenced by get_loop_body().

edge loop_latch_edge ( struct loop loop  ) 

edge loop_preheader_edge ( struct loop loop  ) 

static basic_block make_forwarder_block ( basic_block  bb,
int  redirect_latch,
int  redirect_nonlatch,
edge  except,
int  conn_latch 
) [static]

static void redirect_edge_with_latch_update PARAMS ( (edge, basic_block  )  [static]

static bool glb_enum_p PARAMS ( (basic_block, void *)   )  [static]

static void canonicalize_loop_headers PARAMS ( (void  )  [static, read]

Definition at line 77 of file cplus-dem.c.

static basic_block make_forwarder_block PARAMS ( (basic_block, int, int, edge, int)   )  [static]

static int flow_loops_level_compute PARAMS ( (struct loops *)   )  [static]

static basic_block flow_loop_pre_header_find PARAMS ( (basic_block, dominance_info  )  [static]

static int flow_loop_nodes_find PARAMS ( (basic_block, struct loop *)   )  [static]

static void flow_loop_entry_edges_find PARAMS ( (struct loop *)   )  [static]

static void flow_loops_cfg_dump PARAMS ( (const struct loops *, FILE *)   )  [static]

static void redirect_edge_with_latch_update ( edge  e,
basic_block  to 
) [static]

void remove_bb_from_loops ( basic_block  bb  ) 

Definition at line 1040 of file cfgloop.c.

Referenced by combine_blocks(), fix_bb_placement(), remove_bbs(), and unloop().

void verify_loop_structure ( struct loops loops,
int  flags 
)


Generated on Wed Apr 8 15:13:37 2009 for Open64 by  doxygen 1.5.6