summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* hasAnyUseOfValue can check SDUse nodes of its users directly insteadDan Gohman2008-07-091-13/+3
| | | | | | of examining every operand of every user. llvm-svn: 53374
* Move MemoryVT out of LSBaseNode into MemSDNode, allowing theDan Gohman2008-07-091-28/+16
| | | | | | | getMemOperand function to be moved into the base class as well and made non-virtual. llvm-svn: 53372
* Avoid creating expensive comment string if it's not going to be printed.Evan Cheng2008-07-091-1/+4
| | | | llvm-svn: 53369
* Loosen our check here. Local regalloc only cares that the reg is used and ↵Owen Anderson2008-07-091-3/+1
| | | | | | | | def'd by the same instruction, but about the details of the relationship. llvm-svn: 53367
* Move the IsVolatile and SVOffset fields into the MemSDNode baseDan Gohman2008-07-091-0/+11
| | | | | | | | | | class, and store IsVolatile and Alignment in a more compact form. This makes AtomicSDNode slightly larger, but it shrinks LoadSDNode and StoreSDNode, which are much more common and are the largest of the SDNode subclasses. Also, this lets the isVolatile() and getAlignment() accessors be non-virtual. llvm-svn: 53361
* Don't use an expensive check for two-address-ness when we have the ↵Owen Anderson2008-07-091-2/+13
| | | | | | | | information sitting around to determine it much more quickly, This speeds up the local register allocator from 0.37s to 0.31s on instcombine. llvm-svn: 53359
* Factor local liveness computation out into its own function.Owen Anderson2008-07-091-28/+36
| | | | llvm-svn: 53352
* Reuse the MO variable instead of recomputing it in RegAllocLocal.Dan Gohman2008-07-092-9/+9
| | | | | | Keep RegAllocSimple in sync. llvm-svn: 53351
* Give RegAllocSimple a TargetInstrInfo member to keep it consistentDan Gohman2008-07-091-2/+2
| | | | | | with RegAllocLocal. llvm-svn: 53347
* RegAllocLocal has a TargetInstrInfo data member. Use it insteadDan Gohman2008-07-091-5/+1
| | | | | | of having local variables duplicate it. llvm-svn: 53346
* Use find with std::map, when that's what's needed, instead of lower_boundDan Gohman2008-07-092-5/+4
| | | | | | with extra checks. llvm-svn: 53344
* Switch to new section name handling facilityAnton Korobeynikov2008-07-091-4/+7
| | | | llvm-svn: 53316
* Remove some unneeded includes.Duncan Sands2008-07-092-4/+0
| | | | llvm-svn: 53289
* Redo LegalizeTypes soft float support forDuncan Sands2008-07-092-96/+103
| | | | | | | | | SINT_TO_FP and UINT_TO_FP. This now produces the same code as LegalizeDAG (the previous code was based on a mistaken idea of what LegalizeDAG did in this case). llvm-svn: 53288
* Forgot to update the chain result when softeningDuncan Sands2008-07-091-12/+21
| | | | | | loads. llvm-svn: 53287
* LegalizeTypes soft float support for FP_TO_SINT andDuncan Sands2008-07-092-4/+134
| | | | | | FP_TO_UINT. llvm-svn: 53286
* LegalizeTypes support for powi soft float.Duncan Sands2008-07-092-3/+16
| | | | llvm-svn: 53285
* Make the role of MVT::i32 clearer here, and add aDuncan Sands2008-07-091-3/+4
| | | | | | note since it is not clear whether it is correct. llvm-svn: 53284
* Missed alignment argument on stores lowered from memcpy.Evan Cheng2008-07-091-1/+1
| | | | llvm-svn: 53281
* Make the DICountVisitor not a visitor. This keeps us from calling virtualBill Wendling2008-07-091-33/+154
| | | | | | functions and junk. llvm-svn: 53279
* const-ify SelectionDAG::getNodeValueTypes.Dan Gohman2008-07-091-2/+2
| | | | llvm-svn: 53264
* It's no longer necessary to test if a MachineBasicBlock'sDan Gohman2008-07-081-2/+1
| | | | | | parent is non-null. It now always is. llvm-svn: 53263
* Verify that MachineMemOperand alignment is a non-zero power of 2.Dan Gohman2008-07-081-0/+1
| | | | llvm-svn: 53262
* Factor out the code for computing an alignment value, and make itDan Gohman2008-07-081-38/+32
| | | | | | | available to getAtomic in addition to just getLoad and getStore, to prevent MachineMemOperands with 0 alignment. llvm-svn: 53261
* Fix the build. Apparently MachineInstr& is no longer implicitly convertable ↵Owen Anderson2008-07-081-1/+1
| | | | | | to MachineBasicBlock::iterator. llvm-svn: 53260
* Make the local register allocator compute (purely local) liveness ↵Owen Anderson2008-07-081-4/+118
| | | | | | | | | information for itself rather than depending on LiveVariables. This decreases compile time from: 0.5909s (LV + Regalloc) to 0.421s (just regalloc). llvm-svn: 53256
* Remove some dead code.Dale Johannesen2008-07-081-2/+0
| | | | llvm-svn: 53253
* Do not CSE DEBUG_LOC, DBG_LABEL, DBG_STOPPOINT, DECLARE, and EH_LABEL ↵Evan Cheng2008-07-082-45/+74
| | | | | | SDNode's. This improves compile time slightly at -O0 -g. llvm-svn: 53246
* Remove custom expansion from LegalizeTypes when doingDuncan Sands2008-07-084-42/+40
| | | | | | | | | soft float: experiments show that targets aren't expecting this for results or for operands. Add support select/select_cc result soft float and correct operand soft float for these. llvm-svn: 53245
* Add missing select_cc libcall line, somehow omittedDuncan Sands2008-07-081-0/+1
| | | | | | in LegalizeTypes. llvm-svn: 53244
* Unbreak C++ tests on x86 Darwin.Evan Cheng2008-07-081-5/+14
| | | | llvm-svn: 53237
* LegalizeTypes support for FP_ROUND and FP_EXTENDDuncan Sands2008-07-082-2/+46
| | | | | | soft float. llvm-svn: 53231
* Avoid unnecessary string construction during asm printing.Evan Cheng2008-07-081-3/+7
| | | | llvm-svn: 53215
* Pool-allocation for MachineInstrs, MachineBasicBlocks, andDan Gohman2008-07-0710-122/+207
| | | | | | | | | | | MachineMemOperands. The pools are owned by MachineFunctions. This drastically reduces the number of calls to malloc/free made during the "Emit" phase of scheduling, as well as later phases in CodeGen. Combined with other changes, this speeds up the "instruction selection" phase of CodeGen by 10% in some cases. llvm-svn: 53212
* Pool-allocation for SDNodes. The pool is allocated once for each function,Dan Gohman2008-07-072-88/+153
| | | | | | | | | and reused across SelectionDAGs. This drastically reduces the number of calls to malloc/free made during instruction selection, and improves memory locality. llvm-svn: 53211
* Use the canonical way to get an empty structure.Bill Wendling2008-07-071-3/+2
| | | | llvm-svn: 53206
* Use StringMap for greater justice!Bill Wendling2008-07-071-1/+1
| | | | llvm-svn: 53202
* Fix SDNode::MorphNodeTo (a function used by by SelectNodeTo) toDan Gohman2008-07-071-43/+50
| | | | | | | properly track dead nodes that are on the original SDNode's operand list but not the new one, and have no other uses. llvm-svn: 53201
* Move MachineMemOperand's constructor out of line, to avoid aDan Gohman2008-07-071-0/+11
| | | | | | #include dependency on Support/MathExtras.h in the header file. llvm-svn: 53200
* Use of operator* is redundant and confusing here.Dan Gohman2008-07-071-1/+1
| | | | llvm-svn: 53197
* Minor const-correctness fixes.Dan Gohman2008-07-071-1/+1
| | | | llvm-svn: 53196
* Assert that all MachineInstrs update PhysRegUseDefLists inDan Gohman2008-07-071-0/+3
| | | | | | their cleanup code. llvm-svn: 53194
* Remove most of the uses of SDOperandPtr, usually replacing it with aDan Gohman2008-07-071-38/+69
| | | | | | | | | | | | | | simple const SDOperand*, which is what's usually needed. For AddNodeIDOperands, which is small, just duplicate the function to accept an SDUse*. For SelectionDAG::getNode - Add an overload that accepts SDUse* that copies the operands into a temporary SDOperand array, but also has special-case checks for 0 through 3 operands to avoid the copy in the common cases. llvm-svn: 53183
* Add explicit keywords.Dan Gohman2008-07-072-3/+2
| | | | llvm-svn: 53179
* Make DenseMap's insert return a pair, to more closely resemble std::map.Dan Gohman2008-07-072-9/+14
| | | | llvm-svn: 53177
* LegalizeSetCCOperands should legalize the result of ExpandLibCall. Patch by ↵Evan Cheng2008-07-071-1/+1
| | | | | | Richard Osborne. llvm-svn: 53169
* Prevent option name conflict.Bill Wendling2008-07-071-1/+1
| | | | llvm-svn: 53166
* LegalizeTypes soft-float support for stores of aDuncan Sands2008-07-072-0/+20
| | | | | | float value. llvm-svn: 53165
* Fixed generating incorrect aligned stores that I backout of r53031Mon P Wang2008-07-052-12/+19
| | | | | | | | that fixed problems in EmitStackConvert where the source and target type have different alignment by creating a stack slot with the max alignment of source and target type. llvm-svn: 53150
* Rather than having a different custom legalizationDuncan Sands2008-07-045-107/+72
| | | | | | | | | | | | hook for each way in which a result type can be legalized (promotion, expansion, softening etc), just use one: ReplaceNodeResults, which returns a node with exactly the same result types as the node passed to it, but presumably with a bunch of custom code behind the scenes. No change if the new LegalizeTypes infrastructure is not turned on. llvm-svn: 53137
OpenPOWER on IntegriCloud