- Mar 29, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 128450
-
- Mar 28, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 128398
-
- Mar 20, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127973
-
- Mar 18, 2011
-
-
Jakob Stoklund Olesen authored
and early clobbers. Assert when trying to find an undefined value. llvm-svn: 127856
-
- Mar 17, 2011
-
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
llvm-svn: 127779
-
- Mar 15, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127697
-
- Mar 08, 2011
-
-
Jakob Stoklund Olesen authored
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
-
- Mar 05, 2011
-
-
Jakob Stoklund Olesen authored
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
-
- Mar 04, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 127006
-
Jakob Stoklund Olesen authored
This speeds up updateSSA() so it only accounts for 5% of the live range splitting time. llvm-svn: 126972
-
- Mar 03, 2011
-
-
Jakob Stoklund Olesen authored
This speeds up the greedy register allocator by 15%. DenseMap is not as fast as one might hope. llvm-svn: 126921
-
Jakob Stoklund Olesen authored
llvm-svn: 126912
-
Jakob Stoklund Olesen authored
When only a single value has been seen, new PHIDefs are never needed. llvm-svn: 126911
-
Jakob Stoklund Olesen authored
No functional change. llvm-svn: 126898
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
llvm-svn: 126893
-
- Mar 02, 2011
-
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
Simplify the signature - The return value and ParentVNI are no longer needed. llvm-svn: 126809
-
Jakob Stoklund Olesen authored
This method could probably be used by LiveIntervalAnalysis::shrinkToUses, and now it can use extendIntervalEndTo() which coalesces ranges. llvm-svn: 126803
-
Jakob Stoklund Olesen authored
llvm-svn: 126801
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
Local live range splitting is better driven by interference. This code was just guessing. llvm-svn: 126799
-
- Feb 23, 2011
-
-
Jakob Stoklund Olesen authored
No code will be inserted after the split point anyway. llvm-svn: 126319
-
- Feb 22, 2011
-
-
Jakob Stoklund Olesen authored
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
-
- Feb 19, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 126005
-
Jakob Stoklund Olesen authored
llvm-svn: 126003
-
- Feb 10, 2011
-
-
Jakob Stoklund Olesen authored
Loop splitting is better handled by the more generic global region splitting based on the edge bundle graph. llvm-svn: 125243
-
Jakob Stoklund Olesen authored
This fixes a bug where splitSingleBlocks() could split a live range after a terminator instruction. llvm-svn: 125237
-
- Feb 09, 2011
-
-
Jakob Stoklund Olesen authored
No functional changes intended. llvm-svn: 125231
-
Jakob Stoklund Olesen authored
llvm-svn: 125226
-
- Feb 08, 2011
-
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
llvm-svn: 125101
-
- Feb 04, 2011
-
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
llvm-svn: 124842
-
- Feb 03, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 124813
-
Jakob Stoklund Olesen authored
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
-
Jakob Stoklund Olesen authored
These end points come from the inserted copies, and can be passed directly to useIntv. This simplifies the coloring code. llvm-svn: 124799
-
Eric Christopher authored
llvm-svn: 124779
-
Eric Christopher authored
llvm-svn: 124778
-