Skip to content
  1. May 03, 2011
    • Jakob Stoklund Olesen's avatar
      Gracefully handle invalid live ranges. Fix PR9831. · eaa6ed1a
      Jakob Stoklund Olesen authored
      Register coalescing can sometimes create live ranges that end in the middle of a
      basic block without any killing instruction. When SplitKit detects this, it will
      repair the live range by shrinking it to its uses.
      
      Live range splitting also needs to know about this. When the range shrinks so
      much that it becomes allocatable, live range splitting fails because it can't
      find a good split point. It is paranoid about making progress, so an allocatable
      range is considered an error.
      
      The coalescer should really not be creating these bad live ranges. They appear
      when coalescing dead copies.
      
      llvm-svn: 130787
      eaa6ed1a
  2. Apr 30, 2011
  3. Apr 27, 2011
  4. Apr 23, 2011
  5. Apr 21, 2011
    • Jakob Stoklund Olesen's avatar
      Allow allocatable ranges from global live range splitting to be split again. · 6a663b8d
      Jakob Stoklund Olesen authored
      These intervals are allocatable immediately after splitting, but they may be
      evicted because of later splitting. This is rare, but when it happens they
      should be split again.
      
      The remainder intervals that cannot be allocated after splitting still move
      directly to spilling.
      
      SplitEditor::finish can optionally provide a mapping from new live intervals
      back to the original interval indexes returned by openIntv().
      
      Each original interval index can map to multiple new intervals after connected
      components have been separated. Dead code elimination may also add existing
      intervals to the list.
      
      The reverse mapping allows the SplitEditor client to treat the new intervals
      differently depending on the split region they came from.
      
      llvm-svn: 129925
      6a663b8d
  6. Apr 20, 2011
    • Jakob Stoklund Olesen's avatar
      Prefer cheap registers for busy live ranges. · 0e34c1df
      Jakob Stoklund Olesen authored
      On the x86-64 and thumb2 targets, some registers are more expensive to encode
      than others in the same register class.
      
      Add a CostPerUse field to the TableGen register description, and make it
      available from TRI->getCostPerUse. This represents the cost of a REX prefix or a
      32-bit instruction encoding required by choosing a high register.
      
      Teach the greedy register allocator to prefer cheap registers for busy live
      ranges (as indicated by spill weight).
      
      llvm-svn: 129864
      0e34c1df
  7. Apr 13, 2011
  8. Apr 12, 2011
  9. Apr 11, 2011
  10. Apr 09, 2011
  11. Apr 07, 2011
  12. Apr 06, 2011
  13. Apr 05, 2011
  14. Apr 04, 2011
  15. Apr 02, 2011
  16. Mar 30, 2011
    • Jakob Stoklund Olesen's avatar
      Treat clones the same as their origin. · dd9a2ece
      Jakob Stoklund Olesen authored
      When DCE clones a live range because it separates into connected components,
      make sure that the clones enter the same register allocator stage as the
      register they were cloned from.
      
      For instance, clones may be split even when they where created during spilling.
      Other registers created during spilling are not candidates for splitting or even
      (re-)spilling.
      
      llvm-svn: 128524
      dd9a2ece
  17. Mar 29, 2011
  18. Mar 28, 2011
  19. Mar 20, 2011
  20. Mar 16, 2011
  21. Mar 13, 2011
  22. Mar 10, 2011
  23. Mar 09, 2011
  24. Mar 07, 2011
  25. Mar 05, 2011
  26. Mar 04, 2011
Loading