| #
858afbb6 |
| 05-Apr-2011 |
Jakob Stoklund Olesen <[email protected]> |
Sign error
llvm-svn: 128963
|
| #
5c482cd3 |
| 05-Apr-2011 |
Jakob Stoklund Olesen <[email protected]> |
Don't crash when a value is defined after the last split point.
llvm-svn: 128962
|
| #
fe6e07fd |
| 05-Apr-2011 |
Jakob Stoklund Olesen <[email protected]> |
Use std::unique instead of a SmallPtrSet to ensure unique instructions in UseSlots.
This allows us to always keep the smaller slot for an instruction which is what we want when a register has early
Use std::unique instead of a SmallPtrSet to ensure unique instructions in UseSlots.
This allows us to always keep the smaller slot for an instruction which is what we want when a register has early clobber defines.
Drop the UsingInstrs set and the UsingBlocks map. They are no longer needed.
llvm-svn: 128886
show more ...
|
| #
d93b0e3c |
| 05-Apr-2011 |
Jakob Stoklund Olesen <[email protected]> |
Stop precomputing last split points, query the SplitAnalysis cache on demand.
llvm-svn: 128875
|
| #
50b2db8a |
| 05-Apr-2011 |
Jakob Stoklund Olesen <[email protected]> |
Cache the fairly expensive last split point computation and provide a fast inlined path for the common case.
Most basic blocks don't contain a call that may throw, so the last split point os simply
Cache the fairly expensive last split point computation and provide a fast inlined path for the common case.
Most basic blocks don't contain a call that may throw, so the last split point os simply the first terminator.
llvm-svn: 128874
show more ...
|
| #
8933907b |
| 04-Apr-2011 |
Jakob Stoklund Olesen <[email protected]> |
Stop caching basic block index ranges now that SlotIndexes can keep up.
llvm-svn: 128821
|
| #
e991f728 |
| 29-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Recompute register class and hint for registers created during spilling.
The spill weight is not recomputed for an unspillable register - it stays infinite.
llvm-svn: 128490
|
| #
12877b8a |
| 29-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Handle the special case when all uses follow the last split point.
llvm-svn: 128450
|
| #
bd6b86e4 |
| 27-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Amend debug output.
llvm-svn: 128398
|
|
Revision tags: llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2 |
|
| #
35502423 |
| 20-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Process all dead defs after rematerializing during splitting.
llvm-svn: 127973
|
| #
c099dde9 |
| 18-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Be more accurate about the slot index reading a register when dealing with defs and early clobbers.
Assert when trying to find an undefined value.
llvm-svn: 127856
|
| #
8630840c |
| 17-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Dead code elimination may separate the live interval into multiple connected components.
I have convinced myself that it can only happen when a phi value dies. When it happens, allocate new virtual
Dead code elimination may separate the live interval into multiple connected components.
I have convinced myself that it can only happen when a phi value dies. When it happens, allocate new virtual registers for the components.
llvm-svn: 127827
show more ...
|
| #
315b42c3 |
| 17-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Rewrite instructions as part of ConnectedVNInfoEqClasses::Distribute.
llvm-svn: 127779
|
| #
32210de3 |
| 15-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Preserve both isPHIDef and isDefByCopy bits when copying parent values.
llvm-svn: 127697
|
| #
ea5ebfed |
| 08-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Delete dead code after rematerializing.
LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing, splitting, and spilling for dead code elimination. It can delete chains of dead inst
Delete dead code after rematerializing.
LiveRangeEdit::eliminateDeadDefs() will eventually be used by coalescing, splitting, and spilling for dead code elimination. It can delete chains of dead instructions as long as there are no dependency loops.
llvm-svn: 127287
show more ...
|
|
Revision tags: llvmorg-2.9.0-rc1 |
|
| #
27e0a4ab |
| 05-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Work around a coalescer bug.
The coalescer can in very rare cases leave too large live intervals around after rematerializing cheap-as-a-move instructions.
Linear scan doesn't really care, but live
Work around a coalescer bug.
The coalescer can in very rare cases leave too large live intervals around after rematerializing cheap-as-a-move instructions.
Linear scan doesn't really care, but live range splitting gets very confused when a live range is killed by a ghost instruction.
I will fix this properly in the coalescer after 2.9 branches.
llvm-svn: 127096
show more ...
|
| #
d4f78895 |
| 04-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Tweak debug output. No functional changes.
llvm-svn: 127006
|
| #
1a69e233 |
| 04-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Use an IndexedMap instead of a DenseMap for the live-out cache.
This speeds up updateSSA() so it only accounts for 5% of the live range splitting time.
llvm-svn: 126972
|
| #
9a6382fc |
| 03-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Cache basic block bounds instead of asking SlotIndexes::getMBBRange all the time.
This speeds up the greedy register allocator by 15%. DenseMap is not as fast as one might hope.
llvm-svn: 126921
|
| #
c9601988 |
| 03-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Change the SplitEditor interface to a single instance can be shared for multiple splits.
llvm-svn: 126912
|
| #
5ea0712e |
| 03-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Only run the updateSSA loop when we have actually seen multiple values.
When only a single value has been seen, new PHIDefs are never needed.
llvm-svn: 126911
|
| #
815196ca |
| 02-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Turn the Edit member into a pointer so it can change dynamically.
No functional change.
llvm-svn: 126898
|
| #
503b143a |
| 02-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Transfer simply defined values directly without recomputing liveness and SSA.
Values that map to a single new value in a new interval after splitting don't need new PHIDefs, and if the parent value
Transfer simply defined values directly without recomputing liveness and SSA.
Values that map to a single new value in a new interval after splitting don't need new PHIDefs, and if the parent value was never rematerialized the live range will be the same.
llvm-svn: 126894
show more ...
|
| #
3648263a |
| 02-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Extract a method. No functional change.
llvm-svn: 126893
|
| #
48af8923 |
| 02-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Move extendRange() into SplitEditor and delete the LiveRangeMap class.
Extract the updateSSA() method from the too long extendRange().
LiveOutCache can be shared among all the new intervals since t
Move extendRange() into SplitEditor and delete the LiveRangeMap class.
Extract the updateSSA() method from the too long extendRange().
LiveOutCache can be shared among all the new intervals since there is at most one of the new ranges live out from each basic block.
llvm-svn: 126818
show more ...
|