- Mar 10, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127388
-
- Dec 10, 2010
-
-
Jakob Stoklund Olesen authored
Soon, RegAllocGreedy will start splitting live ranges, and then deferred spilling won't work anyway. llvm-svn: 121591
-
- Nov 10, 2010
-
-
Andrew Trick authored
benchmarks hitting an assertion. Adds LiveIntervalUnion::collectInterferingVRegs. Fixes "late spilling" by checking for any unspillable live vregs among all physReg aliases. llvm-svn: 118701
-
- Oct 25, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 117272
-
- Aug 14, 2010
-
-
Jakob Stoklund Olesen authored
The earliestStart argument is entirely specific to linear scan allocation, and can be easily calculated by RegAllocLinearScan. Replace std::vector with SmallVector. llvm-svn: 111055
-
- Jul 21, 2010
-
-
Jakob Stoklund Olesen authored
The spillers can pluck the analyses they need from the pass reference. Switch some never-null pointers to references. llvm-svn: 108969
-
- Jul 19, 2010
-
-
Jakob Stoklund Olesen authored
non-const. llvm-svn: 108734
-
- Jul 01, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 107351
-
- Jun 24, 2010
-
-
Jakob Stoklund Olesen authored
vector instead. This avoids needless copying and allocation. Add documentation. llvm-svn: 106788
-
- Dec 09, 2009
-
-
Lang Hames authored
When a call is placed to spill an interval this spiller will first try to break the interval up into its component values. Single value intervals and intervals which have already been split (or are the result of previous splits) are spilled by the default spiller. Splitting intervals as described above may improve the performance of generated code in some circumstances. This work is experimental however, and it still miscompiles many benchmarks. It's not recommended for general use yet. llvm-svn: 90951
-
- Nov 20, 2009
-
-
Lang Hames authored
llvm-svn: 89422
-
- Nov 19, 2009
-
-
Lang Hames authored
All spiller calls in RegAllocLinearScan now go through the new Spiller interface. The "-new-spill-framework" command line option has been removed. To use the trivial in-place spiller you should now pass "-spiller=trivial -rewriter=trivial". (Note the trivial spiller/rewriter are only meant to serve as examples of the new in-place modification work. Enabling them will yield terrible, though hopefully functional, code). llvm-svn: 89311
-
- Nov 18, 2009
-
-
Lang Hames authored
Fixed the in-place spiller and trivial rewriter, which had been broken by the recent SlotIndexes work. llvm-svn: 89238
-
- Jul 19, 2009
-
-
Daniel Dunbar authored
llvm-svn: 76356
-
- Jul 13, 2009
-
-
Daniel Dunbar authored
llvm-svn: 75440
-
- Jun 19, 2009
-
-
Lang Hames authored
llvm-svn: 73750
-
- Jun 17, 2009
-
-
Lang Hames authored
llvm-svn: 73634
-
- Jun 02, 2009
-
-
Lang Hames authored
llvm-svn: 72729
-
- May 19, 2009
-
-
Bill Wendling authored
llvm-svn: 72114
-
Bill Wendling authored
llvm-svn: 72113
-
Bill Wendling authored
llvm-svn: 72112
-
- May 18, 2009
-
-
Lang Hames authored
llvm-svn: 72030
-
- May 06, 2009
-
-
Lang Hames authored
llvm-svn: 71057
-
- Apr 22, 2009
-
-
Evan Cheng authored
This fixes a very subtle bug. vr defined by an implicit_def is allowed overlap with any register since it doesn't actually modify anything. However, if it's used as a two-address use, its live range can be extended and it can be spilled. The spiller must take care not to emit a reload for the vn number that's defined by the implicit_def. This is both a correctness and performance issue. llvm-svn: 69743
-
- Apr 17, 2009
-
-
Evan Cheng authored
register is available and when it's profitable. e.g. xorq %r12<kill>, %r13 addq %rax, -184(%rbp) addq %r13, -184(%rbp) ==> xorq %r12<kill>, %r13 movq -184(%rbp), %r12 addq %rax, %r12 addq %r13, %r12 movq %r12, -184(%rbp) Two more instructions, but fewer memory accesses. It can also open up opportunities for more optimizations. llvm-svn: 69341
-
- Mar 31, 2009
-
-
Bill Wendling authored
llvm-svn: 68099
-
Bill Wendling authored
llvm-svn: 68092
-
- Mar 17, 2009
-
-
Evan Cheng authored
Spiller may unfold load / mod / store instructions as an optimization when the would be loaded value is available in a register. It needs to check if it's legal to clobber the register. Also, the register can contain values of multiple spill slots, make sure to check all instead of just the one being unfolded. llvm-svn: 67068
-
- Mar 12, 2009
-
-
Owen Anderson authored
llvm-svn: 66780
-
- Mar 11, 2009
-
-
Owen Anderson authored
Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. No (intended) functionality change. llvm-svn: 66720
-