Skip to content
  1. Feb 08, 2011
    • Jakob Stoklund Olesen's avatar
      Add SplitEditor::overlapIntv() to create small ranges where both registers are live. · 17499351
      Jakob Stoklund Olesen authored
      If a live range is used by a terminator instruction, and that live range needs
      to leave the block on the stack or in a different register, it can be necessary
      to have both sides of the split live at the terminator instruction.
      
      Example:
      
        %vreg2 = COPY %vreg1
        JMP %vreg1
      
      Becomes after spilling %vreg2:
      
        SPILL %vreg1
        JMP %vreg1
      
      The spill doesn't kill the register as is normally the case.
      
      llvm-svn: 125102
      17499351
  2. Feb 05, 2011
  3. Feb 04, 2011
  4. Feb 03, 2011
  5. Jan 20, 2011
  6. Jan 19, 2011
    • Jakob Stoklund Olesen's avatar
      Implement RAGreedy::splitAroundRegion and remove loop splitting. · 9fb04015
      Jakob Stoklund Olesen authored
      Region splitting includes loop splitting as a subset, and it is more generic.
      The splitting heuristics for variables that are live in more than one block are
      now:
      
      1. Try to create a region that covers multiple basic blocks.
      2. Try to create a new live range for each block with multiple uses.
      3. Spill.
      
      Steps 2 and 3 are similar to what the standard spiller is doing.
      
      llvm-svn: 123853
      9fb04015
  7. Jan 18, 2011
  8. Dec 28, 2010
  9. Dec 22, 2010
  10. Dec 18, 2010
  11. Dec 16, 2010
  12. Dec 15, 2010
  13. Dec 14, 2010
  14. Dec 11, 2010
  15. Dec 10, 2010
  16. Dec 09, 2010
Loading