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

#include "config.h"
#include "system.h"
#include "hard-reg-set.h"
#include "rtl.h"
#include "expr.h"
#include "tm_p.h"
#include "flags.h"
#include "basic-block.h"
#include "regs.h"
#include "function.h"
#include "insn-config.h"
#include "recog.h"
#include "reload.h"
#include "real.h"
#include "toplev.h"
#include "output.h"
#include "ggc.h"
#include "gt-regclass.h"

Include dependency graph for regclass.c:

Go to the source code of this file.

Data Types

type  costs
type  reg_pref

Defines

#define REGISTER_MOVE_COST(m, x, y)   2
#define N_REG_INTS   ((FIRST_PSEUDO_REGISTER + (32 - 1)) / 32)

Functions/Subroutines

static void init_reg_sets_1 PARAMS ((void))
static GTY (())
void init_reg_sets ()
static void init_reg_sets_1 ()
static void init_reg_modes ()
void init_regs ()
void init_fake_stack_mems ()
enum machine_mode choose_hard_reg_mode (regno, unsigned int nregs)
void fix_register (char *name, int fixed, int call_used) const
void globalize_reg (int i)
static rtx scan_one_insn PARAMS ((rtx, int))
static void record_operand_costs PARAMS ((rtx, struct costs *, struct reg_pref *))
static void dump_regclass PARAMS ((FILE *))
static void record_reg_classes PARAMS ((int, int, rtx *, enum machine_mode *, const char **, rtx, struct costs *, struct reg_pref *))
static int copy_cost PARAMS ((rtx, enum machine_mode, enum reg_class, int))
static void record_address_regs PARAMS ((rtx, enum reg_class, int))
static void reg_scan_mark_refs PARAMS ((rtx, rtx, int, unsigned int))
enum reg_class reg_preferred_class (int regno)
enum reg_class reg_alternate_class (int regno)
void regclass_init ()
static void dump_regclass (FILE *dump)
static void record_operand_costs (rtx insn, struct costs *op_costs, struct reg_pref *reg_pref)
static rtx scan_one_insn (rtx insn, int pass)
static void init_reg_autoinc ()
void regclass (rtx f, int nregs, FILE *dump)
static void record_reg_classes (int n_alts, int n_ops, rtx *ops, enum machine_mode *modes, const char **constraints, rtx insn, struct costs *op_costs, struct reg_pref *reg_pref)
static int copy_cost (rtx x, mode, enum reg_class class, to_p)
static void record_address_regs (rtx x, enum reg_class class, int scale)
void allocate_reg_info (size_t num_regs, int new_p, int renumber_p)
void free_reg_info ()
void reg_scan (rtx f, unsigned int nregs, repeat)
void reg_scan_update (rtx first, rtx last, unsigned int old_max_regno)
static void reg_scan_mark_refs (rtx x, rtx insn, int note_flag, unsigned int min_regno)
int reg_class_subset_p (enum reg_class c1, enum reg_class c2)
int reg_classes_intersect_p (enum reg_class c1, enum reg_class c2)
void regset_release_memory ()

Variables

char fixed_regs [FIRST_PSEUDO_REGISTER]
HARD_REG_SET fixed_reg_set
static const char initial_fixed_regs [] = FIXED_REGISTERS
char call_used_regs [FIRST_PSEUDO_REGISTER]
HARD_REG_SET call_used_reg_set
HARD_REG_SET losing_caller_save_reg_set
static const char initial_call_used_regs [] = CALL_USED_REGISTERS
char call_fixed_regs [FIRST_PSEUDO_REGISTER]
HARD_REG_SET call_fixed_reg_set
int n_non_fixed_regs
char global_regs [FIRST_PSEUDO_REGISTER]
HARD_REG_SET regs_invalidated_by_call
HARD_REG_SET reg_class_contents [N_REG_CLASSES]
static const unsigned int_reg_class_contents [N_REG_CLASSES][N_REG_INTS] = REG_CLASS_CONTENTS
unsigned int reg_class_size [N_REG_CLASSES]
enum reg_class reg_class_superclasses [N_REG_CLASSES][N_REG_CLASSES]
enum reg_class reg_class_subclasses [N_REG_CLASSES][N_REG_CLASSES]
enum reg_class reg_class_subunion [N_REG_CLASSES][N_REG_CLASSES]
enum reg_class reg_class_superunion [N_REG_CLASSES][N_REG_CLASSES]
enum machine_mode reg_raw_mode [FIRST_PSEUDO_REGISTER]
static char contains_reg_of_mode [N_REG_CLASSES][MAX_MACHINE_MODE]
static int move_cost [MAX_MACHINE_MODE][N_REG_CLASSES][N_REG_CLASSES]
static int may_move_in_cost [MAX_MACHINE_MODE][N_REG_CLASSES][N_REG_CLASSES]
static int may_move_out_cost [MAX_MACHINE_MODE][N_REG_CLASSES][N_REG_CLASSES]
static struct reg_info_data * reg_info_head
static int no_global_reg_vars = 0
static struct costscosts
static struct costs init_cost
static struct reg_prefreg_pref
static struct reg_prefreg_pref_buffer
static int frequency
static short * renumber
static size_t regno_allocated
static unsigned int reg_n_max
int max_parallel
static int max_set_parallel


