osprey-gcc/gcc/global.c File Reference

#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "machmode.h"
#include "hard-reg-set.h"
#include "rtl.h"
#include "tm_p.h"
#include "flags.h"
#include "regs.h"
#include "function.h"
#include "insn-config.h"
#include "recog.h"
#include "reload.h"
#include "output.h"
#include "toplev.h"

Include dependency graph for global.c:

Go to the source code of this file.

Data Types

type  allocno
type  bb_info

Defines

#define INT_BITS   HOST_BITS_PER_WIDE_INT
#define INT_TYPE   HOST_WIDE_INT
#define CONFLICTP(I, J)
#define EXECUTE_IF_SET_IN_ALLOCNO_SET(ALLOCNO_SET, ALLOCNO, CODE)
#define SET_REGBIT(TABLE, I, J)   SET_HARD_REG_BIT (allocno[I].TABLE, J)
#define SET_ALLOCNO_LIVE(I)
#define CLEAR_ALLOCNO_LIVE(I)
#define BB_INFO(BB)   ((struct bb_info *) (BB)->aux)
#define BB_INFO_BY_INDEX(N)   BB_INFO (BASIC_BLOCK(N))

Functions/Subroutines

static int allocno_compare (const void *, const void *)
static void global_conflicts (void)
static void mirror_conflicts (void)
static void expand_preferences (void)
static void prune_preferences (void)
static void find_reg (int, HARD_REG_SET, int, int, int)
static void record_one_conflict (int)
static void record_conflicts (int *, int)
static void mark_reg_store (rtx, rtx, void *)
static void mark_reg_clobber (rtx, rtx, void *)
static void mark_reg_conflicts (rtx)
static void mark_reg_death (rtx)
static void mark_reg_live_nc (int, enum machine_mode)
static void set_preference (rtx, rtx)
static void dump_conflicts (FILE *)
static void reg_becomes_live (rtx, rtx, void *)
static void reg_dies (int, enum machine_mode, struct insn_chain *)
static void allocate_bb_info (void)
static void free_bb_info (void)
static bool check_earlyclobber (rtx)
static void mark_reg_use_for_earlyclobber_1 (rtx *, void *)
static int mark_reg_use_for_earlyclobber (rtx *, void *)
static void calculate_local_reg_bb_info (void)
static void set_up_bb_rts_numbers (void)
static int rpost_cmp (const void *, const void *)
static void calculate_reg_pav (void)
static void modify_reg_pav (void)
static void make_accurate_live_analysis (void)
int global_alloc (FILE *file)
void retry_global_alloc (int regno, HARD_REG_SET forbidden_regs)
static void mark_reg_store (rtx reg, rtx setter, void *data ATTRIBUTE_UNUSED)
void mark_elimination (int from, int to)
static void reg_becomes_live (rtx reg, rtx setter ATTRIBUTE_UNUSED, void *regs_set)
void build_insn_chain (rtx first)
void dump_global_regs (FILE *file)
static void mark_reg_change (rtx reg, rtx setter, void *data)
static int mark_reg_use_for_earlyclobber (rtx *x, void *data ATTRIBUTE_UNUSED)

Variables

static int max_allocno
static int * reg_allocno
static struct allocnoallocno
static int * allocno_order
static int * reg_may_share
static INT_TYPE * conflicts
static int allocno_row_words
static HARD_REG_SET hard_regs_live
static HARD_REG_SET no_global_alloc_regs
static HARD_REG_SET regs_used_so_far
static int local_reg_n_refs [FIRST_PSEUDO_REGISTER]
static int local_reg_freq [FIRST_PSEUDO_REGISTER]
static int local_reg_live_length [FIRST_PSEUDO_REGISTER]
static INT_TYPE * allocnos_live
static rtxregs_set
static int n_regs_set
static HARD_REG_SET eliminable_regset
static regset live_relevant_regs
static varray_type earlyclobber_regclass
static bitmap temp_bitmap


Define Documentation

#define BB_INFO ( BB   )     ((struct bb_info *) (BB)->aux)

Definition at line 2027 of file global.c.

#define BB_INFO_BY_INDEX (  )     BB_INFO (BASIC_BLOCK(N))

Definition at line 2028 of file global.c.

Referenced by set_up_bb_rts_numbers().

#define CLEAR_ALLOCNO_LIVE (  ) 

Value:

(allocnos_live[(unsigned) (I) / INT_BITS]   \
     &= ~((INT_TYPE) 1 << ((unsigned) (I) % INT_BITS)))

Definition at line 255 of file global.c.

#define CONFLICTP ( I,
 ) 

Value:

