osprey-gcc-4.2.0/gcc/cfgloop.h File Reference

#include "basic-block.h"
#include "rtl.h"

Include dependency graph for cfgloop.h:

Go to the source code of this file.

Data Types

type  lpt_decision
type  nb_iter_bound
type  loop
type  loops
type  loops::cfg
type  rtx_iv
type  niter_desc

Defines

#define LOOPS_NORMAL
#define DLTHE_FLAG_UPDATE_FREQ   1
#define DLTHE_RECORD_COPY_NUMBER   2
#define DLTHE_FLAG_COMPLETTE_PEEL   4

Enumerations

enum  lpt_dec {
  LPT_NONE, LPT_PEEL_COMPLETELY, LPT_PEEL_SIMPLE, LPT_UNROLL_CONSTANT,
  LPT_UNROLL_RUNTIME, LPT_UNROLL_STUPID, LPT_NONE, LPT_PEEL_COMPLETELY,
  LPT_PEEL_SIMPLE, LPT_UNROLL_CONSTANT, LPT_UNROLL_RUNTIME, LPT_UNROLL_STUPID
}
enum  { LOOPS_HAVE_PREHEADERS = 1, LOOPS_HAVE_SIMPLE_LATCHES = 2, LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS = 4, LOOPS_HAVE_MARKED_SINGLE_EXITS = 8 }
enum  { CP_SIMPLE_PREHEADERS = 1 }
enum  { UAP_PEEL = 1, UAP_UNROLL = 2, UAP_UNROLL_ALL = 4 }

Functions/Subroutines

int flow_loops_find (struct loops *)
void flow_loops_free (struct loops *)
void flow_loops_dump (const struct loops *, FILE *, void(*)(const struct loop *, FILE *, int), int)
void flow_loop_dump (const struct loop *, FILE *, void(*)(const struct loop *, FILE *, int), int)
void flow_loop_free (struct loop *)
int flow_loop_nodes_find (basic_block, struct loop *)
void fix_loop_structure (struct loops *, bitmap changed_bbs)
void mark_irreducible_loops (struct loops *)
void mark_single_exit_loops (struct loops *)
void flow_loop_tree_node_add (struct loop *, struct loop *)
void flow_loop_tree_node_remove (struct loop *)
bool flow_loop_nested_p (const struct loop *, const struct loop *)
bool flow_bb_inside_loop_p (const struct loop *, const basic_block)
struct loopfind_common_loop (struct loop *, struct loop *)
struct loopsuperloop_at_depth (struct loop *, unsigned)
unsigned tree_num_loop_insns (struct loop *)
int num_loop_insns (struct loop *)
int average_num_loop_insns (struct loop *)
unsigned get_loop_level (const struct loop *)
bool loop_exit_edge_p (const struct loop *, edge)
void mark_loop_exit_edges (struct loops *)
basic_blockget_loop_body (const struct loop *)
basic_blockget_loop_body_in_dom_order (const struct loop *)
basic_blockget_loop_body_in_bfs_order (const struct loop *)
edgeget_loop_exit_edges (const struct loop *, unsigned *)
unsigned num_loop_branches (const struct loop *)
edge loop_preheader_edge (const struct loop *)
edge loop_latch_edge (const struct loop *)
void add_bb_to_loop (basic_block, struct loop *)
void remove_bb_from_loops (basic_block)
void cancel_loop_tree (struct loops *, struct loop *)
basic_block loop_split_edge_with (edge, rtx)
int fix_loop_placement (struct loop *)
void create_preheaders (struct loops *, int)
void force_single_succ_latches (struct loops *)
void verify_loop_structure (struct loops *)
bool just_once_each_iteration_p (const struct loop *, basic_block)
unsigned expected_loop_iterations (const struct loop *)
rtx doloop_condition_get (rtx)
bool can_duplicate_loop_p (struct loop *loop)
struct loopduplicate_loop (struct loops *, struct loop *, struct loop *)
bool duplicate_loop_to_header_edge (struct loop *, edge, struct loops *, unsigned, sbitmap, edge, edge *, unsigned *, int)
struct looploopify (struct loops *, edge, edge, basic_block, edge, edge, bool)
struct looploop_version (struct loops *, struct loop *, void *, basic_block *, bool)
bool remove_path (struct loops *, edge)
void iv_analysis_loop_init (struct loop *)
bool iv_analyze (rtx, rtx, struct rtx_iv *)
bool iv_analyze_result (rtx, rtx, struct rtx_iv *)
bool iv_analyze_expr (rtx, rtx, enum machine_mode, struct rtx_iv *)
rtx get_iv_value (struct rtx_iv *, rtx)
bool biv_p (rtx, rtx)
void find_simple_exit (struct loop *, struct niter_desc *)
void iv_analysis_done (void)
struct dfiv_current_loop_df (void)
struct niter_descget_simple_loop_desc (struct loop *loop)
void free_simple_loop_desc (struct loop *loop)
static struct niter_descsimple_loop_desc (struct loop *loop)
unsigned global_cost_for_size (unsigned, unsigned, unsigned)
void init_set_costs (void)
struct loopsloop_optimizer_init (unsigned)
void loop_optimizer_finalize (struct loops *)
void unswitch_loops (struct loops *)
void unroll_and_peel_loops (struct loops *, int)
void doloop_optimize_loops (struct loops *)
void move_loop_invariants (struct loops *)
void record_estimate (struct loop *, tree, tree, tree)

