| #
b0237619 |
| 02-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Rename mapValue to extendRange because that is its function now.
Simplify the signature - The return value and ParentVNI are no longer needed.
llvm-svn: 126809
|
| #
9e326a84 |
| 02-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Move LiveIntervalMap::extendTo into LiveInterval itself.
This method could probably be used by LiveIntervalAnalysis::shrinkToUses, and now it can use extendIntervalEndTo() which coalesces ranges.
l
Move LiveIntervalMap::extendTo into LiveInterval itself.
This method could probably be used by LiveIntervalAnalysis::shrinkToUses, and now it can use extendIntervalEndTo() which coalesces ranges.
llvm-svn: 126803
show more ...
|
| #
2b09bed5 |
| 01-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Delete dead code.
llvm-svn: 126801
|
| #
8ef91fc8 |
| 01-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Move the value map from LiveIntervalMap to SplitEditor.
The value map is currently not used, all values are 'complex mapped' and LiveIntervalMap::mapValue is used to dig them out.
This is the first
Move the value map from LiveIntervalMap to SplitEditor.
The value map is currently not used, all values are 'complex mapped' and LiveIntervalMap::mapValue is used to dig them out.
This is the first step in a series changes leading to the removal of LiveIntervalMap. Its data structures can be shared among all the live intervals created by a split, so it is wasteful to create a copy for each.
llvm-svn: 126800
show more ...
|
| #
977e3d3c |
| 01-Mar-2011 |
Jakob Stoklund Olesen <[email protected]> |
Delete dead code.
Local live range splitting is better driven by interference. This code was just guessing.
llvm-svn: 126799
|
| #
ed172998 |
| 23-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
It is safe to ignore LastSplitPoint when the variable is not live out.
No code will be inserted after the split point anyway.
llvm-svn: 126319
|
| #
60a26a65 |
| 21-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Add SplitKit::isOriginalEndpoint and use it to force live range splitting to terminate.
An original endpoint is an instruction that killed or defined the original live range before any live ranges w
Add SplitKit::isOriginalEndpoint and use it to force live range splitting to terminate.
An original endpoint is an instruction that killed or defined the original live range before any live ranges were split.
When splitting global live ranges, avoid creating local live ranges without any original endpoints. We may still create global live ranges without original endpoints, but such a range won't be split again, and live range splitting still terminates.
llvm-svn: 126151
show more ...
|
| #
f1a60a61 |
| 19-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Give SplitAnalysis a VRM member to access VirtRegMap::getOriginal().
llvm-svn: 126005
|
| #
04aff708 |
| 19-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Missed member rename for naming convention.
llvm-svn: 126003
|
| #
8dafc875 |
| 09-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Delete unused code for analyzing and splitting around loops.
Loop splitting is better handled by the more generic global region splitting based on the edge bundle graph.
llvm-svn: 125243
|
| #
7cb57b30 |
| 09-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Use the LiveBLocks array for SplitEditor::splitSingleBlocks() as well.
This fixes a bug where splitSingleBlocks() could split a live range after a terminator instruction.
llvm-svn: 125237
|
| #
b1b76adb |
| 09-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Move calcLiveBlockInfo() and the BlockInfo struct into SplitAnalysis.
No functional changes intended.
llvm-svn: 125231
|
| #
f6e0394d |
| 09-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Ignore <undef> uses when analyzing and rewriting.
llvm-svn: 125226
|
| #
17499351 |
| 08-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Add SplitEditor::overlapIntv() to create small ranges where both registers are live.
If a live range is used by a terminator instruction, and that live range needs to leave the block on the stack or
Add SplitEditor::overlapIntv() to create small ranges where both registers are live.
If a live range is used by a terminator instruction, and that live range needs to leave the block on the stack or in a different register, it can be necessary to have both sides of the split live at the terminator instruction.
Example:
%vreg2 = COPY %vreg1 JMP %vreg1
Becomes after spilling %vreg2:
SPILL %vreg1 JMP %vreg1
The spill doesn't kill the register as is normally the case.
llvm-svn: 125102
show more ...
|
| #
3d11c8ea |
| 08-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Add assertion.
llvm-svn: 125101
|
| #
096bd883 |
| 04-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Add LiveIntervals::getLastSplitPoint().
A live range cannot be split everywhere in a basic block. A split must go before the first terminator, and if the variable is live into a landing pad, the spl
Add LiveIntervals::getLastSplitPoint().
A live range cannot be split everywhere in a basic block. A split must go before the first terminator, and if the variable is live into a landing pad, the split must happen before the call that can throw.
llvm-svn: 124894
show more ...
|
| #
3295a99f |
| 04-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Skip unused values.
llvm-svn: 124842
|
| #
d8f62e2a |
| 03-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Add debug output and asserts to the phi-connecting code.
llvm-svn: 124813
|
| #
8c025487 |
| 03-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Fix coloring bug when mapping values in the middle of a live-through block.
If the found value is not live-through the block, we should only add liveness up to the requested slot index. When the val
Fix coloring bug when mapping values in the middle of a live-through block.
If the found value is not live-through the block, we should only add liveness up to the requested slot index. When the value is live-through, the whole block should be colored.
Bug found by SSA verification in the machine code verifier.
llvm-svn: 124812
show more ...
|
| #
f12e1207 |
| 03-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Return live range end points from SplitEditor::enter*/leave*.
These end points come from the inserted copies, and can be passed directly to useIntv. This simplifies the coloring code.
llvm-svn: 124
Return live range end points from SplitEditor::enter*/leave*.
These end points come from the inserted copies, and can be passed directly to useIntv. This simplifies the coloring code.
llvm-svn: 124799
show more ...
|
| #
ede62679 |
| 03-Feb-2011 |
Eric Christopher <[email protected]> |
Reapply this.
llvm-svn: 124779
|
| #
21933539 |
| 03-Feb-2011 |
Eric Christopher <[email protected]> |
Temporarily revert 124765 in an attempt to find the cycle breaking bootstrap.
llvm-svn: 124778
|
| #
dca2917e |
| 03-Feb-2011 |
Jakob Stoklund Olesen <[email protected]> |
Defer SplitKit value mapping until all defs are available.
The greedy register allocator revealed some problems with the value mapping in SplitKit. We would sometimes start mapping values before all
Defer SplitKit value mapping until all defs are available.
The greedy register allocator revealed some problems with the value mapping in SplitKit. We would sometimes start mapping values before all defs were known, and that could change a value from a simple 1-1 mapping to a multi-def mapping that requires ssa update.
The new approach collects all defs and register assignments first without filling in any live intervals. Only when finish() is called, do we compute liveness and mapped values. At this time we know with certainty which values map to multiple values in a split range.
This also has the advantage that we can compute live ranges based on the remaining uses after rematerializing at split points.
The current implementation has many opportunities for compile time optimization.
llvm-svn: 124765
show more ...
|
| #
b3089020 |
| 26-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Rename member variables to follow the rest of LLVM. No functional change.
llvm-svn: 124257
|
| #
04e6b3bd |
| 20-Jan-2011 |
Jakob Stoklund Olesen <[email protected]> |
Add LiveIntervalMap::dumpCache() to print out the cache used by the ssa update algorithm.
llvm-svn: 123925
|