(conflicts[(I) * allocno_row_words + (unsigned) (J) / INT_BITS] \
  & ((INT_TYPE) 1 << ((unsigned) (J) % INT_BITS)))

Definition at line 179 of file global.c.

#define EXECUTE_IF_SET_IN_ALLOCNO_SET ( ALLOCNO_SET,
ALLOCNO,
CODE   ) 

Value:

do {                  \
  int i_;               \
  int allocno_;               \
  INT_TYPE *p_ = (ALLOCNO_SET);           \
                  \
  for (i_ = allocno_row_words - 1, allocno_ = 0; i_ >= 0;   \
       i_--, allocno_ += INT_BITS)          \
    {                 \
      unsigned INT_TYPE word_ = (unsigned INT_TYPE) *p_++;    \
                  \
      for ((ALLOCNO) = allocno_; word_; word_ >>= 1, (ALLOCNO)++) \
  {               \
    if (word_ & 1)            \
      {CODE;}             \
  }               \
    }                 \
} while (0)

Definition at line 185 of file global.c.

#define INT_BITS   HOST_BITS_PER_WIDE_INT

Definition at line 161 of file global.c.

#define INT_TYPE   HOST_WIDE_INT

Definition at line 162 of file global.c.

#define SET_ALLOCNO_LIVE (  ) 

Value:

(allocnos_live[(unsigned) (I) / INT_BITS]   \
     |= ((INT_TYPE) 1 << ((unsigned) (I) % INT_BITS)))

Definition at line 251 of file global.c.

#define SET_REGBIT ( TABLE,
I,
 )     SET_HARD_REG_BIT (allocno[I].TABLE, J)

Definition at line 242 of file global.c.


Function Documentation

static void allocate_bb_info ( void   )  [static]

static int allocno_compare ( const void v1p,
const void v2p 
) [static]

Definition at line 643 of file global.c.

References double, floor_log2, allocno::freq, REG_FREQ_MAX, and size.

void build_insn_chain ( rtx  first  ) 

static void calculate_local_reg_bb_info ( void   )  [static]

static void calculate_reg_pav ( void   )  [static]

static bool check_earlyclobber ( rtx  insn  )  [static]

static void dump_conflicts ( FILE file  )  [static]

void dump_global_regs ( FILE file  ) 

Definition at line 1969 of file global.c.

References FIRST_PSEUDO_REGISTER, fprintf(), i, max_regno, reg_renumber, and regs_ever_live.

static void expand_preferences ( void   )  [static]

static void find_reg ( int  num,
HARD_REG_SET  losers,
int  alt_regs_p,
int  accept_call_clobbered,
int  retrying 
) [static]

static void free_bb_info ( void   )  [static]

int global_alloc ( FILE file  ) 

Definition at line 334 of file global.c.

References abort, allocno_compare(), allocno_order, allocno_row_words, allocnos_live, AND_COMPL_HARD_REG_SET, ARRAY_SIZE, build_insn_chain(), call_used_regs, allocno::calls_crossed, CAN_ELIMINATE, CLEAR_HARD_REG_SET, conflicts, current_function_calls_alloca, current_function_has_nonlocal_label, dump_conflicts(), ELIMINABLE_REGS, eliminable_regset, error(), EXIT_IGNORE_STACK, expand_preferences(), find_reg(), FIRST_PSEUDO_REGISTER, flag_omit_frame_pointer, FRAME_POINTER_REGNUM, FRAME_POINTER_REQUIRED, free(), allocno::freq, gcc_assert, get_insns(), global_conflicts(), HARD_FRAME_POINTER_REGNUM, allocno::hard_reg_conflicts, allocno::hard_reg_copy_preferences, allocno::hard_reg_preferences, HARD_REGNO_NREGS, hard_regno_nregs, i, INT_BITS, INT_TYPE, leaf_function_p(), LEAF_REGISTERS, allocno::live_length, local_reg_freq, local_reg_live_length, local_reg_n_refs, make_accurate_live_analysis(), max_allocno, max_regno, memset, mirror_conflicts(), n_basic_blocks, allocno::n_refs, N_REG_CLASSES, no_global_alloc_regs, NO_REGS, only_leaf_regs_used(), prune_preferences(), PSEUDO_REGNO_MODE, PSEUDO_REGNO_SIZE, qsort(), allocno::reg, reg_allocno, reg_alternate_class(), REG_FREQ, REG_LIVE_LENGTH, reg_may_share, REG_N_CALLS_CROSSED, REG_N_REFS, REG_N_THROWING_CALLS_CROSSED, reg_names, reg_renumber, REGNO, regs_asm_clobbered, regs_ever_live, regs_may_share, regs_used_so_far, reload(), SET_HARD_REG_BIT, allocno::size, size, size_t, STACK_POINTER_REGNUM, allocno::throwing_calls_crossed, x, xcalloc(), XEXP, and xmalloc().

