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

#include "config.h"
#include "system.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 "ssa.h"
#include "timevar.h"
#include "obstack.h"
#include "splay-tree.h"

Include dependency graph for flow.c:

Go to the source code of this file.

Data Types

type  reg_cond_life_info
type  propagate_block_info
type  find_regno_partial_param

Defines

#define EXIT_IGNORE_STACK   0
#define HAVE_epilogue   0
#define HAVE_prologue   0
#define HAVE_sibcall_epilogue   0
#define LOCAL_REGNO(REGNO)   0
#define EPILOGUE_USES(REGNO)   0
#define EH_USES(REGNO)   0
#define MAX_MEM_SET_LIST_LEN   100

Functions/Subroutines

int lang_missing_noreturn_ok_p PARAMS ((tree))
static int verify_wide_reg_1 PARAMS ((rtx *, void *))
static void verify_wide_reg PARAMS ((int, basic_block))
static void
verify_local_live_at_start 
PARAMS ((regset, basic_block))
static void
notice_stack_pointer_modification_1 
PARAMS ((rtx, rtx, void *))
static void
notice_stack_pointer_modification 
PARAMS ((rtx))
static void mark_reg PARAMS ((rtx, void *))
static void mark_regs_live_at_end PARAMS ((regset))
static int set_phi_alternative_reg PARAMS ((rtx, int, int, void *))
static void
calculate_global_regs_live 
PARAMS ((sbitmap, sbitmap, int))
static rtx
propagate_block_delete_libcall 
PARAMS ((rtx, rtx))
static int insn_dead_p PARAMS ((struct propagate_block_info *, rtx, int, rtx))
static int libcall_dead_p PARAMS ((struct propagate_block_info *, rtx, rtx))
static void mark_set_1 PARAMS ((struct propagate_block_info *, enum rtx_code, rtx, rtx, rtx, int))
static void mark_used_reg PARAMS ((struct propagate_block_info *, rtx, rtx, rtx))
void dump_flow_info PARAMS ((FILE *))
void debug_flow_info PARAMS ((void))
static void add_to_mem_set_list PARAMS ((struct propagate_block_info *, rtx))
static void clear_log_links PARAMS ((sbitmap))
void check_function_return_warnings ()
rtx first_insn_after_basic_block_note (basic_block block)
void life_analysis (rtx f, FILE *file, int flags)
static int verify_wide_reg_1 (rtx *px, void *pregno)
static void verify_wide_reg (int regno, basic_block bb)
static void verify_local_live_at_start (regset new_live_at_start, basic_block bb)
int update_life_info (sbitmap blocks, enum update_life_extent extent, int prop_flags)
int update_life_info_in_dirty_blocks (enum update_life_extent extent, int prop_flags)
void free_basic_block_vars (int keep_head_end_p)
int delete_noop_moves (f)
void delete_dead_jumptables ()
static void notice_stack_pointer_modification_1 (rtx x, pat, data)
static void notice_stack_pointer_modification (rtx f)
static void mark_reg (rtx reg, void *xset)
static void mark_regs_live_at_end (regset set)
static int set_phi_alternative_reg (insn, dest_regno, int src_regno, void *data)
static void calculate_global_regs_live (sbitmap blocks_in, sbitmap blocks_out, int flags)
static int find_regno_partial (rtx *ptr, void *data)
int initialize_uninitialized_subregs ()
void allocate_bb_life_data ()
void allocate_reg_life_data ()
static void propagate_block_delete_insn (rtx insn)
static rtx propagate_block_delete_libcall (rtx insn, rtx note)
rtx propagate_one_insn (struct propagate_block_info *pbi, rtx insn)
struct propagate_block_infoinit_propagate_block_info (basic_block bb, regset live, regset local_set, regset cond_local_set, int flags)
void free_propagate_block_info (struct propagate_block_info *pbi)
int propagate_block (basic_block bb, regset live, regset local_set, regset cond_local_set, int flags)
static int insn_dead_p (struct propagate_block_info *pbi, rtx x, int call_ok, notes)
static int libcall_dead_p (struct propagate_block_info *pbi, rtx note, rtx insn)
int regno_uninitialized (unsigned int regno)
int regno_clobbered_at_setjmp (int regno)
static void add_to_mem_set_list (struct propagate_block_info *pbi, rtx mem)
static int invalidate_mems_from_autoinc (rtx *px, void *data)
static void invalidate_mems_from_set (struct propagate_block_info *pbi, rtx exp)
static void mark_set_regs (struct propagate_block_info *pbi, rtx x, rtx insn)
static void mark_set_1 (struct propagate_block_info *pbi, enum rtx_code code, rtx reg, rtx cond, rtx insn, int flags)
static void mark_used_reg (struct propagate_block_info *pbi, rtx reg, cond, rtx insn)
static void mark_used_regs (struct propagate_block_info *pbi, rtx x, rtx cond, rtx insn)
rtx find_use_as_address (rtx x, rtx reg, HOST_WIDE_INT plusconst)
void dump_regset (regset r, FILE *outf)
void debug_regset (regset r)
void recompute_reg_usage (f, loop_step)
int count_or_remove_death_notes (sbitmap blocks, int kill)
static void clear_log_links (sbitmap blocks)
void reg_set_to_hard_reg_set (HARD_REG_SET *to, bitmap from)

