Skip to content
  1. Mar 17, 2011
  2. Mar 08, 2011
    • Jakob Stoklund Olesen's avatar
      Delete dead code after rematerializing. · ea5ebfed
      Jakob Stoklund Olesen authored
      LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing,
      splitting, and spilling for dead code elimination. It can delete chains of dead
      instructions as long as there are no dependency loops.
      
      llvm-svn: 127287
      ea5ebfed
  3. Mar 05, 2011
    • Jakob Stoklund Olesen's avatar
      Work around a coalescer bug. · 27e0a4ab
      Jakob Stoklund Olesen authored
      The coalescer can in very rare cases leave too large live intervals around after
      rematerializing cheap-as-a-move instructions.
      
      Linear scan doesn't really care, but live range splitting gets very confused
      when a live range is killed by a ghost instruction.
      
      I will fix this properly in the coalescer after 2.9 branches.
      
      llvm-svn: 127096
      27e0a4ab
  4. Mar 04, 2011
  5. Mar 03, 2011
  6. Mar 02, 2011
  7. Feb 22, 2011
  8. Feb 19, 2011
  9. Feb 17, 2011
    • Jakob Stoklund Olesen's avatar
      Split local live ranges. · 93c8736a
      Jakob Stoklund Olesen authored
      A local live range is live in a single basic block. If such a range fails to
      allocate, try to find a sub-range that would get a larger spill weight than its
      interference.
      
      llvm-svn: 125764
      93c8736a
  10. Feb 10, 2011
  11. Feb 09, 2011
  12. 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
  13. Feb 03, 2011
  14. Jan 26, 2011
  15. Jan 20, 2011
  16. Jan 18, 2011
  17. Jan 04, 2011
  18. Dec 21, 2010
    • Jakob Stoklund Olesen's avatar
      Add EdgeBundles to SplitKit. · 2530cd2a
      Jakob Stoklund Olesen authored
      Edge bundles is an annotation on the CFG that turns it into a bipartite directed
      graph where each basic block is connected to an outgoing and an ingoing bundle.
      These bundles are useful for identifying regions of the CFG for live range
      splitting.
      
      llvm-svn: 122301
      2530cd2a
  19. Dec 15, 2010
  20. Nov 10, 2010
    • Jakob Stoklund Olesen's avatar
      Basic rematerialization during splitting. · 6ee7d9aa
      Jakob Stoklund Olesen authored
      Whenever splitting wants to insert a copy, it checks if the value can be
      rematerialized cheaply instead.
      
      Missing features:
      - Delete instructions when all uses have been rematerialized.
      - Truncate live ranges to the remaining uses after rematerialization.
      
      llvm-svn: 118702
      6ee7d9aa
  21. Nov 02, 2010
  22. Oct 28, 2010
  23. Oct 27, 2010
Loading