Skip to content
  1. Jun 07, 2011
    • Jakob Stoklund Olesen's avatar
      Simplify local live range splitting's safeguard to fix PR10070. · df476270
      Jakob Stoklund Olesen authored
      When local live range splitting creates a live range with the same
      number of instructions as the old range, mark it as RS_Local. When such
      a range is seen again, require that it be split in a way that reduces
      the number of instructions. That guarantees we are making progress while
      still being able to perform 3 -> 2+3 splits as required by PR10070.
      
      This also means that the PrevSlot map is no longer needed. This was also
      used to estimate new spill weights, but that is no longer necessary
      after slotIndexes::insertMachineInstrInMaps() got the extra Late
      insertion argument.
      
      llvm-svn: 132697
      df476270
  2. Jun 06, 2011
  3. Jun 05, 2011
  4. Jun 04, 2011
  5. Jun 03, 2011
  6. Jun 02, 2011
  7. Jun 01, 2011
  8. May 31, 2011
    • Jakob Stoklund Olesen's avatar
      Simplify the eviction policy by making the failsafe explicit. · 73e18b7a
      Jakob Stoklund Olesen authored
      When assigned ranges are evicted, they are put in the RS_Evicted stage and are
      not allowed to evict anything else. That prevents looping automatically.
      
      When evicting ranges just to get a cheaper register, use only spill weights to
      find the possible candidates. Avoid breaking hints for this purpose, it is not
      worth it.
      
      Start implementing more complex eviction heuristics, guarded by the temporary
      -complex-eviction flag. The initial version permits a heavier range to be
      evicted if it doesn't have any uses where the evicting range is live. This makes
      it a good candidate for live ranfge splitting.
      
      llvm-svn: 132358
      73e18b7a
Loading