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 bool hard_reg_set_empty_p ( )
inlinestatic
static bool hard_reg_set_equal_p ( )
inlinestatic

Referenced by setup_uniform_class_p().

static bool hard_reg_set_intersect_p ( )
inlinestatic
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.  
         This is required for correct search of the next bit.  

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

static bool hard_reg_set_iter_set ( )
inlinestatic
         Return false when we're advanced past the end of the set.  
             Find the correct bit and return it.  
         Round to the beginning of the next word.  
         Find the next non-zero word.  
static bool hard_reg_set_subset_p ( )
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 debug_candidate(), fprint_ul(), merge_overlapping_regs(), and split_all_insns().

const char* reg_class_names[]
   Vector indexed by reg class giving its name.  
   Array containing all of the register class names.  

Referenced by model_promote_predecessors(), must_restore_pattern_p(), regrename_chain_from_id(), scan_one_insn(), and setup_ref_regs().

struct target_hard_regs* this_target_hard_regs