Variables

struct loopscurrent_loops
unsigned target_avail_regs
unsigned target_res_regs
unsigned target_small_cost
unsigned target_pres_cost
unsigned target_spill_cost


Define Documentation

#define DLTHE_FLAG_COMPLETTE_PEEL   4

#define DLTHE_FLAG_UPDATE_FREQ   1

Definition at line 244 of file cfgloop.h.

#define DLTHE_RECORD_COPY_NUMBER   2

#define LOOPS_NORMAL


Enumeration Type Documentation

anonymous enum

Enumerator:
LOOPS_HAVE_PREHEADERS 
LOOPS_HAVE_SIMPLE_LATCHES 
LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS 
LOOPS_HAVE_MARKED_SINGLE_EXITS 

Definition at line 133 of file cfgloop.h.

anonymous enum

Enumerator:
CP_SIMPLE_PREHEADERS 

Definition at line 226 of file cfgloop.h.

anonymous enum

Enumerator:
UAP_PEEL 
UAP_UNROLL 
UAP_UNROLL_ALL 

Definition at line 391 of file cfgloop.h.

enum lpt_dec

Enumerator:
LPT_NONE 
LPT_PEEL_COMPLETELY 
LPT_PEEL_SIMPLE 
LPT_UNROLL_CONSTANT 
LPT_UNROLL_RUNTIME 
LPT_UNROLL_STUPID 
LPT_NONE 
LPT_PEEL_COMPLETELY 
LPT_PEEL_SIMPLE 
LPT_UNROLL_CONSTANT 
LPT_UNROLL_RUNTIME 
LPT_UNROLL_STUPID 

Definition at line 30 of file cfgloop.h.


Function Documentation

void add_bb_to_loop ( basic_block  ,
struct loop  
)

int average_num_loop_insns ( struct loop  ) 

bool biv_p ( rtx  ,
rtx   
)

bool can_duplicate_loop_p ( struct loop loop  ) 

Definition at line 813 of file cfgloopmanip.c.

References can_copy_bbs_p(), free(), get_loop_body(), loop::num_nodes, and ret.

void cancel_loop_tree ( struct loops ,
struct loop  
)

Definition at line 1273 of file cfgloop.c.

References cancel_loop(), cancel_loop_tree(), and loop::inner.

Referenced by cancel_loop_tree(), and remove_path().

void create_preheaders ( struct loops ,
int   
)

rtx doloop_condition_get ( rtx   ) 

void doloop_optimize_loops ( struct loops  ) 

struct loop* duplicate_loop ( struct loops ,
struct loop ,
struct loop  
) [read]

bool duplicate_loop_to_header_edge ( struct loop ,
edge  ,
struct loops ,
unsigned  ,
sbitmap  ,
edge  ,
edge ,
unsigned *  ,
int   
)

unsigned expected_loop_iterations ( const struct loop  ) 

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

void find_simple_exit ( struct loop ,
struct niter_desc  
)

int fix_loop_placement ( struct loop  ) 

void fix_loop_structure ( struct loops ,
bitmap  changed_bbs 
)

bool flow_bb_inside_loop_p ( const struct loop ,
const   basic_block 
)

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

void flow_loop_free ( struct loop  ) 

Definition at line 195 of file cfgloop.c.

References loop::entry_edges, loop::exit_edges, free(), loop::pre_header_edges, and loop::pred.

bool flow_loop_nested_p ( const struct loop ,
const struct loop  
)

Definition at line 101 of file cfgloop.c.

References loop::depth, and loop::pred.

int flow_loop_nodes_find ( basic_block  ,
struct loop  
)

void flow_loop_tree_node_add ( struct loop ,
struct loop  
)

void flow_loop_tree_node_remove ( struct loop  ) 

void flow_loops_dump ( const struct loops ,
FILE ,
void(*)(const struct loop *, FILE *, int)  ,
int   
)

