- Jun 22, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 159030
-
Jakob Stoklund Olesen authored
It is both smaller and faster than DenseMap. llvm-svn: 159029
-
Jakob Stoklund Olesen authored
There is no need to check for physreg live ranges. They don't exist any more. llvm-svn: 159019
-
Jakob Stoklund Olesen authored
Everyone is using on-demand regunit ranges now. llvm-svn: 159018
-
Jakob Stoklund Olesen authored
With regunit liveness permanently enabled, this function would always return true. Also remove now obsolete code for checking physreg interference. llvm-svn: 159006
-
- Jun 21, 2012
-
-
Jakob Stoklund Olesen authored
Register allocators depend on it being permanently enabled now. llvm-svn: 158873
-
Jakob Stoklund Olesen authored
Deterministically enumerate the virtual registers instead. llvm-svn: 158872
-
Jakob Stoklund Olesen authored
Soon we won't need to compute live intervals for physical registers. llvm-svn: 158865
-
- Jun 20, 2012
-
-
Jakob Stoklund Olesen authored
Regunit live ranges are computed on demand, so when mi-sched calls handleMove, some regunits may not have live ranges yet. That makes updating them easier: Just skip the non-existing ranges. They will be computed correctly from the rescheduled machine code when they are needed. llvm-svn: 158831
-
Jakob Stoklund Olesen authored
llvm-svn: 158827
-
Jakob Stoklund Olesen authored
When LiveIntervals is tracking fixed interference in regunits, make sure to update those intervals as well. Currently guarded by -live-regunits. llvm-svn: 158766
-
Jakob Stoklund Olesen authored
llvm-svn: 158755
-
- Jun 06, 2012
-
-
Jakob Stoklund Olesen authored
Remat has been stable for years, and it isn't done by LiveIntervalAnalysis any longer. (See LiveRangeEdit). llvm-svn: 158079
-
Matt Beaumont-Gay authored
llvm-svn: 158037
-
Jakob Stoklund Olesen authored
Don't print out the register number and spill weight, making the TRI argument unnecessary. This allows callers to interpret the reg field. It can currently be a virtual register, a physical register, a spill slot, or a register unit. llvm-svn: 158031
-
Jakob Stoklund Olesen authored
Instead of computing a live interval per physreg, LiveIntervals can compute live intervals per register unit. This makes impossible the confusing situation where aliasing registers could have overlapping live intervals. It should also make fixed interferernce checking cheaper since registers have fewer register units than aliases. Live intervals for regunits are computed on demand, using MRI use-def chains and the new LiveRangeCalc class. Only regunits live in to ABI blocks are precomputed during LiveIntervals::runOnMachineFunction(). The regunit liveness computations don't depend on LiveVariables. llvm-svn: 158029
-
- Jun 05, 2012
-
-
Jakob Stoklund Olesen authored
Rematerialization is handled by LiveRangeEdit now. llvm-svn: 157974
-
Jakob Stoklund Olesen authored
llvm-svn: 157963
-
Jakob Stoklund Olesen authored
No functional change. llvm-svn: 157957
-
- May 29, 2012
-
-
Lang Hames authored
ranges for the instruction about to be bundled. This fixes a bug in an external project where an assertion was triggered due to spurious 'multiple defs' within the bundle. Patch by Ivan Llopard. Thanks Ivan! llvm-svn: 157632
-
- May 20, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 157145
-
- Apr 18, 2012
-
-
Pete Cooper authored
LiveIntervalUpdate validators weren't recorded after the calls to std::for_each. Turns out std::for_each doesn't update the variable passed in for the functor but instead copy constructs a new one. llvm-svn: 155041
-
- Mar 21, 2012
-
-
Andrew Trick authored
llvm-svn: 153162
-
Andrew Trick authored
llvm-svn: 153158
-
- Mar 04, 2012
-
-
Jakob Stoklund Olesen authored
The first def of a virtual register cannot also read the register. Assert on such bad machine code instead of trying to fix it. TwoAddressInstructionPass should never create code like that. llvm-svn: 152010
-
- Mar 01, 2012
-
-
Jakob Stoklund Olesen authored
This allows the function to be inlined, and makes it suitable for use in getInstructionIndex(). Also provide a const version. C++ is great for touch typing practice. llvm-svn: 151782
-
- Feb 21, 2012
-
-
Lang Hames authored
bundles. This method takes a bundle start and an MI being bundled, and makes the intervals for the MI's operands appear to start/end on the bundle start. Also fixes some minor cosmetic issues (whitespace, naming convention) in the HMEditor code. llvm-svn: 151099
-
Lang Hames authored
llvm-svn: 151006
-
- Feb 19, 2012
-
-
Benjamin Kramer authored
llvm-svn: 150921
-
Lang Hames authored
llvm-svn: 150915
-
Lang Hames authored
llvm-svn: 150914
-
Lang Hames authored
llvm-svn: 150912
-
Lang Hames authored
llvm-svn: 150910
-
Lang Hames authored
Defer sanity checks on live intervals until after all have been updated. Hold (LiveInterval, LiveRange) pairs to update, rather than vregs. llvm-svn: 150909
-
- Feb 18, 2012
-
-
Lang Hames authored
llvm-svn: 150851
-
- Feb 17, 2012
-
-
Matt Beaumont-Gay authored
llvm-svn: 150841
-
Lang Hames authored
llvm-svn: 150840
-
Lang Hames authored
any changes. Internally this adds a private inner class HMEditor, to LiveIntervals. HMEditor provides an API for updating live intervals when code is moved or bundled. llvm-svn: 150826
-
Lang Hames authored
llvm-svn: 150771
-
Lang Hames authored
llvm-svn: 150768
-