summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Add the base ObjC method name to the names lookup table as well.Eric Christopher2011-11-081-0/+6
| | | | llvm-svn: 144105
* Lower mem-ops to unaligned i32/i16 load/stores on ARM where supported.Lang Hames2011-11-081-0/+10
| | | | | | | | Add support for trimming constants to GetDemandedBits. This fixes some funky constant generation that occurs when stores are expanded for targets that don't support unaligned stores natively. llvm-svn: 144102
* Added invariant field to the DAG.getLoad method and changed all calls.Pete Cooper2011-11-0811-64/+86
| | | | | | When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses llvm-svn: 144100
* A few more places where we can avoid multiple size queries.Eric Christopher2011-11-081-7/+7
| | | | llvm-svn: 144099
* Don't evaluate Data.size() on every iteration.Eric Christopher2011-11-081-1/+1
| | | | llvm-svn: 144095
* Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization ↵Eli Friedman2011-11-082-3/+25
| | | | | | | | doesn't get confused by CSE later on. Fixes PR11318. Re-commit of r144034, with an extra fix so that RemoveDeadNode doesn't blow up. llvm-svn: 144055
* Revert r144034 while I try to track down a crash.Eli Friedman2011-11-071-19/+3
| | | | llvm-svn: 144044
* This code is dead, what with the new EH model and the auto-upgraders in place.Bill Wendling2011-11-071-639/+12
| | | | | | Delete! llvm-svn: 144043
* Kill and collapse outstanding DomainValues.Jakob Stoklund Olesen2011-11-071-5/+14
| | | | | | | | | | | | DomainValues that are only used by "don't care" instructions are now collapsed to the first possible execution domain after all basic blocks have been processed. This typically means the PS domain on x86. For example, the vsel_i64 and vsel_double functions in sse2-blend.ll are completely collapsed to the PS domain instead of containing a mix of execution domains created by isel. llvm-svn: 144037
* Add a bunch of calls to RemoveDeadNode in LegalizeDAG, so legalization ↵Eli Friedman2011-11-071-3/+19
| | | | | | doesn't get confused by CSE later on. Fixes PR11318. llvm-svn: 144034
* Add all completed and named types to the dwarf type accelerator tables.Eric Christopher2011-11-072-2/+7
| | | | llvm-svn: 144027
* Use a reverse post order instead of a DFS order.Jakob Stoklund Olesen2011-11-071-6/+5
| | | | | | | | The enterBasicBlock() function is combining live-out values from predecessor blocks. The RPO traversal means that more predecessors have been visited when that happens, only back-edges are missing. llvm-svn: 144025
* Move the hash function to using and taking a StringRef.Eric Christopher2011-11-071-4/+4
| | | | llvm-svn: 144024
* Simple destructor to delete the hash data we created earlier.Eric Christopher2011-11-072-0/+6
| | | | llvm-svn: 144023
* Extract two methods. No functional change.Jakob Stoklund Olesen2011-11-071-18/+26
| | | | llvm-svn: 144020
* MBB doesn't need to be a class member.Jakob Stoklund Olesen2011-11-071-6/+4
| | | | llvm-svn: 144015
* Fix pass name after the source was moved.Jakob Stoklund Olesen2011-11-071-1/+1
| | | | llvm-svn: 144014
* Use StringRef::startswith to do some string comparisons.Eric Christopher2011-11-071-5/+2
| | | | llvm-svn: 143982
* Avoid the use of a local temporary for comment twines.Eric Christopher2011-11-071-6/+3
| | | | llvm-svn: 143974
* Allow for the case where the name of the subprogram is "".Eric Christopher2011-11-071-0/+1
| | | | | | Fixes a self-host error. llvm-svn: 143970
* Don't introduce custom nodes after legalization in TargetLowering::BuildSDIV()Richard Osborne2011-11-072-10/+16
| | | | | | and TargetLowering::BuildUDIV(). Fixes PR11283 llvm-svn: 143964
* Remove unnecessary addition to API. Replace with something much simpler.Eric Christopher2011-11-073-13/+1
| | | | llvm-svn: 143925
* Add new files to cmake.Eric Christopher2011-11-071-0/+1
| | | | llvm-svn: 143924
* Add the support code to enable the dwarf accelerator tables. Upcoming patchesEric Christopher2011-11-075-6/+224
| | | | | | | | to fix the types section (all types, not just global types), and testcases. The code to do the final emission is disabled by default. llvm-svn: 143923
* Add a new dwarf accelerator table prototype with the goal of replacingEric Christopher2011-11-072-0/+504
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the pubnames and pubtypes tables. LLDB can currently use this format and a full spec is forthcoming and submission for standardization is planned. A basic summary: The dwarf accelerator tables are an indirect hash table optimized for null lookup rather than access to known data. They are output into an on-disk format that looks like this: .-------------. | HEADER | |-------------| | BUCKETS | |-------------| | HASHES | |-------------| | OFFSETS | |-------------| | DATA | `-------------' where the header contains a magic number, version, type of hash function, the number of buckets, total number of hashes, and room for a special struct of data and the length of that struct. The buckets contain an index (e.g. 6) into the hashes array. The hashes section contains all of the 32-bit hash values in contiguous memory, and the offsets contain the offset into the data area for the particular hash. For a lookup example, we could hash a function name and take it modulo the number of buckets giving us our bucket. From there we take the bucket value as an index into the hashes table and look at each successive hash as long as the hash value is still the same modulo result (bucket value) as earlier. If we have a match we look at that same entry in the offsets table and grab the offset in the data for our final match. llvm-svn: 143921
* Expose a way to get the beginning of the dwarf string section.Eric Christopher2011-11-072-12/+23
| | | | llvm-svn: 143920
* Fix up comment.Eric Christopher2011-11-071-1/+1
| | | | llvm-svn: 143919
* Typo.Eric Christopher2011-11-071-1/+1
| | | | llvm-svn: 143918
* Add an option to pad an uleb128 to MCObjectWriter and remove the uleb128 ↵Benjamin Kramer2011-11-051-35/+2
| | | | | | | | encoding from the DWARF asm printer. As a side effect we now print dwarf ulebs with .ascii directives. llvm-svn: 143809
* Add more PRI.64 macros for MSVC and use them throughout the codebase.Benjamin Kramer2011-11-052-3/+4
| | | | llvm-svn: 143799
* Added missing &. Fixes <rdar://problem/10393723>Pete Cooper2011-11-041-1/+1
| | | | llvm-svn: 143753
* Emit declarations before definitions if they are available. This causes ↵Rafael Espindola2011-11-041-6/+18
| | | | | | | | DW_AT_specification to point back in the file in the included testcase. Fixes PR11300. llvm-svn: 143726
* Reapply r143206, with fixes. Disallow physical register lifetimesDan Gohman2011-11-034-518/+454
| | | | | | | across calls, and only check for nested dependences on the special call-sequence-resource register. llvm-svn: 143660
* Reverted r143600 - selector reference changePete Cooper2011-11-031-15/+0
| | | | llvm-svn: 143646
* build: Add initial cut at LLVMBuild.txt files.Daniel Dunbar2011-11-033-0/+69
| | | | llvm-svn: 143634
* Treat objc selector reference globals as invariant so that MachineLICM can ↵Pete Cooper2011-11-031-0/+15
| | | | | | hoist them out of loops. Fixes <rdar://problem/6027699> llvm-svn: 143600
* An array of chars of length 8 will also cause the stack protector to be insertedBill Wendling2011-11-021-1/+1
| | | | | | | | into the function. Reflect that here so that the array will be placed next to the SP. <rdar://problem/10128329> llvm-svn: 143590
* Don't emit a directory entry for the value in DW_AT_comp_dir, that is alwaysNick Lewycky2011-11-022-4/+12
| | | | | | implied by directory index zero. llvm-svn: 143570
* Begin collecting some of the statistics for block placement discussed onChandler Carruth2011-11-023-0/+92
| | | | | | | | | | | | | the mailing list. Suggestions for other statistics to collect would be awesome. =] Currently these are implemented as a separate pass guarded by a separate flag. I'm not thrilled by that, but I wanted to be able to collect the statistics for the old code placement as well as the new in order to have a point of comparison. I'm planning on folding them into the single pass if / when there is only one pass of interest. llvm-svn: 143537
* Update split candidate correctly when interference cache is full.Jakob Stoklund Olesen2011-11-011-0/+2
| | | | | | No test case, spotted by inspection. llvm-svn: 143407
* Cleanup. Document. Make sure that this build_vector optimization only runs ↵Nadav Rotem2011-10-311-16/+29
| | | | | | before the op legalizer and that the used type is legal. llvm-svn: 143358
* Silence compiler warning.Benjamin Kramer2011-10-301-4/+4
| | | | llvm-svn: 143308
* Add a new DAGCombine optimization for BUILD_VECTOR.Nadav Rotem2011-10-291-0/+83
| | | | | | | If all of the inputs are zero/any_extended, create a new simple BV which can be further optimized by other BV optimizations. llvm-svn: 143297
* Revert r143206, as there are still some failing tests.Dan Gohman2011-10-294-436/+518
| | | | llvm-svn: 143262
* Reapply r143177 and r143179 (reverting r143188), with schedulerDan Gohman2011-10-284-518/+436
| | | | | | | | | fixes: Use a separate register, instead of SP, as the calling-convention resource, to avoid spurious conflicts with actual uses of SP. Also, fix unscheduling of calling sequences, which can be triggered by pseudo-two-address dependencies. llvm-svn: 143206
* Dwarf: [PR11022] Fix emitting DW_AT_const_value(>i64), to be ↵NAKAMURA Takumi2011-10-281-7/+9
| | | | | | | | | | | host-endian-neutral. Don't assume APInt::getRawData() would hold target-aware endianness nor host-compliant endianness. rawdata[0] holds most lower i64, even on big endian host. FIXME: Add a testcase for big endian target. FIXME: Ditto on CompileUnit::addConstantFPValue() ? llvm-svn: 143194
* Use BranchProbability compare operators.Benjamin Kramer2011-10-281-8/+3
| | | | llvm-svn: 143190
* Speculatively disable Dan's commits 143177 and 143179 to see ifDuncan Sands2011-10-284-407/+516
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | it fixes the dragonegg self-host (it looks like gcc is miscompiled). Original commit messages: Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW on every node as it legalizes them. This makes it easier to use hasOneUse() heuristics, since unneeded nodes can be removed from the DAG earlier. Make LegalizeOps visit the DAG in an operands-last order. It previously used operands-first, because LegalizeTypes has to go operands-first, and LegalizeTypes used to be part of LegalizeOps, but they're now split. The operands-last order is more natural for several legalization tasks. For example, it allows lowering code for nodes with floating-point or vector constants to see those constants directly instead of seeing the lowered form (often constant-pool loads). This makes some things somewhat more complicated today, though it ought to allow things to be simpler in the future. It also fixes some bugs exposed by Legalizing using RAUW aggressively. Remove the part of LegalizeOps that attempted to patch up invalid chain operands on libcalls generated by LegalizeTypes, since it doesn't work with the new LegalizeOps traversal order. Instead, define what LegalizeTypes is doing to be correct, and transfer the responsibility of keeping calls from having overlapping calling sequences into the scheduler. Teach the scheduler to model callseq_begin/end pairs as having a physical register definition/use to prevent calls from having overlapping calling sequences. This is also somewhat complicated, though there are ways it might be simplified in the future. This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others. Please direct high-level questions about this patch to management. Delete #if 0 code accidentally left in. llvm-svn: 143188
* Always use the string pool, even when it makes the .o larger. This may helpNick Lewycky2011-10-283-60/+11
| | | | | | | tools that read the debug info in the .o files by making the DIE sizes more consistent. llvm-svn: 143186
* Delete #if 0 code accidentally left in.Dan Gohman2011-10-281-17/+0
| | | | llvm-svn: 143179
OpenPOWER on IntegriCloud