osprey-gcc/gcc/cfgloop.h File Reference

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

Include dependency graph for cfgloop.h:

This graph shows which files directly or indirectly include this file:

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 LOOP_TREE   1
#define LOOP_PRE_HEADER   2
#define LOOP_ENTRY_EDGES   4
#define LOOP_EXIT_EDGES   8
#define LOOP_EDGES   (LOOP_ENTRY_EDGES | LOOP_EXIT_EDGES)
#define LOOP_ALL   15
#define DLTHE_FLAG_UPDATE_FREQ   1
#define LOOP_PREFETCH   1

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 *, int flags)
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)
int flow_loop_scan (struct loop *, int)
void flow_loop_free (struct loop *)
void mark_irreducible_loops (struct loops *)
void mark_single_exit_loops (struct loops *)
void create_loop_notes (void)
void flow_loop_tree_node_add (struct loop *, struct loop *)
void flow_loop_tree_node_remove (struct loop *)
bool flow_loop_outside_edge_p (const struct loop *, edge)
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 *)
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 (struct loops *, struct loop *)
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 (struct loop *, basic_block)
unsigned expected_loop_iterations (const struct loop *)
bool can_duplicate_loop_p (struct loop *loop)
struct loopduplicate_loop (struct loops *, struct loop *, struct loop *)
int 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)
bool remove_path (struct loops *, edge)
edge split_loop_bb (basic_block, void *)
void iv_analysis_loop_init (struct loop *)
rtx iv_get_reaching_def (rtx, rtx)
bool iv_analyze (rtx, rtx, 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 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 (FILE *)
void loop_optimizer_finalize (struct loops *, FILE *)
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)
void loop_optimize (rtx, FILE *, int)

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_UPDATE_FREQ   1

#define LOOP_ALL   15

Definition at line 264 of file cfgloop.h.

#define LOOP_EDGES   (LOOP_ENTRY_EDGES | LOOP_EXIT_EDGES)

Definition at line 263 of file cfgloop.h.

#define LOOP_ENTRY_EDGES   4

Definition at line 261 of file cfgloop.h.

#define LOOP_EXIT_EDGES   8

Definition at line 262 of file cfgloop.h.

#define LOOP_PRE_HEADER   2

Definition at line 260 of file cfgloop.h.

#define LOOP_PREFETCH   1

Definition at line 486 of file cfgloop.h.

#define LOOP_TREE   1

Definition at line 259 of file cfgloop.h.


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 206 of file cfgloop.h.

anonymous enum

Enumerator:
CP_SIMPLE_PREHEADERS 

Definition at line 311 of file cfgloop.h.

anonymous enum

Enumerator:
UAP_PEEL 
UAP_UNROLL 
UAP_UNROLL_ALL 

Definition at line 471 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  
)

Definition at line 1025 of file cfgloop.c.

int average_num_loop_insns ( struct loop  ) 

Definition at line 382 of file cfgloopanal.c.

Referenced by decide_unrolling_and_peeling().

bool biv_p ( rtx  ,
rtx   
)

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

Referenced by analyze_iv_to_split_insn().

bool can_duplicate_loop_p ( struct loop loop  ) 

void cancel_loop ( struct loops ,
struct loop  
)

void cancel_loop_tree ( struct loops ,
struct loop  
)

Definition at line 1273 of file cfgloop.c.

void create_loop_notes ( void   ) 

void create_preheaders ( struct loops ,
int   
)

Definition at line 1222 of file cfgloopmanip.c.

Referenced by loop_optimizer_init().

void doloop_optimize_loops ( struct loops  ) 

Referenced by rest_of_handle_loop2(), and rtl_doloop().

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

int 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]

Definition at line 1055 of file cfgloop.c.

void find_simple_exit ( struct loop ,
struct niter_desc  
)

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

Referenced by get_simple_loop_desc(), and predict_loops().

int fix_loop_placement ( struct loop  ) 

Definition at line 646 of file cfgloopmanip.c.

Referenced by fix_bb_placements(), fix_loop_placements(), and unswitch_loop().

bool flow_bb_inside_loop_p ( const struct loop ,
const   basic_block 
)

Definition at line 987 of file cfgloop.c.

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

Definition at line 125 of file cfgloop.c.

void flow_loop_free ( struct loop  ) 

Definition at line 195 of file cfgloop.c.

bool flow_loop_nested_p ( const struct loop ,
const struct loop  
)

Definition at line 101 of file cfgloop.c.

bool flow_loop_outside_edge_p ( const struct loop ,
edge   
)

Definition at line 1001 of file cfgloop.c.

References edge::dest, flow_bb_inside_loop_p(), gcc_assert, loop::header, and edge::src.

int flow_loop_scan ( struct loop ,
int   
)