Define Documentation

#define N_REG_INTS   ((FIRST_PSEUDO_REGISTER + (32 - 1)) / 32)

Definition at line 164 of file regclass.c.

#define REGISTER_MOVE_COST ( m,
x,
 )     2

Definition at line 54 of file regclass.c.


Function Documentation

void allocate_reg_info ( size_t  num_regs,
int  new_p,
int  renumber_p 
)

enum machine_mode choose_hard_reg_mode ( regno  ,
unsigned int  nregs 
)

static int copy_cost ( rtx  x,
mode  ,
enum reg_class  class,
to_p   
) [static]

static void dump_regclass ( FILE dump  )  [static]

void fix_register ( char *  name,
int  fixed,
int  call_used 
) const

void free_reg_info ( void   ) 

Definition at line 2283 of file regclass.c.

Referenced by finalize().

void globalize_reg ( int  i  ) 

Definition at line 786 of file regclass.c.

Referenced by make_decl_rtl().

static GTY ( ()   )  [static]

Definition at line 247 of file regclass.c.

References next.

void init_fake_stack_mems ( void   ) 

Definition at line 596 of file regclass.c.

Referenced by backend_init().

static void init_reg_autoinc ( void   )  [static]

static void init_reg_modes (  )  [static]

Definition at line 559 of file regclass.c.

References choose_hard_reg_mode(), FIRST_PSEUDO_REGISTER, i, and word_mode.

Referenced by init_regs().

void init_reg_sets ( void   ) 

Definition at line 273 of file regclass.c.

Referenced by general_init(), and parse_options_and_default_flags().

static void init_reg_sets_1 ( void   )  [static]

void init_regs ( void   ) 

Definition at line 581 of file regclass.c.

Referenced by backend_init().

static void reg_scan_mark_refs PARAMS ( (rtx, rtx, int, unsigned int)   )  [static]

static void record_address_regs PARAMS ( (rtx, enum reg_class, int)   )  [static]

static int copy_cost PARAMS ( (rtx, enum machine_mode, enum reg_class, int)   )  [static]

static void record_reg_classes PARAMS ( (int, int, rtx *, enum machine_mode *, const char **, rtx, struct costs *, struct reg_pref *)   )  [static]

static void dump_regclass PARAMS ( (FILE *)   )  [static]

static void record_operand_costs PARAMS ( (rtx, struct costs *, struct reg_pref *)   )  [static]

static rtx scan_one_insn PARAMS ( (rtx, int)   )  [static]

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

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

static void record_address_regs ( rtx  x,
enum reg_class  class,
int  scale 
) [static]

static void record_operand_costs ( rtx  insn,
struct costs op_costs,
struct reg_pref reg_pref 
) [static]

static void record_reg_classes ( int  n_alts,
int  n_ops,
rtx ops,
enum machine_mode modes,
const char **  constraints,
rtx  insn,
struct costs op_costs,
struct reg_pref reg_pref 
) [static]

enum reg_class reg_alternate_class ( int  regno  ) 

int reg_class_subset_p ( enum reg_class  c1,
enum reg_class  c2 
)

int reg_classes_intersect_p ( enum reg_class  c1,
enum reg_class  c2 
)

enum reg_class reg_preferred_class ( int  regno  ) 

void reg_scan ( rtx  f,
unsigned int  nregs,
repeat   
)

static void reg_scan_mark_refs ( rtx  x,
rtx  insn,
int  note_flag,
unsigned int  min_regno 
) [static]

void reg_scan_update ( rtx  first,
rtx  last,
unsigned int  old_max_regno 
)

Definition at line 2363 of file regclass.c.

Referenced by duplicate_loop_exit_test(), reg_alloc(), and scan_loop().