Variables

int flow2_completed
int max_regno
varray_type reg_n_info
int regset_bytes
int regset_size
regset regs_live_at_setjmp
rtx regs_may_share
static HARD_REG_SET elim_reg_set
static int ndead


Define Documentation

#define EH_USES ( REGNO   )     0

Definition at line 178 of file flow.c.

#define EPILOGUE_USES ( REGNO   )     0

Definition at line 175 of file flow.c.

#define EXIT_IGNORE_STACK   0

Definition at line 158 of file flow.c.

#define HAVE_epilogue   0

#define HAVE_prologue   0

#define HAVE_sibcall_epilogue   0

Definition at line 168 of file flow.c.

Referenced by expand_call(), and propagate_one_insn().

#define LOCAL_REGNO ( REGNO   )     0

Definition at line 172 of file flow.c.

#define MAX_MEM_SET_LIST_LEN   100

Definition at line 294 of file flow.c.

Referenced by add_to_mem_set_list().


Function Documentation

static void add_to_mem_set_list ( struct propagate_block_info pbi,
rtx  mem 
) [static]

static void allocate_bb_life_data ( void   ) 

Definition at line 1508 of file flow.c.

Referenced by life_analysis().

void allocate_reg_life_data ( void   ) 

static void calculate_global_regs_live ( sbitmap  blocks_in,
sbitmap  blocks_out,
int  flags 
) [static]

void check_function_return_warnings (  ) 

static void clear_log_links ( sbitmap  blocks  )  [static]

int count_or_remove_death_notes ( sbitmap  blocks,
int  kill 
)

void debug_regset ( regset  r  ) 

Definition at line 4252 of file flow.c.

void delete_dead_jumptables ( void   ) 

int delete_noop_moves ( f   ) 

void dump_regset ( regset  r,
FILE outf 
)

static int find_regno_partial ( rtx ptr,
void data 
) [static]

rtx find_use_as_address ( rtx  x,
rtx  reg,
HOST_WIDE_INT  plusconst 
)

Definition at line 4165 of file flow.c.

Referenced by find_use_as_address(), and try_auto_increment().

rtx first_insn_after_basic_block_note ( basic_block  block  ) 

void free_basic_block_vars ( int  keep_head_end_p  ) 

void free_propagate_block_info ( struct propagate_block_info pbi  ) 

struct propagate_block_info* init_propagate_block_info ( basic_block  bb,
regset  live,
regset  local_set,
regset  cond_local_set,
int  flags 
) [read]

int initialize_uninitialized_subregs ( void   ) 

Definition at line 1453 of file flow.c.

Referenced by rest_of_compilation(), and rest_of_handle_life().

static int insn_dead_p ( struct propagate_block_info pbi,
rtx  x,
int  call_ok,
notes   
) [static]

static int invalidate_mems_from_autoinc ( rtx px,
void data 
) [static]

Definition at line 2470 of file flow.c.

References GET_CODE, GET_RTX_CLASS, invalidate_mems_from_set(), x, and XEXP.

Referenced by mark_set_1(), and mark_used_regs().

static void invalidate_mems_from_set ( struct propagate_block_info pbi,
rtx  exp 
) [static]

static int libcall_dead_p ( struct propagate_block_info pbi,
rtx  note,
rtx  insn 
) [static]

Definition at line 2332 of file flow.c.

References call(), GET_CODE, i, insn_dead_p(), NEXT_INSN, PATTERN, r, REG, REG_NOTES, SET, SET_SRC, single_set, x, XEXP, XVECEXP, and XVECLEN.

Referenced by propagate_one_insn().

void life_analysis ( rtx  f,
FILE file,
int  flags 
)

static void mark_reg ( rtx  reg,
void xset 
) [static]

Definition at line 956 of file flow.c.

References abort, FIRST_PSEUDO_REGISTER, GET_MODE, HARD_REGNO_NREGS, n, REGNO, and SET_REGNO_REG_SET.

static void mark_regs_live_at_end ( regset  set  )  [static]

static void mark_set_1 ( struct propagate_block_info pbi,
enum rtx_code  code,
rtx  reg,
rtx  cond,
rtx  insn,
int  flags 
) [static]

static void mark_set_regs ( struct propagate_block_info pbi,
rtx  x,
rtx  insn 
) [static]

static void mark_used_reg ( struct propagate_block_info pbi,
rtx  reg,
cond  ,
rtx  insn 
) [static]