static void global_conflicts ( void   )  [static]

static void make_accurate_live_analysis ( void   )  [static]

void mark_elimination ( int  from,
int  to 
)

static void mark_reg_change ( rtx  reg,
rtx  setter,
void data 
) [static]

static void mark_reg_clobber ( rtx  reg,
rtx  setter,
void data 
) [static]

Definition at line 1518 of file global.c.

References GET_CODE, and mark_reg_store().

static void mark_reg_conflicts ( rtx  reg  )  [static]

static void mark_reg_death ( rtx  reg  )  [static]

static void mark_reg_live_nc ( int  regno,
enum machine_mode  mode 
) [static]

Definition at line 1603 of file global.c.

References hard_regno_nregs, hard_regs_live, last, and SET_HARD_REG_BIT.

static void mark_reg_store ( rtx  reg,
rtx  setter,
void *data  ATTRIBUTE_UNUSED 
) [static]

static void mark_reg_store ( rtx  ,
rtx  ,
void  
) [static]

static int mark_reg_use_for_earlyclobber ( rtx x,
void *data  ATTRIBUTE_UNUSED 
) [static]

static int mark_reg_use_for_earlyclobber ( rtx ,
void  
) [static]

static void mark_reg_use_for_earlyclobber_1 ( rtx x,
void data 
) [static]

Definition at line 2229 of file global.c.

References for_each_rtx(), and mark_reg_use_for_earlyclobber().

Referenced by calculate_local_reg_bb_info().

static void mirror_conflicts ( void   )  [static]

Definition at line 1423 of file global.c.

References allocno_row_words, conflicts, i, INT_BITS, INT_TYPE, max_allocno, p, q0, q1, and q2.

static void modify_reg_pav ( void   )  [static]

static void prune_preferences ( void   )  [static]

static void record_conflicts ( int *  allocno_vec,
int  len 
) [static]

Definition at line 1414 of file global.c.

References hard_regs_live, and IOR_HARD_REG_SET.

static void record_one_conflict ( int  regno  )  [static]

static void reg_becomes_live ( rtx  reg,
rtx setter  ATTRIBUTE_UNUSED,
void regs_set 
) [static]

static void reg_becomes_live ( rtx  ,
rtx  ,
void  
) [static]

static void reg_dies ( int  regno,
enum machine_mode  mode,
struct insn_chain *  chain 
) [static]

void retry_global_alloc ( int  regno,
HARD_REG_SET  forbidden_regs 
)

static int rpost_cmp ( const void bb1,
const void bb2 
) [static]

Definition at line 2276 of file global.c.

References BB_INFO.

Referenced by calculate_reg_pav().

static void set_preference ( rtx  dest,
rtx  src 
) [static]

static void set_up_bb_rts_numbers ( void   )  [static]


Variable Documentation

struct allocno* allocno [static]

Definition at line 144 of file global.c.

int* allocno_order [static]

Definition at line 149 of file global.c.

int allocno_row_words [static]

Definition at line 175 of file global.c.

INT_TYPE* allocnos_live [static]

Definition at line 246 of file global.c.

INT_TYPE* conflicts [static]

Definition at line 170 of file global.c.

HARD_REG_SET eliminable_regset [static]

Definition at line 292 of file global.c.

HARD_REG_SET hard_regs_live [static]

Definition at line 216 of file global.c.

Definition at line 1747 of file global.c.

int local_reg_freq[FIRST_PSEUDO_REGISTER] [static]

Definition at line 232 of file global.c.

int local_reg_live_length[FIRST_PSEUDO_REGISTER] [static]

Definition at line 237 of file global.c.

int local_reg_n_refs[FIRST_PSEUDO_REGISTER] [static]

Definition at line 229 of file global.c.

int max_allocno [static]

Definition at line 81 of file global.c.

int n_regs_set [static]

Definition at line 288 of file global.c.

HARD_REG_SET no_global_alloc_regs [static]

Definition at line 220 of file global.c.

int* reg_allocno [static]

Definition at line 86 of file global.c.

int* reg_may_share [static]

Definition at line 155 of file global.c.

rtx* regs_set [static]

Definition at line 287 of file global.c.

HARD_REG_SET regs_used_so_far [static]

Definition at line 224 of file global.c.

bitmap temp_bitmap [static]

Definition at line 2284 of file global.c.

Referenced by calculate_reg_pav(), compute_earliest(), and compute_farthest().


Generated on Wed Apr 8 15:34:49 2009 for Open64 by  doxygen 1.5.6