summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* 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
* TwoAddressInstructionPass doesn't really require LiveVariables, it just ↵Owen Anderson2008-07-021-14/+67
| | | | | | needs to update it if it's already around. llvm-svn: 53049
* Add a new getMergeValues method that does not needDuncan Sands2008-07-023-32/+27
| | | | | | | | | | to be passed the list of value types, and use this where appropriate. Inappropriate places are where the value type list is already known and may be long, in which case the existing method is more efficient. llvm-svn: 53035
* Fixed problem in EmitStackConvert where the source and target typeMon P Wang2008-07-022-12/+19
| | | | | | | have different alignment by creating a stack slot with the max alignment of source and target type. llvm-svn: 53031
* instead of aborting on shifts of i1, just implicitly fold them.Chris Lattner2008-07-021-1/+7
| | | | | | The dag combiner can produce a shift of i1 when folding icmp i1's. llvm-svn: 53030
* Fix typo compounded by a cut-and-pasto.Duncan Sands2008-07-021-4/+4
| | | | llvm-svn: 53012
* Let AnalyzeNewNode take care of calling ExpungeNode.Duncan Sands2008-07-022-86/+79
| | | | | | | This makes sure that all new nodes are expunged, not just those the top node of a new subtree. llvm-svn: 53011
* - Use a faster priority comparison function if -fast.Evan Cheng2008-07-022-228/+304
| | | | | | - Code clean up. llvm-svn: 53010
* Add a new (simple) StringMap::clear method, patch by PratikChris Lattner2008-07-021-4/+1
| | | | | | Solanki! llvm-svn: 53008
* Use the canonical form for getting an empty structure.Bill Wendling2008-07-021-10/+5
| | | | llvm-svn: 53003
* Sorry. I couldn't sleep at night knowing I put these ugly casts into the ↵Bill Wendling2008-07-022-6/+5
| | | | | | source tree. llvm-svn: 53001
* Darwin doesn't need exception handling information for the "move" info whenBill Wendling2008-07-011-2/+2
| | | | | | debug information is being output, because it's leet! llvm-svn: 52994
* Avoid creating expensive comment string if it's not going to be printed.Evan Cheng2008-07-012-19/+25
| | | | llvm-svn: 52992
* No need to use std::distance. We can just count the number of operandsOwen Anderson2008-07-011-1/+4
| | | | | | much more cheaply. llvm-svn: 52990
* Simplify addRegisterKilled and addRegisterDead.Evan Cheng2008-07-011-18/+18
| | | | llvm-svn: 52988
* - Update comments. Bill Wendling2008-07-012-36/+25
| | | | | | - Don't use GlobalVariable::LinkageTypes when unsigned works. llvm-svn: 52987
* Fix longstanding thinko: don't excludeDale Johannesen2008-07-011-2/+1
| | | | | | | predessors of exit blocks from tail merging consideration. llvm-svn: 52985
* Eliminate a compile time warning.Evan Cheng2008-07-011-1/+1
| | | | llvm-svn: 52982
* Add a version of AsmPrinter::EOL that takes a const char* so that we don't ↵Owen Anderson2008-07-011-0/+11
| | | | | | | | have to do as many implicit std::string constructions. Unfortunately, this doesn't appear to translate to a real speedup in practice. llvm-svn: 52981
* Do run ComputeLiveOutVRegInfo with -fast.Evan Cheng2008-07-011-1/+1
| | | | llvm-svn: 52975
* Do not use computationally expensive scheduling heuristics with -fast.Evan Cheng2008-07-013-50/+59
| | | | llvm-svn: 52971
* Apply Chris' suggestion.Evan Cheng2008-07-011-32/+36
| | | | llvm-svn: 52970
* Minimize duplicated code in AsmPrinter::printLabel.Dan Gohman2008-07-011-2/+1
| | | | llvm-svn: 52944
* Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminatingDan Gohman2008-07-019-45/+67
| | | | | | | | | | | | | | | | the need for a flavor operand, and add a new SDNode subclass, LabelSDNode, for use with them to eliminate the need for a label id operand. Change instruction selection to let these label nodes through unmodified instead of creating copies of them. Teach the MachineInstr emitter how to emit a MachineInstr directly from an ISD label node. This avoids the need for allocating SDNodes for the label id and flavor value, as well as SDNodes for each of the post-isel label, label id, and label flavor. llvm-svn: 52943
* Suppress compiler warning.Evan Cheng2008-06-301-1/+1
| | | | llvm-svn: 52934
* Don't run stack slot coloring if -fast.Evan Cheng2008-06-301-2/+4
| | | | llvm-svn: 52933
* Use a simpler but equivalent form of RecordSource.Dan Gohman2008-06-301-2/+1
| | | | llvm-svn: 52931
OpenPOWER on IntegriCloud