Skip to content
  1. Mar 10, 2008
  2. Feb 26, 2008
  3. Feb 20, 2008
  4. Feb 10, 2008
  5. Jan 04, 2008
  6. Dec 31, 2007
    • Chris Lattner's avatar
      Rename SSARegMap -> MachineRegisterInfo in keeping with the idea · a10fff51
      Chris Lattner authored
      that "machine" classes are used to represent the current state of
      the code being compiled.  Given this expanded name, we can start 
      moving other stuff into it.  For now, move the UsedPhysRegs and
      LiveIn/LoveOuts vectors from MachineFunction into it.
      
      Update all the clients to match.
      
      This also reduces some needless #includes, such as MachineModuleInfo
      from MachineFunction.
      
      llvm-svn: 45467
      a10fff51
  7. Dec 29, 2007
  8. Dec 11, 2007
  9. Nov 17, 2007
    • Evan Cheng's avatar
      Live interval splitting: · 8e223793
      Evan Cheng authored
      When a live interval is being spilled, rather than creating short, non-spillable
      intervals for every def / use, split the interval at BB boundaries. That is, for
      every BB where the live interval is defined or used, create a new interval that
      covers all the defs and uses in the BB.
      
      This is designed to eliminate one common problem: multiple reloads of the same
      value in a single basic block. Note, it does *not* decrease the number of spills
      since no copies are inserted so the split intervals are *connected* through
      spill and reloads (or rematerialization). The newly created intervals can be
      spilled again, in that case, since it does not span multiple basic blocks, it's
      spilled in the usual manner. However, it can reuse the same stack slot as the
      previously split interval.
      
      This is currently controlled by -split-intervals-at-bb.
      
      llvm-svn: 44198
      8e223793
  10. Nov 15, 2007
  11. Nov 12, 2007
  12. Nov 04, 2007
  13. Nov 03, 2007
    • Evan Cheng's avatar
      There are times when the coalescer would not coalesce away a copy but the copy · 66298e22
      Evan Cheng authored
      can be eliminated by the allocator is the destination and source targets the
      same register. The most common case is when the source and destination registers
      are in different class. For example, on x86 mov32to32_ targets GR32_ which
      contains a subset of the registers in GR32.
      
      The allocator can do 2 things:
      1. Set the preferred allocation for the destination of a copy to that of its source.
      2. After allocation is done, change the allocation of a copy destination (if
         legal) so the copy can be eliminated.
      
      This eliminates 443 extra moves from 403.gcc.
      
      llvm-svn: 43662
      66298e22
  14. Oct 17, 2007
  15. Oct 16, 2007
  16. Oct 12, 2007
  17. Sep 06, 2007
    • David Greene's avatar
      · 65d2a697
      David Greene authored
      Pluggable coalescers inplementation.
      
      llvm-svn: 41743
      65d2a697
  18. Aug 14, 2007
  19. Jun 08, 2007
  20. May 08, 2007
  21. May 03, 2007
  22. May 02, 2007
  23. May 01, 2007
  24. Apr 26, 2007
  25. Apr 25, 2007
  26. Apr 17, 2007
    • Evan Cheng's avatar
      Copy coalescing change to prevent a physical register from being pin to a · b881bdab
      Evan Cheng authored
      long live interval that has low usage density.
      1. Change order of coalescing to join physical registers with virtual
         registers first before virtual register intervals become too long.
      2. Check size and usage density to determine if it's worthwhile to join.
      3. If joining is aborted, assign virtual register live interval allocation
         preference field to the physical register.
      4. Register allocator should try to allocate to the preferred register
         first (if available) to create identify moves that can be eliminated.
      
      llvm-svn: 36218
      b881bdab
  27. Mar 20, 2007
  28. Feb 25, 2007
  29. Feb 19, 2007
  30. Feb 17, 2007
  31. Feb 16, 2007
  32. Dec 19, 2006
  33. Dec 06, 2006
  34. Dec 02, 2006
Loading