Registers have various characteristics.
FIRST_PSEUDO_REGISTER-1; thus, the first pseudo register's number really is assigned the number
CONDITIONAL_REGISTER_USAGE, or by the user with the command options `-ffixed-reg', `-fcall-used-reg' and `-fcall-saved-reg'.
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_regs(both of type
char ) after they have been initialized from the two preceding macros. This is necessary in case the fixed or call-clobbered registers depend on target flags. 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_regsto 1 for each of the registers in the classes which should not be used by GCC. Also define the macro
NO_REGSif it is called with a letter for a class that shouldn't be used. (However, if this class is not included in
GENERAL_REGSand 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