void flow_loop_tree_node_add ( struct loop ,
struct loop  
)

Definition at line 452 of file cfgloop.c.

void flow_loop_tree_node_remove ( struct loop  ) 

Definition at line 469 of file cfgloop.c.

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

Definition at line 168 of file cfgloop.c.

int flow_loops_find ( struct loops ,
int  flags 
)

void flow_loops_free ( struct loops  ) 

Definition at line 202 of file cfgloop.c.

void force_single_succ_latches ( struct loops  ) 

Definition at line 1233 of file cfgloopmanip.c.

Referenced by loop_optimizer_init().

void free_simple_loop_desc ( struct loop loop  ) 

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

Referenced by loop_optimizer_finalize(), peel_loop_completely(), and peel_loop_simple().

rtx get_iv_value ( struct rtx_iv ,
rtx   
)

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

Referenced by iv_extend(), iv_subreg(), and may_unswitch_on().

basic_block* get_loop_body ( const struct loop  ) 

Definition at line 1018 of file cfgloop.c.

basic_block* get_loop_body_in_bfs_order ( const struct loop  ) 

Definition at line 1103 of file cfgloop.c.

basic_block* get_loop_body_in_dom_order ( const struct loop  ) 

Definition at line 1081 of file cfgloop.c.

edge* get_loop_exit_edges ( const struct loop ,
unsigned *   
)

unsigned get_loop_level ( const struct loop  ) 

Definition at line 466 of file cfgloopanal.c.

Referenced by get_loop_level().

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.

Referenced by gain_for_invariant(), and ivopts_global_cost_for_size().

void init_set_costs ( void   ) 

Definition at line 512 of file cfgloopanal.c.

Referenced by loop_optimizer_init().

void iv_analysis_done ( void   ) 

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

Referenced by estimate_probability(), unroll_and_peel_loops(), and unswitch_loops().

void iv_analysis_loop_init ( struct loop  ) 

bool iv_analyze ( rtx  ,
rtx  ,
struct rtx_iv  
)

rtx iv_get_reaching_def ( rtx  ,
rtx   
)

bool just_once_each_iteration_p ( struct loop ,
basic_block   
)

edge loop_latch_edge ( const struct loop  ) 

Definition at line 1508 of file cfgloop.c.

void loop_optimize ( rtx  ,
FILE ,
int   
)

Definition at line 447 of file loop.c.

void loop_optimizer_finalize ( struct loops ,
FILE  
)

struct loops* loop_optimizer_init ( FILE  )  [read]

edge loop_preheader_edge ( const struct loop  ) 

Definition at line 1515 of file cfgloop.c.

basic_block loop_split_edge_with ( edge  ,
rtx   
)

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

Definition at line 492 of file cfgloopmanip.c.

Referenced by loop_version(), tree_ssa_loop_version(), and unswitch_loop().

void mark_irreducible_loops ( struct loops  ) 

void mark_single_exit_loops ( struct loops  ) 

Definition at line 383 of file cfgloop.c.

void move_loop_invariants ( struct loops  ) 

Definition at line 900 of file loop-invariant.c.

Referenced by rest_of_handle_loop2(), and rtl_move_loop_invariants().

unsigned num_loop_branches ( const struct loop  ) 

Definition at line 1183 of file cfgloop.c.

int num_loop_insns ( struct loop  ) 

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

void remove_bb_from_loops ( basic_block   ) 

Definition at line 1040 of file cfgloop.c.

bool remove_path ( struct loops ,
edge   
)

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

Definition at line 443 of file cfgloop.h.

References loop::aux.

Referenced by free_simple_loop_desc(), and get_simple_loop_desc().

edge split_loop_bb ( basic_block  ,
void  
)

Definition at line 58 of file cfgloopmanip.c.

References add_bb_to_loop(), edge::dest, split_block(), and edge::src.

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

Definition at line 111 of file cfgloop.c.

unsigned tree_num_loop_insns ( struct loop  ) 

void unroll_and_peel_loops ( struct loops ,
int   
)

Definition at line 146 of file loop-unroll.c.

Referenced by rest_of_handle_loop2(), and rtl_unroll_and_peel_loops().

void unswitch_loops ( struct loops  ) 

Definition at line 143 of file loop-unswitch.c.

Referenced by rest_of_handle_loop2(), and rtl_unswitch().

void verify_loop_structure ( struct loops  ) 

Definition at line 1288 of file cfgloop.c.


Variable Documentation

Definition at line 502 of file cfgloopanal.c.

Referenced by determine_set_costs().

unsigned target_pres_cost

Definition at line 505 of file cfgloopanal.c.

Referenced by determine_set_costs().

unsigned target_res_regs

Definition at line 503 of file cfgloopanal.c.

Definition at line 504 of file cfgloopanal.c.

Referenced by determine_set_costs().


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