Skip to content
  1. Apr 28, 2012
  2. Feb 04, 2012
    • Jakob Stoklund Olesen's avatar
      Drop the REDEF_BY_EC VNInfo flag. · abb26bae
      Jakob Stoklund Olesen authored
      A live range that has an early clobber tied redef now looks like a
      normal tied redef, except the early clobber def uses the early clobber
      slot.
      
      This is enough to handle any strange interference problems.
      
      llvm-svn: 149769
      abb26bae
  3. Feb 02, 2012
  4. Nov 14, 2011
  5. Nov 13, 2011
    • Jakob Stoklund Olesen's avatar
      Rename SlotIndexes to match how they are used. · 90b5e565
      Jakob Stoklund Olesen authored
      The old naming scheme (load/use/def/store) can be traced back to an old
      linear scan article, but the names don't match how slots are actually
      used.
      
      The load and store slots are not needed after the deferred spill code
      insertion framework was deleted.
      
      The use and def slots don't make any sense because we are using
      half-open intervals as is customary in C code, but the names suggest
      closed intervals.  In reality, these slots were used to distinguish
      early-clobber defs from normal defs.
      
      The new naming scheme also has 4 slots, but the names match how the
      slots are really used.  This is a purely mechanical renaming, but some
      of the code makes a lot more sense now.
      
      llvm-svn: 144503
      90b5e565
  6. Sep 15, 2011
    • Jakob Stoklund Olesen's avatar
      Leave hasPHIKill flags alone in LiveInterval::RenumberValues. · e7ca8ecd
      Jakob Stoklund Olesen authored
      It is conservatively correct to keep the hasPHIKill flags, even after
      deleting PHI-defs.
      
      The calculation can be very expensive after taildup has created a
      quadratic number of indirectbr edges in the CFG, and the hasPHIKill flag
      isn't used for anything after RenumberValues().
      
      llvm-svn: 139780
      e7ca8ecd
  7. Sep 13, 2011
  8. Mar 20, 2011
  9. Mar 17, 2011
  10. Mar 12, 2011
    • Jakob Stoklund Olesen's avatar
      That's it, I am declaring this a failure of the C++03 STL. · dae1dc1f
      Jakob Stoklund Olesen authored
      There are too many compatibility problems with using mixed types in
      std::upper_bound, and I don't want to spend 110 lines of boilerplate setting up
      a call to a 10-line function. Binary search is not /that/ hard to implement
      correctly.
      
      I tried terminating the binary search with a linear search, but that actually
      made the algorithm slower against my expectation. Most live intervals have less
      than 4 segments. The early test against endIndex() does pay, and this version is
      25% faster than plain std::upper_bound().
      
      llvm-svn: 127522
      dae1dc1f
  11. Mar 11, 2011
  12. Mar 08, 2011
  13. Mar 03, 2011
  14. Mar 02, 2011
  15. 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
  16. Jan 09, 2011
  17. Dec 21, 2010
  18. Dec 19, 2010
  19. Oct 29, 2010
  20. Oct 09, 2010
  21. Oct 08, 2010
  22. Oct 05, 2010
  23. Oct 02, 2010
  24. Sep 25, 2010
  25. Sep 21, 2010
  26. Sep 08, 2010
  27. Sep 04, 2010
    • Jakob Stoklund Olesen's avatar
      Remove dead code. · 313358fe
      Jakob Stoklund Olesen authored
      Clobber ranges are no longer used when joining physical registers.
      Instead, all aliases are checked for interference.
      
      llvm-svn: 113084
      313358fe
  28. Aug 12, 2010
Loading