summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* PR9352: Always emit a relocation for weak symbols. Not emitting relocationsEli Friedman2011-03-031-0/+19
| | | | | | | | for calls to weak symbols with a definition has the appearance of working with LLVM-generated code because weak symbol definitions are put in their own sections. llvm-svn: 126933
* Add a readme entry for the redundant movw issue for pr9370.Bob Wilson2011-03-031-0/+24
| | | | llvm-svn: 126930
* Renumber slot indexes uniformly instead of spacing according to the number ↵Jakob Stoklund Olesen2011-03-031-15/+1
| | | | | | | | | | of defs. There are probably much larger speedups to be had by renumbering locally instead of looping over the whole function. For now, the greedy register allocator is 25% faster. llvm-svn: 126926
* Represent sentinel slot indexes with a null pointer.Jakob Stoklund Olesen2011-03-031-31/+0
| | | | | | | | This is much faster than using a pointer to a ManagedStatic object accessed with a function call. The greedy register allocator is 5% faster overall just from the SlotIndex default constructor savings. llvm-svn: 126925
* Avoid comparing invalid slot indexes, and assert that it doesn't happen.Jakob Stoklund Olesen2011-03-032-5/+3
| | | | | | | The SlotIndex created by the default construction does not represent a position in the function, and it doesn't make sense to compare it to other indexes. llvm-svn: 126924
* Avoid comparing invalid slot indexes.Jakob Stoklund Olesen2011-03-031-4/+6
| | | | llvm-svn: 126922
* Cache basic block bounds instead of asking SlotIndexes::getMBBRange all the ↵Jakob Stoklund Olesen2011-03-033-50/+42
| | | | | | | | | time. This speeds up the greedy register allocator by 15%. DenseMap is not as fast as one might hope. llvm-svn: 126921
* pr9367: Add missing predicated BLX instructions.Bob Wilson2011-03-032-3/+23
| | | | | | Patch by Jyun-Yan You, with some minor adjustments and a testcase from me. llvm-svn: 126915
* 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
* Fixes an assertion failure while disassembling ARM rsbs reg/reg form.Kevin Enderby2011-03-021-0/+13
| | | | | | Patch by Ted Kremenek! llvm-svn: 126895
* 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
* Fixing a bug when printing fpu text to object file. Patch by Mans Rullgard.Renato Golin2011-03-021-1/+1
| | | | llvm-svn: 126882
* Remove DIFactory. Patch by Devang.Duncan Sands2011-03-021-663/+12
| | | | llvm-svn: 126871
* Can't introduce floating-point immediate constants after legalization.Stuart Hastings2011-03-021-2/+6
| | | | | | Radar 9056407. llvm-svn: 126864
* Add Win64 thiscall calling convention.Tilmann Scheller2011-03-025-0/+14
| | | | llvm-svn: 126862
* [AVX] Fix mask predicates for 256-bit UNPCKLPS/D and implementDavid Greene2011-03-024-24/+78
| | | | | | | | | | missing patterns for them. Add a SIMD test subdirectory to hold tests for SIMD instruction selection correctness and quality. ' llvm-svn: 126845
* ptx: fix lint and compiler warningsChe-Liang Chiou2011-03-023-9/+13
| | | | llvm-svn: 126838
* Add 64-bit addressing to PTX backendChe-Liang Chiou2011-03-029-44/+121
| | | | | | | | | | - Add '64bit' sub-target option. - Select 32-bit/64-bit loads/stores based on '64bit' option. - Fix function parameter order. Patch by Justin Holewinski llvm-svn: 126837
* Add a special streamer to libLTO that just records symbols definitions andRafael Espindola2011-03-022-8/+7
| | | | | | | | | | | uses. The result produced by the streamer is used to give the linker more accurate information and to add to llvm.compiler.used. The second improvement removes the need for the user to add __attribute__((used)) to functions only used in inline asm. The first one lets us build firefox with LTO on Darwin :-) llvm-svn: 126830
* Fix some typos.Cameron Zwarich2011-03-021-3/+3
| | | | llvm-svn: 126829
* Remove some more unused code that I missed.Cameron Zwarich2011-03-021-19/+0
| | | | llvm-svn: 126826
* Eliminate the unused CodeGenPrepare option to split critical edges.Cameron Zwarich2011-03-021-128/+1
| | | | llvm-svn: 126825
* Extend initial support for primitive types in PTX backendChe-Liang Chiou2011-03-0210-121/+440
| | | | | | | | | | | | | | - Allow i16, i32, i64, float, and double types, using the native .u16, .u32, .u64, .f32, and .f64 PTX types. - Allow loading/storing of all primitive types. - Allow primitive types to be passed as parameters. - Allow selection of PTX Version and Shader Model as sub-target attributes. - Merge integer/floating-point test cases for load/store. - Use .u32 instead of .s32 to conform to output from NVidia nvcc compiler. Patch by Justin Holewinski llvm-svn: 126824
* 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
* Don't re-use existing addrec expansions if they contain casts.Dan Gohman2011-03-021-1/+2
| | | | | | This fixes PR9259. llvm-svn: 126812
* 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
* Fixes warnings emitted by Visual Studio 2010 compiler.Oscar Fuentes2011-03-011-2/+2
| | | | | | Patch by Erik Olofsson! llvm-svn: 126796
* If argument numbering is encoded in metadata then emit arguments' debug info ↵Devang Patel2011-03-012-4/+42
| | | | | | in that order. llvm-svn: 126794
* Today, the language front ends produces llvm.dbg.* intrinsics, used to ↵Devang Patel2011-03-011-5/+5
| | | | | | | | encode arguments' debug info, in order any way, most of the times. However, if a front end mix-n-matches llvm.dbg.declare and llvm.dbg.value intrinsics to encode debug info for arguments then code generator needs a way to find argument order. Use 8 bits from line number field to keep track of argument ordering while encoding debug info for an argument. That leaves 24 bit for line no, DebugLoc also allocates 24 bit for line numbers. If a function has more than 255 arguments then rest of the arguments will be ordered by llvm.dbg.* intrinsics' ordering in IR. llvm-svn: 126793
* Stop computing the number of uses twice per value in CodeGenPrepare's sinking ofCameron Zwarich2011-03-011-3/+4
| | | | | | | | addressing code. On 403.gcc this almost halves CodeGenPrepare time and reduces total llc time by 9.5%. Unfortunately, getNumUses() is still the hottest function in llc. llvm-svn: 126782
* 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 datalayout information for the IEEE quad precision fp128 type.Duncan Sands2011-03-011-4/+4
| | | | llvm-svn: 126780
* Revert PathV2 changes, as sys::fs::unique_file is not finished yet.Dan Gohman2011-03-011-38/+36
| | | | llvm-svn: 126773
* Added missing va_end().Talin2011-03-011-0/+1
| | | | llvm-svn: 126759
* Add a few missed unary cases when legalizing vector results. Put some casesDuncan Sands2011-03-011-31/+43
| | | | | | in alphabetical order. llvm-svn: 126745
* Make InstCombiner::FoldAndOfICmps create a ConstantRange that's theAnders Carlsson2011-03-011-8/+12
| | | | | | | | | intersection of the LHS and RHS ConstantRanges and return "false" when the range is empty. This simplifies some code and catches some extra cases. llvm-svn: 126744
OpenPOWER on IntegriCloud