Registers have various characteristics.
FIRST_PSEUDO_REGISTER-1; thus, the first pseudo register's number really is assigned the number
This information is expressed as a sequence of numbers, separated by commas and surrounded by braces. The nth number is 1 if register n is fixed, 0 otherwise.
The table initialized from this macro, and the table initialized by
the following one, may be overridden at run time either automatically,
by the actions of the macro
CONDITIONAL_REGISTER_USAGE, or by
the user with the command options
FIXED_REGISTERSbut has 1 for each register that is clobbered (in general) by function calls as well as for fixed registers. This macro therefore identifies the registers that are not available for general allocation of values that must live across function calls.
If a register has 0 in
CALL_USED_REGISTERS, the compiler
automatically saves it on function entry and restores it on function
exit, if the register is used within the function.
CALL_USED_REGISTERSexcept this macro doesn't require that the entire set of
FIXED_REGISTERSbe included. (
CALL_USED_REGISTERSmust be a superset of
FIXED_REGISTERS). This macro is optional. If not specified, it defaults to the value of
reg_class_contents, to take into account any dependence of these register sets on target flags. The first three of these are of type
char (interpreted as Boolean vectors).
const char *, and
HARD_REG_SET. Before the macro is called,
reg_nameshave been initialized from
global_regshas been cleared, and any
command options have been applied.
You need not define this macro if it has no work to do.
If the usage of an entire class of registers depends on the target
flags, you may indicate this to GCC by using this macro to modify
call_used_regs to 1 for each of the
registers in the classes which should not be used by GCC. Also define
REG_CLASS_FROM_LETTER to return
NO_REGS if it
is called with a letter for a class that shouldn't be used.
(However, if this class is not included in
GENERAL_REGS and all
of the insn patterns whose constraints permit this class are
controlled by target switches, then GCC will automatically avoid using
these registers when the target switches are opposed to them.)
setjmpand related functions fail to save the registers, or that
longjmpfails to restore them. To compensate, the compiler avoids putting variables in registers in functions that use