GCC Middle and Back End API Reference
hard-reg-set.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  hard_reg_set_container
struct  hard_reg_set_iterator
struct  target_hard_regs

Typedefs

typedef unsigned
HOST_WIDEST_FAST_INT 
HARD_REG_ELT_TYPE
typedef HARD_REG_ELT_TYPE HARD_REG_SET [HARD_REG_SET_LONGS]

Functions

static bool hard_reg_set_subset_p ()
static bool hard_reg_set_equal_p ()
static bool hard_reg_set_intersect_p ()
static bool hard_reg_set_empty_p ()
static void hard_reg_set_iter_init (hard_reg_set_iterator *iter, HARD_REG_SET set, unsigned min, unsigned *regno)
static bool hard_reg_set_iter_set ()
static void hard_reg_set_iter_next ()

Variables

char global_regs [FIRST_PSEUDO_REGISTER]
struct target_hard_regs default_target_hard_regs
struct target_hard_regsthis_target_hard_regs
const char * reg_class_names []

Typedef Documentation

Define the type of a set of hard registers.   
HARD_REG_ELT_TYPE is a typedef of the unsigned integral type which
   will be used for hard reg sets, either alone or in an array.

   If HARD_REG_SET is a macro, its definition is HARD_REG_ELT_TYPE,
   and it has enough bits to represent all the target machine's hard
   registers.  Otherwise, it is a typedef for a suitably sized array
   of HARD_REG_ELT_TYPEs.  HARD_REG_SET_LONGS is defined as how many.

   Note that lots of code assumes that the first part of a regset is
   the same format as a HARD_REG_SET.  To help make sure this is true,
   we only try the widest fast integer mode (HOST_WIDEST_FAST_INT)
   instead of all the smaller types.  This approach loses only if
   there are very few registers and then only in the few cases where
   we have an array of HARD_REG_SETs, so it needn't be as complex as
   it used to be.   
typedef HARD_REG_ELT_TYPE HARD_REG_SET[HARD_REG_SET_LONGS]

Function Documentation

static void hard_reg_set_iter_init ( hard_reg_set_iterator iter,
HARD_REG_SET  set,
unsigned  min,
unsigned *  regno 
)
inlinestatic
The implementation of the iterator functions is fully analogous to
   the bitmap iterators.   

References hard_reg_set_iterator::bits, hard_reg_set_iterator::length, hard_reg_set_iterator::pelt, and hard_reg_set_iterator::word_no.

static void hard_reg_set_iter_next ( )
inlinestatic

Variable Documentation

struct target_hard_regs default_target_hard_regs
char global_regs[FIRST_PSEUDO_REGISTER]
Define some standard sets of registers.   
Indexed by hard register number, contains 1 for registers
   that are being used for global register decls.
   These must be exempt from ordinary flow analysis
   and are also considered fixed.   
Indexed by hard register number, contains 1 for registers
   that are being used for global register decls.
   These must be exempt from ordinary flow analysis
   and are also considered fixed.   

Referenced by can_combine_p(), can_move_insns_across(), check_live_1(), check_new_reg_p(), copy_value(), deletable_insn_p(), deps_analyze_insn(), df_get_call_refs(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), df_lr_local_compute(), distribute_notes(), globalize_reg(), hash_rtx_cb(), init_reg_sets_1(), init_regs_for_mode(), init_resource_info(), mark_referenced_resources(), mark_target_live_regs(), mark_unavailable_hard_regs(), only_leaf_regs_used(), peep2_find_free_register(), reload_combine_recognize_pattern(), rename_chains(), and update_live_1().

struct target_hard_regs* this_target_hard_regs