int flow_loops_find ( struct loops  ) 

void flow_loops_free ( struct loops  ) 

void force_single_succ_latches ( struct loops  ) 

void free_simple_loop_desc ( struct loop loop  ) 

Definition at line 2720 of file loop-iv.c.

References loop::aux, free(), NULL, and simple_loop_desc().

rtx get_iv_value ( struct rtx_iv ,
rtx   
)

basic_block* get_loop_body ( const struct loop  ) 

basic_block* get_loop_body_in_bfs_order ( const struct loop  ) 

basic_block* get_loop_body_in_dom_order ( const struct loop  ) 

edge* get_loop_exit_edges ( const struct loop ,
unsigned *   
)

unsigned get_loop_level ( const struct loop  ) 

Definition at line 466 of file cfgloopanal.c.

References get_loop_level(), loop::inner, and loop::next.

struct niter_desc* get_simple_loop_desc ( struct loop loop  )  [read]

unsigned global_cost_for_size ( unsigned  ,
unsigned  ,
unsigned   
)

Definition at line 550 of file cfgloopanal.c.

void init_set_costs ( void   ) 

void iv_analysis_done ( void   ) 

Definition at line 1243 of file loop-iv.c.

References bivs, clear_iv_info(), df_finish, free(), htab_delete(), last_def, max_insn_no, max_reg_no, and NULL.

void iv_analysis_loop_init ( struct loop  ) 

bool iv_analyze ( rtx  ,
rtx  ,
struct rtx_iv  
)

bool iv_analyze_expr ( rtx  ,
rtx  ,
enum  machine_mode,
struct rtx_iv  
)

bool iv_analyze_result ( rtx  ,
rtx  ,
struct rtx_iv  
)

Definition at line 1159 of file loop-iv.c.

References df_find_def(), and iv_analyze_def().

Referenced by analyze_iv_to_split_insn().

struct df* iv_current_loop_df ( void   )  [read]

Definition at line 113 of file loop-iv.c.

bool just_once_each_iteration_p ( const struct loop ,
basic_block   
)

bool loop_exit_edge_p ( const struct loop ,
edge   
)

edge loop_latch_edge ( const struct loop  ) 

Definition at line 1508 of file cfgloop.c.

References find_edge(), loop::header, and loop::latch.

void loop_optimizer_finalize ( struct loops  ) 

struct loops* loop_optimizer_init ( unsigned   )  [read]

edge loop_preheader_edge ( const struct loop  ) 

Definition at line 1515 of file cfgloop.c.

References FOR_EACH_EDGE, loop::header, loop::latch, and edge::src.

basic_block loop_split_edge_with ( edge  ,
rtx   
)

struct loop* loop_version ( struct loops ,
struct loop ,
void ,
basic_block ,
bool   
) [read]

struct loop* loopify ( struct loops ,
edge  ,
edge  ,
basic_block  ,
edge  ,
edge  ,
bool   
) [read]

void mark_irreducible_loops ( struct loops  ) 

void mark_loop_exit_edges ( struct loops  ) 

void mark_single_exit_loops ( struct loops  ) 

void move_loop_invariants ( struct loops  ) 

unsigned num_loop_branches ( const struct loop  ) 

int num_loop_insns ( struct loop  ) 

Definition at line 360 of file cfgloopanal.c.

References BB_END, BB_HEAD, free(), get_loop_body(), i, insn, INSN_P, NEXT_INSN, loop::ninsns, and loop::num_nodes.

void record_estimate ( struct loop ,
tree  ,
tree  ,
tree   
)

void remove_bb_from_loops ( basic_block   ) 

bool remove_path ( struct loops ,
edge   
)

static struct niter_desc* simple_loop_desc ( struct loop loop  )  [static, read]

Definition at line 363 of file cfgloop.h.

References loop::aux.

struct loop* superloop_at_depth ( struct loop ,
unsigned   
) [read]

unsigned tree_num_loop_insns ( struct loop  ) 

void unroll_and_peel_loops ( struct loops ,
int   
)

void unswitch_loops ( struct loops  ) 

void verify_loop_structure ( struct loops  ) 


Variable Documentation

Definition at line 43 of file tree-ssa-loop.c.

Definition at line 502 of file cfgloopanal.c.

unsigned target_pres_cost

Definition at line 505 of file cfgloopanal.c.

unsigned target_res_regs

Definition at line 503 of file cfgloopanal.c.

Definition at line 504 of file cfgloopanal.c.

Definition at line 507 of file cfgloopanal.c.


Generated on Wed Apr 8 14:19:47 2009 for Open64 by  doxygen 1.5.6