Skip to content
  1. Jul 23, 2004
    • Chris Lattner's avatar
      More minor changes: · 1604b02c
      Chris Lattner authored
       * Inline some functions
       * Eliminate some comparisons from the release build
      
      This is good for another .3 on gcc.
      
      llvm-svn: 15144
      1604b02c
    • Chris Lattner's avatar
      Change addRange and join to be a little bit smarter. In particular, we don't · b4acba49
      Chris Lattner authored
      want to insert a new range into the middle of the vector, then delete ranges
      one at a time next to the inserted one as they are merged.
      
      Instead, if the inserted interval overlaps, just start merging.  The only time
      we insert into the middle of the vector is when we don't overlap at all.  Also
      delete blocks of live ranges if we overlap with many of them.
      
      This patch speeds up joining by .7 seconds on a large testcase, but more
      importantly gets all of the range adding code into addRangeFrom.
      
      llvm-svn: 15141
      b4acba49
    • Chris Lattner's avatar
      Search by the start point, not by the whole interval. This saves some · 2fcc5e41
      Chris Lattner authored
      comparisons, reducing linscan by another .1 seconds :)
      
      llvm-svn: 15139
      2fcc5e41
    • Chris Lattner's avatar
      New helper method · 60babd04
      Chris Lattner authored
      llvm-svn: 15138
      60babd04
    • Chris Lattner's avatar
      Speedup debug builds a bit · 848c7c59
      Chris Lattner authored
      llvm-svn: 15137
      848c7c59
    • Chris Lattner's avatar
      Instead of searching for a live interval pair, search for a location. This gives · c96d2995
      Chris Lattner authored
      a very modest speedup of .3 seconds compiling 176.gcc (out of 20s).
      
      llvm-svn: 15136
      c96d2995
    • Chris Lattner's avatar
      Rename LiveIntervals.(cpp|h) -> LiveIntervalAnalysis.(cpp|h) · 85638332
      Chris Lattner authored
      llvm-svn: 15135
      85638332
    • Chris Lattner's avatar
      Pull the LiveRange and LiveInterval classes out of LiveIntervals.h (which · 78f62e37
      Chris Lattner authored
      will soon be renamed) into their own file.  The new file should not emit
      DEBUG output or have other side effects.  The LiveInterval class also now
      doesn't know whether its working on registers or some other thing.
      
      In the future we will want to use the LiveInterval class and friends to do
      stack packing.  In addition to a code simplification, this will allow us to
      do it more easily.
      
      llvm-svn: 15134
      78f62e37
    • Chris Lattner's avatar
      Improve comments a bit · 53280cd2
      Chris Lattner authored
      Use an explicit LiveRange class to represent ranges instead of an std::pair.
      This is a minor cleanup, but is really intended to make a future patch simpler
      and less invasive.
      
      Alkis, could you please take a look at LiveInterval::liveAt?  I suspect that
      you can add an operator<(unsigned) to LiveRange, allowing us to speed up the
      upper_bound call by quite a bit (this would also apply to other callers of
      upper/lower_bound).  I would do it myself, but I still don't understand that
      crazy liveAt function, despite the comment. :)
      
      Basically I would like to see this:
          LiveRange dummy(index, index+1);
          Ranges::const_iterator r = std::upper_bound(ranges.begin(),
                                                      ranges.end(),
                                                      dummy);
      
      Turn into:
          Ranges::const_iterator r = std::upper_bound(ranges.begin(),
                                                      ranges.end(),
                                                      index);
      
      llvm-svn: 15130
      53280cd2
    • Chris Lattner's avatar
      Update live intervals more accurately for PHI elim. This slightly reduces · 2d75978b
      Chris Lattner authored
      the live intervals for some registers.
      
      llvm-svn: 15125
      2d75978b
    • Chris Lattner's avatar
      Force coallescing of live ranges that have a single definition, even if they · b549420c
      Chris Lattner authored
      interfere.  Because these intervals have a single definition, and one of them
      is a copy instruction, they are always safe to merge even if their lifetimes
      interfere.  This slightly reduces the amount of spill code, for example on
      252.eon, from:
      
       12837 spiller               - Number of loads added
        7604 spiller               - Number of stores added
        5842 spiller               - Number of register spills
       18155 liveintervals         - Number of identity moves eliminated after coalescing
      
      to:
      
        12754 spiller               - Number of loads added
         7585 spiller               - Number of stores added
         5803 spiller               - Number of register spills
        18262 liveintervals         - Number of identity moves eliminated after coalescing
      
      The much much bigger win would be to merge intervals with multiple definitions
      (aka phi nodes) but this is not that day.
      
      llvm-svn: 15124
      b549420c
    • Chris Lattner's avatar
      costmetic changes · 84b93bb1
      Chris Lattner authored
      llvm-svn: 15118
      84b93bb1
  2. Jul 22, 2004
  3. Jul 21, 2004
  4. Jul 20, 2004
  5. Jul 19, 2004
Loading