Skip to content
  1. Jun 26, 2010
    • Jakob Stoklund Olesen's avatar
      Don't track kills in VNInfo. Use interval ends instead. · 55d738e2
      Jakob Stoklund Olesen authored
      The VNInfo.kills vector was almost unused except for all the code keeping it
      updated. The few places using it were easily rewritten to check for interval
      ends instead.
      
      The two new methods LiveInterval::killedAt and killedInRange are replacements.
      
      This brings us down to 3 independent data structures tracking kills.
      
      llvm-svn: 106905
      55d738e2
  2. Jun 22, 2010
  3. Jun 03, 2010
    • Jakob Stoklund Olesen's avatar
      Slightly change the meaning of the reMaterialize target hook when the original · a8ad9774
      Jakob Stoklund Olesen authored
      instruction defines subregisters.
      
      Any existing subreg indices on the original instruction are preserved or
      composed with the new subreg index.
      
      Also substitute multiple operands mentioning the original register by using the
      new MachineInstr::substituteRegister() function. This is necessary because there
      will soon be <imp-def> operands added to non read-modify-write partial
      definitions. This instruction:
      
        %reg1234:foo = FLAP %reg1234<imp-def>
      
      will reMaterialize(%reg3333, bar) like this:
      
        %reg3333:bar-foo = FLAP %reg333:bar<imp-def>
      
      Finally, replace the TargetRegisterInfo pointer argument with a reference to
      indicate that it cannot be NULL.
      
      llvm-svn: 105358
      a8ad9774
  4. May 21, 2010
  5. May 06, 2010
  6. Mar 30, 2010
  7. Feb 09, 2010
  8. Jan 07, 2010
  9. Jan 05, 2010
  10. Dec 28, 2009
  11. Dec 22, 2009
  12. Dec 14, 2009
  13. Dec 03, 2009
  14. Nov 14, 2009
  15. Nov 12, 2009
    • David Greene's avatar
      · 1fbe0544
      David Greene authored
      Add a bool flag to StackObjects telling whether they reference spill
      slots.  The AsmPrinter will use this information to determine whether to
      print a spill/reload comment.
      
      Remove default argument values.  It's too easy to pass a wrong argument
      value when multiple arguments have default values.  Make everything
      explicit to trap bugs early.
      
      Update all targets to adhere to the new interfaces..
      
      llvm-svn: 87022
      1fbe0544
    • Lang Hames's avatar
      Fixed an iteration condition in PreAllocSplitting. This should fix some... · bff25cb0
      Lang Hames authored
      Fixed an iteration condition in PreAllocSplitting. This should fix some miscompilations casued by PreAllocSplitting.
      
      llvm-svn: 86919
      bff25cb0
  16. Nov 10, 2009
    • Jeffrey Yasskin's avatar
      Fix DenseMap iterator constness. · b40d3f76
      Jeffrey Yasskin authored
      This patch forbids implicit conversion of DenseMap::const_iterator to
      DenseMap::iterator which was possible because DenseMapIterator inherited
      (publicly) from DenseMapConstIterator. Conversion the other way around is now
      allowed as one may expect.
      
      The template DenseMapConstIterator is removed and the template parameter
      IsConst which specifies whether the iterator is constant is added to
      DenseMapIterator.
      
      Actually IsConst parameter is not necessary since the constness can be
      determined from KeyT but this is not relevant to the fix and can be addressed
      later.
      
      Patch by Victor Zverovich!
      
      llvm-svn: 86636
      b40d3f76
  17. Nov 09, 2009
  18. Nov 04, 2009
    • Lang Hames's avatar
      The Indexes Patch. · 05fb9637
      Lang Hames authored
      This introduces a new pass, SlotIndexes, which is responsible for numbering
      instructions for register allocation (and other clients). SlotIndexes numbering
      is designed to match the existing scheme, so this patch should not cause any
      changes in the generated code.
      
      For consistency, and to avoid naming confusion, LiveIndex has been renamed
      SlotIndex.
      
      The processImplicitDefs method of the LiveIntervals analysis has been moved
      into its own pass so that it can be run prior to SlotIndexes. This was
      necessary to match the existing numbering scheme.
      
      llvm-svn: 85979
      05fb9637
  19. Oct 25, 2009
  20. Oct 20, 2009
  21. Oct 17, 2009
  22. Oct 09, 2009
  23. Oct 03, 2009
  24. Sep 09, 2009
  25. Sep 04, 2009
  26. Aug 23, 2009
  27. Aug 11, 2009
  28. Aug 01, 2009
  29. Jul 16, 2009
  30. Jul 12, 2009
  31. Jul 11, 2009
  32. Jul 09, 2009
    • Lang Hames's avatar
      Improved tracking of value number kills. VN kills are now represented · dab7b06d
      Lang Hames authored
      as an (index,bool) pair. The bool flag records whether the kill is a
      PHI kill or not. This code will be used to enable splitting of live
      intervals containing PHI-kills.
      
      A slight change to live interval weights introduced an extra spill
      into lsr-code-insertion (outside the critical sections). The test 
      condition has been updated to reflect this.
      
      llvm-svn: 75097
      dab7b06d
  33. Jun 17, 2009
  34. May 03, 2009
    • Evan Cheng's avatar
      In some rare cases, the register allocator can spill registers but end up not... · 210fc62a
      Evan Cheng authored
      In some rare cases, the register allocator can spill registers but end up not utilizing registers at all. The fundamental problem is linearscan's backtracking can end up freeing more than one allocated registers. However,  reloads and restores might be folded into uses / defs and freed registers might not be used at all.
      
      VirtRegMap keeps track of allocations so it knows what's not used. As a horrible hack, the stack coloring can color spill slots with *free* registers. That is, it replace reload and spills with copies from and to the free register. It unfold instructions that load and store the spill slot and replace them with register using variants.
      
      Not yet enabled. This is part 1. More coming.
      
      llvm-svn: 70787
      210fc62a
Loading