summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Change the SplitEditor interface to a single instance can be shared for ↵Jakob Stoklund Olesen2011-03-033-41/+51
| | | | | | multiple splits. llvm-svn: 126912
* Only run the updateSSA loop when we have actually seen multiple values.Jakob Stoklund Olesen2011-03-031-3/+23
| | | | | | When only a single value has been seen, new PHIDefs are never needed. llvm-svn: 126911
* Fix PHI handling in LiveIntervals::shrinkToUses().Jakob Stoklund Olesen2011-03-031-1/+1
| | | | | | | | | 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
* Avoid exponential blow-up when printing DAGs.Bob Wilson2011-03-021-2/+5
| | | | | | | | | | | | | 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
* Turn the Edit member into a pointer so it can change dynamically.Jakob Stoklund Olesen2011-03-022-44/+44
| | | | | | No functional change. llvm-svn: 126898
* Transfer simply defined values directly without recomputing liveness and SSA.Jakob Stoklund Olesen2011-03-023-29/+75
| | | | | | | | 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
* Extract a method. No functional change.Jakob Stoklund Olesen2011-03-022-27/+28
| | | | llvm-svn: 126893
* Can't introduce floating-point immediate constants after legalization.Stuart Hastings2011-03-021-2/+6
| | | | | | Radar 9056407. llvm-svn: 126864
* Fix some typos.Cameron Zwarich2011-03-021-3/+3
| | | | llvm-svn: 126829
* Move extendRange() into SplitEditor and delete the LiveRangeMap class.Jakob Stoklund Olesen2011-03-022-236/+167
| | | | | | | | | 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
* Quiet a compiler warning about unused variable 'ExtVNI'.Nick Lewycky2011-03-021-0/+1
| | | | llvm-svn: 126815
* Catch more cases where 2-address pass should 3-addressify instructions. ↵Evan Cheng2011-03-021-49/+70
| | | | | | rdar://9002648. llvm-svn: 126811
* Rename mapValue to extendRange because that is its function now.Jakob Stoklund Olesen2011-03-022-30/+12
| | | | | | Simplify the signature - The return value and ParentVNI are no longer needed. llvm-svn: 126809
* Simplify LiveIntervals::shrinkToUses() a bit by using the new extendInBlock().Jakob Stoklund Olesen2011-03-021-31/+19
| | | | llvm-svn: 126806
* Fix typo.Jakob Stoklund Olesen2011-03-021-1/+1
| | | | llvm-svn: 126805
* Move LiveIntervalMap::extendTo into LiveInterval itself.Jakob Stoklund Olesen2011-03-023-24/+21
| | | | | | | This method could probably be used by LiveIntervalAnalysis::shrinkToUses, and now it can use extendIntervalEndTo() which coalesces ranges. llvm-svn: 126803
* Delete dead code.Jakob Stoklund Olesen2011-03-012-68/+0
| | | | llvm-svn: 126801
* Move the value map from LiveIntervalMap to SplitEditor.Jakob Stoklund Olesen2011-03-012-86/+84
| | | | | | | | | | | 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
* Delete dead code.Jakob Stoklund Olesen2011-03-012-78/+0
| | | | | | | Local live range splitting is better driven by interference. This code was just guessing. llvm-svn: 126799
* Drop RAGreedy::trySpillInterferences().Jakob Stoklund Olesen2011-03-011-70/+0
| | | | | | | This is a waste of time since we already know how to evict all interferences which is a better approach anyway. llvm-svn: 126798
* If argument numbering is encoded in metadata then emit arguments' debug info ↵Devang Patel2011-03-012-4/+42
| | | | | | in that order. llvm-svn: 126794
* Keep track of which stage produced a live range, and bypass earlier stages ↵Jakob Stoklund Olesen2011-03-011-20/+76
| | | | | | | | | | | | | | | | | | | | | | when revisiting. 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
* Add a few missed unary cases when legalizing vector results. Put some casesDuncan Sands2011-03-011-31/+43
| | | | | | in alphabetical order. llvm-svn: 126745
* trailing whitespace.Jim Grosbach2011-03-011-1/+1
| | | | llvm-svn: 126733
* Generalize the register matching code in DAGISel a bit.Jim Grosbach2011-03-011-0/+12
| | | | llvm-svn: 126731
* Use the correct shift amount type.Owen Anderson2011-02-281-1/+1
| | | | llvm-svn: 126684
* Clean whitespace.Owen Anderson2011-02-281-3/+3
| | | | llvm-svn: 126683
* Delete the GEPSplitter experiment.Dan Gohman2011-02-281-12/+0
| | | | llvm-svn: 126671
* Support for byval parameters on ARM. Will be enabled by a forthcomingStuart Hastings2011-02-281-0/+2
| | | | | | patch to the front-end. Radar 7662569. llvm-svn: 126655
* Legalize support for fpextend of vector. PR9309.Duncan Sands2011-02-271-0/+2
| | | | llvm-svn: 126574
* Fix typos in the comments.Nadav Rotem2011-02-271-4/+7
| | | | llvm-svn: 126565
* Pass the graph to the DOTGraphTraits.getEdgeAttributes().Tobias Grosser2011-02-272-2/+4
| | | | | | This follows the interface of getNodeAttributes. llvm-svn: 126562
* Add some DAGCombines for (adde 0, 0, glue), which are useful to optimize ↵Benjamin Kramer2011-02-261-0/+38
| | | | | | | | | | | 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
* Trailing whitespace.Jim Grosbach2011-02-251-5/+5
| | | | llvm-svn: 126526
* Allow targets to specify a the type of the RHS of a shift parameterized on ↵Owen Anderson2011-02-256-96/+117
| | | | | | the type of the LHS. llvm-svn: 126518
* Roll out r126425 and r126450 to see if it fixes the failures on the buildbots.Cameron Zwarich2011-02-255-72/+5
| | | | llvm-svn: 126488
* Fix formatting of debug helper string.Jim Grosbach2011-02-251-1/+1
| | | | llvm-svn: 126471
* Set NumSignBits to 1 if KnownZero/KnownOne are being zero extended. In theory itCameron Zwarich2011-02-251-0/+1
| | | | | | | | 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
* We only want to zero extend the existing information if the bit width isCameron Zwarich2011-02-251-1/+1
| | | | | | actually larger. llvm-svn: 126464
* Try harder to get the hint by preferring to evict hint interference.Jakob Stoklund Olesen2011-02-252-0/+5
| | | | llvm-svn: 126463
* Tweak the register allocator priority queue some more.Jakob Stoklund Olesen2011-02-241-10/+22
| | | | | | | | | | | | 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
* Remove dead variable.Nick Lewycky2011-02-241-1/+1
| | | | llvm-svn: 126450
* Enable DebugInfo support for COFF object files.Devang Patel2011-02-245-4/+71
| | | | | | Patch by Nathan Jeffords! llvm-svn: 126425
* Enable support for vector sext and trunc:Nadav Rotem2011-02-241-10/+17
| | | | | | | | | | Limit the folding of any_ext and sext into the load operation to scalars. Limit the active-bits trunc optimization to scalars. Document vector trunc and vector sext in LangRef. Similar to commit 126080 (for enabling zext). llvm-svn: 126424
* Fix llvm-gcc bootstrap with gnu ld.Rafael Espindola2011-02-241-0/+7
| | | | | | | | | | | The problem was codegen guessing the wrong values and printing .section .eh_frame,"aMS",@progbits,4 It is not clear at all if Codegen should try to guess, MC is the one that should know the default flags. llvm-svn: 126421
* Do not use DIFactory.Devang Patel2011-02-241-3/+4
| | | | llvm-svn: 126397
* Merge information about the number of zero, one, and sign bits of live-outCameron Zwarich2011-02-242-1/+122
| | | | | | | registers at phis. This enables us to eliminate a lot of pointless zexts during the DAGCombine phase. This fixes <rdar://problem/8760114>. llvm-svn: 126380
* Add a getNumSignBits() method to APInt.Cameron Zwarich2011-02-241-6/+1
| | | | llvm-svn: 126379
* Add a mechanism for invalidating the LiveOutInfo of a PHI, and use it wheneverCameron Zwarich2011-02-241-1/+18
| | | | | | a block is visited before all of its predecessors. llvm-svn: 126378
* Track blocks visited in reverse postorder.Cameron Zwarich2011-02-242-0/+5
| | | | llvm-svn: 126377
OpenPOWER on IntegriCloud