#
7c317300 |
| 07-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Print out MBB number when rewriting.
llvm-svn: 115950
|
#
49715fd4 |
| 07-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Cache interval iterators in SplitEditor::addTruncSimpleRange so we only have to do one find().
llvm-svn: 115929
|
#
9575af4b |
| 07-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Clean up debug printing.
llvm-svn: 115928
|
Revision tags: llvmorg-2.8.0 |
|
#
4d5156c7 |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Count uses in all nested loops, not just the deepest.
llvm-svn: 115710
|
#
56e2925e |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove SplitAnalysis::removeUse. It was only used to make SplitAnalysis reusable, but that is no longer relevant since a split will always replace the original.
llvm-svn: 115709
|
#
0445e2a0 |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
dupli always has an interval now.
llvm-svn: 115708
|
#
2dfa8be2 |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
We can split around loops with multiple exits now.
llvm-svn: 115696
|
#
89d276aa |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Update SplitEditor API to reflect the fact that the original live interval is never kept after splitting.
Keeping the original interval made sense when the split region doesn't modify the register,
Update SplitEditor API to reflect the fact that the original live interval is never kept after splitting.
Keeping the original interval made sense when the split region doesn't modify the register, and the original is spilled. We can get the same effect by detecting reloaded values when spilling around copies.
llvm-svn: 115695
show more ...
|
#
b46d3236 |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Intervals are half-open.
llvm-svn: 115694
|
#
671bab1c |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
When we find a reaching definition, make sure it is visited from all paths by erasing it from the visited set. That ensures we create the right phi defs.
llvm-svn: 115666
|
#
b0cedd5f |
| 05-Oct-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't use nextIndex to check for live out of instruction. Insert copy after defining instruction.
Fix LiveIntervalMap::extendTo to properly handle live segments starting before the current basic blo
Don't use nextIndex to check for live out of instruction. Insert copy after defining instruction.
Fix LiveIntervalMap::extendTo to properly handle live segments starting before the current basic block.
Make sure the open live range is extended to the inserted copy's use slot.
llvm-svn: 115665
show more ...
|
Revision tags: llvmorg-2.8.0-rc3 |
|
#
56495686 |
| 25-Sep-2010 |
Lang Hames <lhames@gmail.com> |
Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing whether LiveIntervals::getInstructionFromIndex(def) returns NULL.
llvm-svn: 114791
|
#
6f8bd42e |
| 21-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Build the complement interval dupli after the split intervals instead of creating it before and subtracting split ranges.
This way, the SSA update code in LiveIntervalMap can properly create and use
Build the complement interval dupli after the split intervals instead of creating it before and subtracting split ranges.
This way, the SSA update code in LiveIntervalMap can properly create and use new phi values in dupli. Now it is possible to create split regions where a value escapes along two different CFG edges, creating phi values outside the split region.
This is a work in progress and probably quite broken.
llvm-svn: 114492
show more ...
|
Revision tags: llvmorg-2.8.0-rc2 |
|
#
9855109b |
| 16-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Use the value mapping provided by LiveIntervalMap. This simplifies the code a great deal because we don't have to worry about maintaining SSA form.
Unconditionally copy back to dupli when the regist
Use the value mapping provided by LiveIntervalMap. This simplifies the code a great deal because we don't have to worry about maintaining SSA form.
Unconditionally copy back to dupli when the register is live out of the split range, even if the live-out value was defined outside the range. Skipping the back-copy only makes sense when the live range is going to spill outside the split range, and we don't know that it will. Besides, this was a hack to avoid SSA update issues.
Clear up some confusion about the end point of a half-open LiveRange. Methinks LiveRanges need to be closed so both start and end are included in the range. The low bits of a SlotIndex are symbolic, so a half-open range doesn't really make sense. This would be a pervasive change, though.
llvm-svn: 114043
show more ...
|
#
614e1393 |
| 13-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Mechanically replace LiveInterval* with LiveIntervalMap for intervals being edited without actually using LiveIntervalMap functionality.
llvm-svn: 113816
|
#
36dad6db |
| 13-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Allow LiveIntervalMap to be reused by resetting the current live interval.
llvm-svn: 113815
|
#
535e8e5f |
| 13-Sep-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Let's just declare that it is impossible to construct a std::pair from a null pointer and work around that.
llvm-svn: 113788
|
Revision tags: llvmorg-2.8.0-rc1, llvmorg-2.8.0-rc0 |
|
#
abca1734 |
| 19-Aug-2010 |
Michael J. Spencer <bigcheesegs@gmail.com> |
Fix the msvc 2010 build.
The Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 implements parts of C++0x based on the draft standard. An old version of the draft had a bug that m
Fix the msvc 2010 build.
The Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 implements parts of C++0x based on the draft standard. An old version of the draft had a bug that makes std::pair<T1*, T2*>(something, 0) fail to compile. This is because the template<class U, class V> pair(U&& x, V&& y) constructor is selected, even though it later fails to implicitly convert U and V to frist_type and second_type.
This has been fixed in n3090, but it seems that Microsoft is not going to update msvc.
llvm-svn: 111535
show more ...
|
#
e98030ad |
| 18-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Thinking about it, we don't need MachineDominatorTree after all. The DomValue map discovers the iterated dominance frontier for free.
llvm-svn: 111400
|
#
f4088b02 |
| 18-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Revert r111394. It was too aggressive.
We must complete the DFS, otherwise we might miss needed phi-defs, and prematurely color live ranges with a non-dominating value.
This is not a big deal since
Revert r111394. It was too aggressive.
We must complete the DFS, otherwise we might miss needed phi-defs, and prematurely color live ranges with a non-dominating value.
This is not a big deal since we get to color more of the CFG and the next mapValue call will be faster.
llvm-svn: 111397
show more ...
|
#
5b4cb084 |
| 18-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Aggressively prune the DFS when inserting phi-defs.
llvm-svn: 111394
|
#
ce6f055b |
| 18-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add the LiveIntervalMap class. Don't hook it up yet.
LiveIntervalMap maps values from a parent LiveInterval to a child interval that is a strict subset. It will create phi-def values as needed to pr
Add the LiveIntervalMap class. Don't hook it up yet.
LiveIntervalMap maps values from a parent LiveInterval to a child interval that is a strict subset. It will create phi-def values as needed to preserve the VNInfo SSA form in the child interval.
This leads to an algorithm very similar to the one in SSAUpdaterImpl.h, but with enough differences that the code can't be reused:
- We don't need to manipulate PHI instructions. - LiveIntervals have kills. - We have MachineDominatorTree. - We can use df_iterator.
llvm-svn: 111393
show more ...
|
#
27e1f265 |
| 13-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Clean up the Spiller.h interface.
The earliestStart argument is entirely specific to linear scan allocation, and can be easily calculated by RegAllocLinearScan.
Replace std::vector with SmallVector
Clean up the Spiller.h interface.
The earliestStart argument is entirely specific to linear scan allocation, and can be easily calculated by RegAllocLinearScan.
Replace std::vector with SmallVector.
llvm-svn: 111055
show more ...
|
#
d1191ee4 |
| 13-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Implement splitting inside a single block.
When a live range is contained a single block, we can split it around instruction clusters. The current approach is very primitive, splitting before and af
Implement splitting inside a single block.
When a live range is contained a single block, we can split it around instruction clusters. The current approach is very primitive, splitting before and after the largest gap between uses.
llvm-svn: 111043
show more ...
|
#
3d1027e7 |
| 13-Aug-2010 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Let LiveInterval::addRange extend existing ranges, it will verify that value numbers match. The old check could accidentally leave holes in openli.
Also let useIntv add all ranges for the phi-def va
Let LiveInterval::addRange extend existing ranges, it will verify that value numbers match. The old check could accidentally leave holes in openli.
Also let useIntv add all ranges for the phi-def value inserted by enterIntvAtEnd. This works as long at the value mapping is established in enterIntvAtEnd.
llvm-svn: 110995
show more ...
|