summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Linux also does not require exception handlingDuncan Sands2008-07-041-3/+1
| | | | | | | | | moves in order to get correct debug info. Since I can't imagine how any target could possibly be any different, I've just stripped out the option: now all the world's like Darwin! llvm-svn: 53134
* Don't return std::vector by value, but pass it in by reference to be filled.Bill Wendling2008-07-032-16/+14
| | | | llvm-svn: 53123
* Revert my previous check-in that split up MachineModuleInfo. It turns out toBill Wendling2008-07-035-649/+831
| | | | | | slow the compiler down at -O0 some 30% or more. Ooops. llvm-svn: 53120
* Backed out 53031.Evan Cheng2008-07-032-19/+12
| | | | llvm-svn: 53110
* - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, ↵Evan Cheng2008-07-035-106/+30
| | | | | | | | propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc. - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list. llvm-svn: 53097
* Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." TheDan Gohman2008-07-031-18/+18
| | | | | | 254.gap failure was not due to this mod. llvm-svn: 53068
* Avoid unnecessarily copying APInt objects.Dan Gohman2008-07-031-3/+3
| | | | llvm-svn: 53065
* Use std::replace instead of std::find and push_back.Evan Cheng2008-07-031-2/+1
| | | | llvm-svn: 53063
* - Add LiveVariables::replaceKillInstruction. This does a subset of ↵Evan Cheng2008-07-032-3/+11
| | | | | | | | instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers. - CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead. llvm-svn: 53061
* Make LiveVariables even more optional, by making it optional in the call to ↵Owen Anderson2008-07-021-46/+1
| | | | | | | | TargetInstrInfo::convertToThreeAddressInstruction Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place. llvm-svn: 53058
* Replace a few uses of SelectionDAG::getTargetNode withDan Gohman2008-07-022-110/+46
| | | | | | | | | | | | SelectionDAG::SelectNodeTo in the instruction selector. This updates existing nodes in place instead of creating new ones. Go back to selecting ISD::DBG_LABEL nodes into TargetInstrInfo::DBG_LABEL nodes instead of leaving them unselected, now that SelectNodeTo allows us to update them in place. llvm-svn: 53057
* Revert r52988. It broke 254.gap on x86-64.Dan Gohman2008-07-021-18/+18
| | | | llvm-svn: 53050
OpenPOWER on IntegriCloud