Skip to content
  • Alkis Evlogimenos's avatar
    Improve allocation order: · c7fd0770
    Alkis Evlogimenos authored
    1) For 8-bit registers try to use first the ones that are parts of the
       same register (AL then AH). This way we only alias 2 16/32-bit
       registers after allocating 4 8-bit variables.
    
    2) Move EBX as the last register to allocate. This will cause less
       spills to happen since we will have 8-bit registers available up to
       register excaustion (assuming we use the allocation order). It
       would be nice if we could push all of the 8-bit aliased registers
       towards the end but we much prefer to keep callee saved register to
       the end to avoid saving them on entry and exit of the function.
    
    For example this gives a slight reduction of spills with linear scan
    on 164.gzip.
    
    Before:
    
    11221 asm-printer           - Number of machine instrs printed
      975 spiller               - Number of loads added
      675 spiller               - Number of stores added
      398 spiller               - Number of register spills
    
    After:
    
    11182 asm-printer           - Number of machine instrs printed
      952 spiller               - Number of loads added
      652 spiller               - Number of stores added
      386 spiller               - Number of register spills
    
    llvm-svn: 11996
    c7fd0770
Loading