void regclass ( rtx  f,
int  nregs,
FILE dump 
)

void regclass_init ( void   ) 

Definition at line 906 of file regclass.c.

Referenced by rest_of_compilation(), and rest_of_handle_life().

void regset_release_memory (  ) 

Definition at line 2619 of file regclass.c.

References bitmap_release_memory().

Referenced by rest_of_compilation().

static rtx scan_one_insn ( rtx  insn,
int  pass 
) [static]


Variable Documentation

HARD_REG_SET call_fixed_reg_set

Definition at line 125 of file regclass.c.

char call_fixed_regs[FIRST_PSEUDO_REGISTER]

Definition at line 121 of file regclass.c.

HARD_REG_SET call_used_reg_set

Definition at line 98 of file regclass.c.

char call_used_regs[FIRST_PSEUDO_REGISTER]

Definition at line 94 of file regclass.c.

char contains_reg_of_mode[N_REG_CLASSES][MAX_MACHINE_MODE] [static]

Definition at line 208 of file regclass.c.

Referenced by dump_regclass(), init_reg_sets_1(), and regclass().

struct costs* costs [static]

Definition at line 847 of file regclass.c.

HARD_REG_SET fixed_reg_set

Definition at line 82 of file regclass.c.

char fixed_regs[FIRST_PSEUDO_REGISTER]

Definition at line 78 of file regclass.c.

int frequency [static]

char global_regs[FIRST_PSEUDO_REGISTER]

Definition at line 136 of file regclass.c.

Definition at line 851 of file regclass.c.

Referenced by record_operand_costs(), and regclass_init().

const char initial_call_used_regs[] = CALL_USED_REGISTERS [static]

Definition at line 105 of file regclass.c.

Referenced by init_reg_sets().

const char initial_fixed_regs[] = FIXED_REGISTERS [static]

Definition at line 86 of file regclass.c.

Referenced by init_reg_sets().

const unsigned int_reg_class_contents[N_REG_CLASSES][N_REG_INTS] = REG_CLASS_CONTENTS [static]

Definition at line 168 of file regclass.c.

Referenced by init_reg_sets().

Definition at line 101 of file regclass.c.

Definition at line 2321 of file regclass.c.

Referenced by global_conflicts().

int max_set_parallel [static]

Definition at line 2326 of file regclass.c.

int may_move_in_cost[MAX_MACHINE_MODE][N_REG_CLASSES][N_REG_CLASSES] [static]

Definition at line 218 of file regclass.c.

Referenced by init_reg_sets_1(), record_address_regs(), and record_reg_classes().

int may_move_out_cost[MAX_MACHINE_MODE][N_REG_CLASSES][N_REG_CLASSES] [static]

Definition at line 223 of file regclass.c.

Referenced by init_reg_sets_1(), and record_reg_classes().

int move_cost[MAX_MACHINE_MODE][N_REG_CLASSES][N_REG_CLASSES] [static]

Definition at line 213 of file regclass.c.

Referenced by copy_cost(), and init_reg_sets_1().

Definition at line 129 of file regclass.c.

int no_global_reg_vars = 0 [static]

Definition at line 266 of file regclass.c.

HARD_REG_SET reg_class_contents[N_REG_CLASSES]

Definition at line 157 of file regclass.c.

unsigned int reg_class_size[N_REG_CLASSES]

Definition at line 172 of file regclass.c.

enum reg_class reg_class_subclasses[N_REG_CLASSES][N_REG_CLASSES]

Definition at line 180 of file regclass.c.

enum reg_class reg_class_subunion[N_REG_CLASSES][N_REG_CLASSES]

Definition at line 185 of file regclass.c.

enum reg_class reg_class_superclasses[N_REG_CLASSES][N_REG_CLASSES]

Definition at line 176 of file regclass.c.

enum reg_class reg_class_superunion[N_REG_CLASSES][N_REG_CLASSES]

Definition at line 190 of file regclass.c.

struct reg_info_data* reg_info_head [static]

Definition at line 261 of file regclass.c.

unsigned int reg_n_max [static]

Definition at line 2166 of file regclass.c.

Definition at line 856 of file regclass.c.

Definition at line 860 of file regclass.c.

enum machine_mode reg_raw_mode[FIRST_PSEUDO_REGISTER]

Definition at line 2165 of file regclass.c.

Definition at line 145 of file regclass.c.

short* renumber [static]

Definition at line 2164 of file regclass.c.


Generated on Wed Apr 8 15:42:47 2009 for Open64 by  doxygen 1.5.6