Skip to content
  1. Feb 04, 2011
    • Jakob Stoklund Olesen's avatar
      Add LiveIntervals::getLastSplitPoint(). · 096bd883
      Jakob Stoklund Olesen authored
      A live range cannot be split everywhere in a basic block. A split must go before
      the first terminator, and if the variable is live into a landing pad, the split
      must happen before the call that can throw.
      
      llvm-svn: 124894
      096bd883
  2. Jan 10, 2011
  3. Jan 09, 2011
  4. Nov 16, 2010
    • Jakob Stoklund Olesen's avatar
      Fix emergency spilling in LiveIntervals::spillPhysRegAroundRegDefsUses. · 9beef41f
      Jakob Stoklund Olesen authored
      Always spill the full representative register at any point where any subregister
      is live.
      
      This fixes PR8620 which caused the old logic to get confused and not spill
      anything at all.
      
      The fundamental problem here is that the coalescer is too aggressive about
      physical register coalescing. It sometimes makes it impossible to allocate
      registers without these emergency spills.
      
      llvm-svn: 119375
      9beef41f
    • Jakob Stoklund Olesen's avatar
      Fix PR8612 in the standard spiller, take two. · e2b88586
      Jakob Stoklund Olesen authored
      The live range of a register defined by an early clobber starts at the use slot,
      not the def slot.
      
      Except when it is an early clobber tied to a use operand. Then it starts at the
      def slot like a standard def.
      
      llvm-svn: 119305
      e2b88586
  5. Nov 15, 2010
  6. Nov 10, 2010
  7. Oct 26, 2010
  8. Oct 12, 2010
  9. Oct 11, 2010
  10. Oct 08, 2010
  11. Sep 25, 2010
  12. Aug 17, 2010
  13. Aug 12, 2010
  14. Aug 03, 2010
  15. Jul 22, 2010
  16. Jul 16, 2010
  17. Jul 09, 2010
  18. Jul 08, 2010
  19. Jul 07, 2010
  20. Jul 03, 2010
  21. Jun 26, 2010
  22. Jun 24, 2010
  23. Jun 19, 2010
  24. Jun 16, 2010
    • Jakob Stoklund Olesen's avatar
      Allow a register to be redefined multiple times in a basic block. · 207cd4bb
      Jakob Stoklund Olesen authored
      LiveVariableAnalysis was a bit picky about a register only being redefined once,
      but that really isn't necessary.
      
      Here is an example of chained INSERT_SUBREGs that we can handle now:
      
      68      %reg1040<def> = INSERT_SUBREG %reg1040, %reg1028<kill>, 14
                      register: %reg1040 +[70,134:0)
      76      %reg1040<def> = INSERT_SUBREG %reg1040, %reg1029<kill>, 13
                      register: %reg1040 replace range with [70,78:1) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,134:0)  0@78-(134) 1@70-(78)
      84      %reg1040<def> = INSERT_SUBREG %reg1040, %reg1030<kill>, 12
                      register: %reg1040 replace range with [78,86:2) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,86:2)[86,134:0)  0@86-(134) 1@70-(78) 2@78-(86)
      92      %reg1040<def> = INSERT_SUBREG %reg1040, %reg1031<kill>, 11
                      register: %reg1040 replace range with [86,94:3) RESULT: %reg1040,0.000000e+00 = [70,78:1)[78,86:2)[86,94:3)[94,134:0)  0@94-(134) 1@70-(78) 2@78-(86) 3@86-(94)
      
      rdar://problem/8096390
      
      llvm-svn: 106152
      207cd4bb
  25. Jun 03, 2010
  26. May 21, 2010
Loading