gccint: Allocation Order

1 
1 18.7.2 Order of Allocation of Registers
1 ---------------------------------------
1 
1 Registers are allocated in order.
1 
1  -- Macro: REG_ALLOC_ORDER
1      If defined, an initializer for a vector of integers, containing the
1      numbers of hard registers in the order in which GCC should prefer
1      to use them (from most preferred to least).
1 
1      If this macro is not defined, registers are used lowest numbered
1      first (all else being equal).
1 
1      One use of this macro is on machines where the highest numbered
1      registers must always be saved and the save-multiple-registers
1      instruction supports only sequences of consecutive registers.  On
1      such machines, define 'REG_ALLOC_ORDER' to be an initializer that
1      lists the highest numbered allocable register first.
1 
1  -- Macro: ADJUST_REG_ALLOC_ORDER
1      A C statement (sans semicolon) to choose the order in which to
1      allocate hard registers for pseudo-registers local to a basic
1      block.
1 
1      Store the desired register order in the array 'reg_alloc_order'.
1      Element 0 should be the register to allocate first; element 1, the
1      next register; and so on.
1 
1      The macro body should not assume anything about the contents of
1      'reg_alloc_order' before execution of the macro.
1 
1      On most machines, it is not necessary to define this macro.
1 
1  -- Macro: HONOR_REG_ALLOC_ORDER
1      Normally, IRA tries to estimate the costs for saving a register in
1      the prologue and restoring it in the epilogue.  This discourages it
1      from using call-saved registers.  If a machine wants to ensure that
1      IRA allocates registers in the order given by REG_ALLOC_ORDER even
1      if some call-saved registers appear earlier than call-used ones,
1      then define this macro as a C expression to nonzero.  Default is 0.
1 
1  -- Macro: IRA_HARD_REGNO_ADD_COST_MULTIPLIER (REGNO)
1      In some case register allocation order is not enough for the
1      Integrated Register Allocator (IRA) to generate a good code.  If
1      this macro is defined, it should return a floating point value
1      based on REGNO.  The cost of using REGNO for a pseudo will be
1      increased by approximately the pseudo's usage frequency times the
1      value returned by this macro.  Not defining this macro is
1      equivalent to having it always return '0.0'.
1 
1      On most machines, it is not necessary to define this macro.
1