- Sep 25, 2010
-
-
Lang Hames authored
Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL. llvm-svn: 114791
-
- Sep 21, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 114469
-
Jakob Stoklund Olesen authored
llvm-svn: 114459
-
Jakob Stoklund Olesen authored
llvm-svn: 114455
-
Jakob Stoklund Olesen authored
instead of calling lower_bound or upper_bound directly. This cleans up the search logic a bit because {lower,upper}_bound compare LR->start by default, and it is usually simpler to search LR->end. Funnelling all searches through one function also makes it possible to replace the search algorithm with something faster than binary search. llvm-svn: 114448
-
Jakob Stoklund Olesen authored
llvm-svn: 114447
-
- Sep 08, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 113386
-
- Sep 04, 2010
-
-
Jakob Stoklund Olesen authored
Clobber ranges are no longer used when joining physical registers. Instead, all aliases are checked for interference. llvm-svn: 113084
-
- Aug 12, 2010
-
-
Jakob Stoklund Olesen authored
If a phi-def value were removed from the interval, the phi-kill flags are no longer valid. llvm-svn: 110949
-
Jakob Stoklund Olesen authored
llvm-svn: 110944
-
- Aug 10, 2010
-
-
Jakob Stoklund Olesen authored
register at a time. This turns out to be slightly faster than iterating over instructions, but more importantly, it allows us to compute spill weights for new registers created after the spill weight pass has run. Also compute the allocation hint at the same time as the spill weight. This allows us to use the spill weight as a cost metric for copies, and choose the most profitable hint if there is more than one possibility. The new hints provide a very small (< 0.1%) but universal code size improvement. llvm-svn: 110631
-
- Aug 06, 2010
-
-
Jakob Stoklund Olesen authored
After heavy editing of a live interval, it is much easier to simply renumber the live values instead of trying to keep track of the unused ones. llvm-svn: 110463
-
- Aug 02, 2010
-
-
Oscar Fuentes authored
Fixes potential ambiguity problems on VS 2010. Patch by nobled! llvm-svn: 110029
-
- Jul 26, 2010
-
-
Lang Hames authored
llvm-svn: 109388
-
- Jul 13, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 108277
-
Jakob Stoklund Olesen authored
LiveInterval::overlapsFrom dereferences end() if it is called on an empty interval. It would be reasonable to just return false - an empty interval doesn't overlap anything, but I want to know who is doing it first. llvm-svn: 108264
-
Jakob Stoklund Olesen authored
Also, one binary search is enough. llvm-svn: 108261
-
- Jun 29, 2010
-
-
Duncan Sands authored
llvm-svn: 107127
-
- Jun 26, 2010
-
-
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
-
- Jun 25, 2010
-
-
Jakob Stoklund Olesen authored
This fixes PR7479 and PR7485. The test cases from those PRs are big, so not included. However, PR7485 comes from self hosting on FreeBSD, so we will surely hear about any regression. llvm-svn: 106811
-
- Jun 23, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 106627
-
- Mar 30, 2010
-
-
Benjamin Kramer authored
only a single type of object to be allocated. Use it to make VNInfo destruction typesafe. llvm-svn: 99919
-
Daniel Dunbar authored
llvm-svn: 99895
-
Torok Edwin authored
llvm-svn: 99883
-
- Jan 12, 2010
-
-
Bob Wilson authored
llvm-svn: 93261
-
- Jan 04, 2010
-
-
David Greene authored
Change errs() to dbgs(). llvm-svn: 92528
-
- 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 04, 2009
-
-
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
-
- Oct 03, 2009
-
-
Lang Hames authored
llvm-svn: 83255
-
Lang Hames authored
llvm-svn: 83254
-
- Sep 12, 2009
-
-
Lang Hames authored
llvm-svn: 81605
-
- Sep 04, 2009
-
-
Lang Hames authored
a new class, MachineInstrIndex, which hides arithmetic details from most clients. This is a step towards allowing the register allocator to update/insert code during allocation. llvm-svn: 81040
-
- Aug 23, 2009
-
-
Chris Lattner authored
llvm-svn: 79814
-
- Aug 11, 2009
-
-
Lang Hames authored
Modified VNInfo. The "copy" member is now a union which holds the copy for a register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg. llvm-svn: 78620
-
- Jul 24, 2009
-
-
Daniel Dunbar authored
llvm-svn: 76966
-
Daniel Dunbar authored
LiveInterval, etc to raw_ostream. llvm-svn: 76965
-
- Jul 23, 2009
-
-
David Greene authored
Reorder if-else branches as suggested by Bill. llvm-svn: 76808
-
- Jul 22, 2009
-
-
David Greene authored
Make some changes suggested by Bill and Evan. llvm-svn: 76775
-
David Greene authored
Add some support for iterative coalescers to calculate a joined live range's weight properly. This is turned off right now in the sense that you'll get an assert if you get into a situation that can only be caused by an iterative coalescer. All other code paths operate exactly as before so there is no functional change with this patch. The asserts should be disabled if/when an iterative coalescer gets added to trunk. llvm-svn: 76680
-
- Jul 09, 2009
-
-
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
-