- Mar 03, 2011
-
-
Jakob Stoklund Olesen authored
When only a single value has been seen, new PHIDefs are never needed. llvm-svn: 126911
-
Jakob Stoklund Olesen authored
We need to wait until we meet a PHIDef in its defining block before resurrecting PHIKills in the predecessors. This should unbreak the llvm-gcc-build-x86_64-darwin10-x-mingw32-x-armeabi bot. llvm-svn: 126905
-
Bob Wilson authored
David Greene changed CannotYetSelect() to print the full DAG including multiple copies of operands reached through different paths in the DAG. Unfortunately this blows up exponentially in some cases. The depth limit of 100 is way too high to prevent this -- I'm seeing a message string of 150MB with a depth of only 40 in one particularly bad case, even though the DAG has less than 200 nodes. Part of the problem is that the printing code is following chain operands, so if you fail to select an operation with a chain, the printer will follow all the chained operations back to the entry node. llvm-svn: 126899
-
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
-
-
Stuart Hastings authored
Radar 9056407. llvm-svn: 126864
-
Cameron Zwarich authored
llvm-svn: 126829
-
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
-
Nick Lewycky authored
llvm-svn: 126815
-
-
Jakob Stoklund Olesen authored
Simplify the signature - The return value and ParentVNI are no longer needed. llvm-svn: 126809
-
Jakob Stoklund Olesen authored
llvm-svn: 126806
-
Jakob Stoklund Olesen authored
llvm-svn: 126805
-
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
-
Jakob Stoklund Olesen authored
This is a waste of time since we already know how to evict all interferences which is a better approach anyway. llvm-svn: 126798
-
- Mar 01, 2011
-
-
Devang Patel authored
llvm-svn: 126794
-
Jakob Stoklund Olesen authored
This effectively disables the 'turbo' functionality of the greedy register allocator where all new live ranges created by splitting would be reconsidered as if they were originals. There are two reasons for doing this, 1. It guarantees that the algorithm terminates. Early versions were prone to infinite looping in certain corner cases. 2. It is a 2x speedup. We can skip a lot of unnecessary interference checks that won't lead to good splitting anyway. The problem is that region splitting only gets one shot, so it should probably be changed to target multiple physical registers at once. Local live range splitting is still 'turbo' enabled. It only accounts for a small fraction of compile time, so it is probably not necessary to do anything about that. llvm-svn: 126781
-
Duncan Sands authored
in alphabetical order. llvm-svn: 126745
-
Jim Grosbach authored
llvm-svn: 126733
-
Jim Grosbach authored
llvm-svn: 126731
-
- Feb 28, 2011
-
-
Owen Anderson authored
llvm-svn: 126684
-
Owen Anderson authored
llvm-svn: 126683
-
Dan Gohman authored
llvm-svn: 126671
-
Stuart Hastings authored
patch to the front-end. Radar 7662569. llvm-svn: 126655
-
- Feb 27, 2011
-
-
Duncan Sands authored
llvm-svn: 126574
-
Nadav Rotem authored
llvm-svn: 126565
-
Tobias Grosser authored
This follows the interface of getNodeAttributes. llvm-svn: 126562
-
- Feb 26, 2011
-
-
Benjamin Kramer authored
Add some DAGCombines for (adde 0, 0, glue), which are useful to optimize legalized code for large integer arithmetic. 1. Inform users of ADDEs with two 0 operands that it never sets carry 2. Fold other ADDs or ADDCs into the ADDE if possible It would be neat if we could do the same thing for SETCC+ADD eventually, but we can't do that in target independent code. llvm-svn: 126557
-
- Feb 25, 2011
-
-
Jim Grosbach authored
llvm-svn: 126526
-
Owen Anderson authored
llvm-svn: 126518
-
Cameron Zwarich authored
llvm-svn: 126488
-
Jim Grosbach authored
llvm-svn: 126471
-
Cameron Zwarich authored
is possible to do better if the high bit is set in either KnownZero/KnownOne, but in practice NumSignBits is always 1 when we are zero extending because nothing is known about that register. llvm-svn: 126465
-
Cameron Zwarich authored
actually larger. llvm-svn: 126464
-
Jakob Stoklund Olesen authored
llvm-svn: 126463
-
Jakob Stoklund Olesen authored
New live ranges are assigned in long -> short order, but live ranges that have been evicted at least once are deferred and assigned in short -> long order. Also disable splitting and spilling for live ranges seen for the first time. The intention is to create a realistic interference pattern from the heavy live ranges before starting splitting and spilling around it. llvm-svn: 126451
-