summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Stop tracking unused registers in VirtRegMap.Jakob Stoklund Olesen2011-11-133-82/+3
| | | | | | | The information was only used by the register allocator in StackSlotColoring. llvm-svn: 144482
* Remove the -color-ss-with-regs option.Jakob Stoklund Olesen2011-11-131-306/+2
| | | | | | | | | It was off by default. The new register allocators don't have the problems that made it necessary to reallocate registers during stack slot coloring. llvm-svn: 144481
* Delete VirtRegRewriter.Jakob Stoklund Olesen2011-11-133-2666/+0
| | | | | | And there was much rejoicing. llvm-svn: 144480
* Switch PBQP to VRM's trivial rewriter.Jakob Stoklund Olesen2011-11-131-4/+1
| | | | | | The very complicated VirtRegRewriter is going away. llvm-svn: 144479
* Delete the old spilling framework from LiveIntervalAnalysis.Jakob Stoklund Olesen2011-11-121-1193/+0
| | | | | | This is dead code, all register allocators use InlineSpiller. llvm-svn: 144478
* Delete the 'standard' spiller with used the old spilling framework.Jakob Stoklund Olesen2011-11-121-45/+2
| | | | | | The current register allocators all use the inline spiller. llvm-svn: 144477
* Switch PBQP to the modern InlineSpiller framework.Jakob Stoklund Olesen2011-11-121-40/+11
| | | | | | | | | | | It is worth noting that the old spiller would split live ranges around basic blocks. The new spiller doesn't do that. PBQP should do its own live range splitting with SplitEditor::splitSingleBlock() if desired. See RAGreedy::tryBlockSplit(). llvm-svn: 144476
* Delete the linear scan register allocator.Jakob Stoklund Olesen2011-11-123-1549/+0
| | | | | | | | | RegAllocGreedy has been the default for six months now. Deleting RegAllocLinearScan makes it possible to also delete VirtRegRewriter and clean up the spiller code. llvm-svn: 144475
* The dwarf standard says that the only differences between a out-of-lineRafael Espindola2011-11-121-0/+7
| | | | | | | | | | | | | | instance and a concrete inlined instance are the use of DW_TAG_subprogram instead of DW_TAG_inlined_subroutine and the who owns the tree. We were also omitting DW_AT_inline from the abstract roots. To fix this, make sure we mark abstract instance roots with DW_AT_inline even when we have only out-of-line instances referring to them with DW_AT_abstract_origin. FileCheck is not a very good tool for tests like this, maybe we should add a -verify mode to llvm-dwarfdump. llvm-svn: 144441
* Don't try to form pre/post-indexed loads/stores until after LegalizeDAG ↵Eli Friedman2011-11-122-11/+11
| | | | | | runs. Fixes PR11029. llvm-svn: 144438
* Some cleanup and bulletproofing for node replacement in LegalizeDAG. To ↵Eli Friedman2011-11-111-57/+59
| | | | | | | | maintain LegalizeDAG invariants, whenever we a node is replaced, we must attempt to delete it, and if it still has uses after it is replaced (which can happen in rare cases due to CSE), we must revisit it. llvm-svn: 144432
* Add a custom safepoint method, in order for language implementers to decide ↵Nicolas Geoffray2011-11-111-2/+15
| | | | | | which machine instruction gets to be a safepoint. llvm-svn: 144399
* Initialize variable.Eric Christopher2011-11-111-1/+2
| | | | llvm-svn: 144360
* If we have a DIE with an AT_specification use that instead of the normalEric Christopher2011-11-111-7/+10
| | | | | | addr DIE when adding to the dwarf accelerator tables. llvm-svn: 144354
* Check in getOrCreateSubprogramDIE if a declaration exists and if so outputRafael Espindola2011-11-102-13/+12
| | | | | | | | it first. This is a more general fix to pr11300. llvm-svn: 144324
* Make types and namespaces take multiple DIEs for the accelerator tablesEric Christopher2011-11-102-14/+24
| | | | | | as well. llvm-svn: 144319
* Move type handling to make sure we get all created types that aren'tEric Christopher2011-11-101-7/+5
| | | | | | forward decls and have names into the dwarf accelerator types table. llvm-svn: 144306
* Rework adding function names to the dwarf accelerator tables, allowEric Christopher2011-11-103-71/+86
| | | | | | multiple dies per function and support C++ basenames. llvm-svn: 144304
* Use a bigger hammer to fix PR11314 by disabling the "forcing two-addressEvan Cheng2011-11-101-1/+5
| | | | | | | | | | | | | | | | instruction lower optimization" in the pre-RA scheduler. The optimization, rather the hack, was done before MI use-list was available. Now we should be able to implement it in a better way, perhaps in the two-address pass until a MI scheduler is available. Now that the scheduler has to backtrack to handle call sequences. Adding artificial scheduling constraints is just not safe. Furthermore, the hack is not taking all the other scheduling decisions into consideration so it's just as likely to pessimize code. So I view disabling this optimization goodness regardless of PR11314. llvm-svn: 144267
* Strip old implicit operands after foldMemoryOperand.Jakob Stoklund Olesen2011-11-101-2/+19
| | | | | | | | | | | | The TII.foldMemoryOperand hook preserves implicit operands from the original instruction. This is not what we want when those implicit operands refer to the register being spilled. Implicit operands referring to other registers are preserved. This fixes PR11347. llvm-svn: 144247
* Add check so we don't try to perform an impossible transformation. Fixes ↵Eli Friedman2011-11-091-1/+2
| | | | | | issue from PR11319. llvm-svn: 144216
* Add comments.Benjamin Kramer2011-11-091-1/+2
| | | | llvm-svn: 144194
* Speculatively revert commit 144124 (djg) in the hope that the 32 bitDuncan Sands2011-11-091-13/+3
| | | | | | | | | | | | | | dragonegg self-host buildbot will recover (it is complaining about object files differing between different build stages). Original commit message: Add a hack to the scheduler to disable pseudo-two-address dependencies in basic blocks containing calls. This works around a problem in which these artificial dependencies can get tied up in calling seqeunce scheduling in a way that makes the graph unschedulable with the current approach of using artificial physical register dependencies for calling sequences. This fixes PR11314. llvm-svn: 144188
* Take advantage of the zero byte in StringMap when emitting dwarf stringpool ↵Benjamin Kramer2011-11-091-2/+3
| | | | | | entries. llvm-svn: 144184
* Remove extra ';'Devang Patel2011-11-091-2/+2
| | | | llvm-svn: 144172
* Remove the pubnames section, no one consumes it.Eric Christopher2011-11-094-75/+3
| | | | llvm-svn: 144169
* Collapse DomainValues across loop back-edges.Jakob Stoklund Olesen2011-11-091-8/+35
| | | | | | | | | | | | | | During the initial RPO traversal of the basic blocks, remember the ones that are incomplete because of back-edges from predecessors that haven't been visited yet. After the initial RPO, revisit all those loop headers so the incoming DomainValues on the back-edges can be properly collapsed. This will properly fix execution domains on software pipelined code, like the included test case. llvm-svn: 144151
* Link to the live DomainValue after merging.Jakob Stoklund Olesen2011-11-091-13/+50
| | | | | | | | | | | | | | | | When merging two uncollapsed DomainValues, place a link to the active DomainValue from the passive DomainValue. This allows old stale references to the passive DomainValue to be updated to point to the active DomainValue. The new resolve() function finds the active DomainValue and updates the pointer. This change makes old live-out lists more useful since they may contain uncollapsed DomainValues that have since been merged into other DomainValues. llvm-svn: 144149
* Track reference count independently from clear().Jakob Stoklund Olesen2011-11-081-4/+4
| | | | | | This allows clear() to be called on a DomainValue with references. llvm-svn: 144147
* Call release() directly when cleaning up the remaining DomainValues.Jakob Stoklund Olesen2011-11-081-5/+3
| | | | | | There is no need to involve the LiveRegs array and kill() any longer. llvm-svn: 144133
* Rename all methods to follow style guide.Jakob Stoklund Olesen2011-11-081-42/+42
| | | | | | No functional change. llvm-svn: 144132
* Handle reference counts in one function: release().Jakob Stoklund Olesen2011-11-081-15/+18
| | | | | | | | | | This new function will decrement the reference count, and collapse a domain value when the last reference is gone. This simplifies DomainValue reference counting, and decouples it from the LiveRegs array. llvm-svn: 144131
* Also add the linkage name to the name accelerator tables if it existsEric Christopher2011-11-082-2/+19
| | | | | | and is different than the normal name. llvm-svn: 144130
* Add a hack to the scheduler to disable pseudo-two-address dependencies inDan Gohman2011-11-081-3/+13
| | | | | | | | | | basic blocks containing calls. This works around a problem in which these artificial dependencies can get tied up in calling seqeunce scheduling in a way that makes the graph unschedulable with the current approach of using artificial physical register dependencies for calling sequences. This fixes PR11314. llvm-svn: 144124
* Clear old DomainValue after merging.Jakob Stoklund Olesen2011-11-081-1/+6
| | | | | | | | | | | | The old value may still be referenced by some live-out list, and we don't wan't to collapse those instructions twice. This fixes the "Can only swizzle VMOVD" assertion in some armv7 SPEC builds. <rdar://problem/10413292> llvm-svn: 144117
* 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
OpenPOWER on IntegriCloud