static void mark_used_regs ( struct propagate_block_info pbi,
rtx  x,
rtx  cond,
rtx  insn 
) [static]

static void notice_stack_pointer_modification ( rtx  f  )  [static]

static void notice_stack_pointer_modification_1 ( rtx  x,
pat  ,
data   
) [static]

static void clear_log_links PARAMS ( (sbitmap  )  [static]

static void add_to_mem_set_list PARAMS ( (struct propagate_block_info *, rtx  )  [static]

void debug_flow_info PARAMS ( (void  )  [read]

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

void dump_flow_info PARAMS ( (FILE *)   ) 

static void mark_used_reg PARAMS ( (struct propagate_block_info *, rtx, rtx, rtx  )  [static]

static void mark_set_1 PARAMS ( (struct propagate_block_info *, enum rtx_code, rtx, rtx, rtx, int)   )  [static]

static int libcall_dead_p PARAMS ( (struct propagate_block_info *, rtx, rtx  )  [static]

static int insn_dead_p PARAMS ( (struct propagate_block_info *, rtx, int, rtx  )  [static]

static rtx propagate_block_delete_libcall PARAMS ( (rtx, rtx  )  [static]

static void calculate_global_regs_live PARAMS ( (sbitmap, sbitmap, int)   )  [static]

static int set_phi_alternative_reg PARAMS ( (rtx, int, int, void *)   )  [static]

static void mark_regs_live_at_end PARAMS ( (regset  )  [static]

static void mark_reg PARAMS ( (rtx, void *)   )  [static]

static void notice_stack_pointer_modification PARAMS ( (rtx  )  [static]

static void notice_stack_pointer_modification_1 PARAMS ( (rtx, rtx, void *)   )  [static]

static void verify_local_live_at_start PARAMS ( (regset, basic_block  )  [static]

static void verify_wide_reg PARAMS ( (int, basic_block  )  [static]

static int verify_wide_reg_1 PARAMS ( (rtx *, void *)   )  [static]

int lang_missing_noreturn_ok_p PARAMS ( (tree  ) 

int propagate_block ( basic_block  bb,
regset  live,
regset  local_set,
regset  cond_local_set,
int  flags 
)

static void propagate_block_delete_insn ( rtx  insn  )  [static]

static rtx propagate_block_delete_libcall ( rtx  insn,
rtx  note 
) [static]

Definition at line 1598 of file flow.c.

References before, delete_insn_chain_and_edges(), first, ndead, PREV_INSN, and XEXP.

Referenced by propagate_one_insn().

rtx propagate_one_insn ( struct propagate_block_info pbi,
rtx  insn 
)

void recompute_reg_usage ( f  ,
loop_step   
)

Definition at line 4279 of file flow.c.

References allocate_reg_life_data(), NULL, update_life_info(), and UPDATE_LIFE_LOCAL.

Referenced by reg_alloc(), and rest_of_compilation().

void reg_set_to_hard_reg_set ( HARD_REG_SET *  to,
bitmap  from 
)

Definition at line 4390 of file flow.c.

int regno_clobbered_at_setjmp ( int  regno  ) 

Definition at line 2407 of file flow.c.

Referenced by setjmp_args_warning(), setjmp_vars_warning(), and uninitialized_vars_warning().

int regno_uninitialized ( unsigned int  regno  ) 

static int set_phi_alternative_reg ( insn  ,
dest_regno  ,
int  src_regno,
void data 
) [static]

Definition at line 1074 of file flow.c.

References SET_REGNO_REG_SET.

Referenced by calculate_global_regs_live().

int update_life_info ( sbitmap  blocks,
enum update_life_extent  extent,
int  prop_flags 
)

int update_life_info_in_dirty_blocks ( enum update_life_extent  extent,
int  prop_flags 
)

static void verify_local_live_at_start ( regset  new_live_at_start,
basic_block  bb 
) [static]

static void verify_wide_reg ( int  regno,
basic_block  bb 
) [static]

static int verify_wide_reg_1 ( rtx px,
void pregno 
) [static]

Definition at line 513 of file flow.c.

References BITS_PER_WORD, GET_CODE, GET_MODE, GET_MODE_BITSIZE, REG, REGNO, and x.

Referenced by verify_wide_reg().


Variable Documentation

HARD_REG_SET elim_reg_set [static]

Definition at line 222 of file flow.c.

Referenced by df_hard_reg_init(), df_ref_record(), life_analysis(), and mark_used_reg().

int max_regno

int ndead [static]

Definition at line 196 of file flow.c.

Referenced by allocate_reg_info(), dump_flow_info(), and free_reg_info().

Definition at line 207 of file flow.c.

Definition at line 213 of file flow.c.

Referenced by global_alloc(), loop_optimize(), and move_movables().

Definition at line 201 of file flow.c.

Definition at line 202 of file flow.c.


Generated on Wed Apr 8 15:32:26 2009 for Open64 by  doxygen 1.5.6