Skip to content
  • Alkis Evlogimenos's avatar
    Too many changes in one commit: · 76eca062
    Alkis Evlogimenos authored
    1. LiveIntervals now implement a 4 slot per instruction model. Load,
       Use, Def and a Store slot. This is required in order to correctly
       represent caller saved register clobbering on function calls,
       register reuse in the same instruction (def resues last use) and
       also spill code added later by the allocator. The previous
       representation (2 slots per instruction) was insufficient and as a
       result was causing subtle bugs.
    
    2. Fixes in spill code generation. This was the major cause of
       failures in the test suite.
    
    3. Linear scan now has core support for folding memory operands. This
       is untested and not enabled (the live interval update function does
       not attempt to fold loads/stores in instructions).
    
    4. Lots of improvements in the debugging output of both live intervals
       and linear scan. Give it a try... it is beautiful :-)
    
    In summary the above fixes all the issues with the recent reserved
    register elimination changes and get the allocator very close to the
    next big step: folding memory operands.
    
    llvm-svn: 11654
    76eca062
Loading