summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Add a flag to disable jump table generation (allDale Johannesen2008-07-311-2/+3
| | | | | | | | switches use the binary search algorithm) for environments that don't support it. PPC64 JIT is such an environment; turn the flag on for that. llvm-svn: 54248
* Improve dagcombining for sext-loads and sext-in-reg nodes.Dan Gohman2008-07-311-9/+21
| | | | llvm-svn: 54239
* Move SelectionDAG::viewGraph() out of line; as an inline functionDan Gohman2008-07-301-0/+5
| | | | | | it isn't always visible to gdb. llvm-svn: 54228
* Don't look for leaf values to store when lowering stores ofDan Gohman2008-07-301-2/+6
| | | | | | empty structs. This fixes PR2612. llvm-svn: 54226
* Use existing LiveInterval methods to simplify live interval merging. Thanks ↵Owen Anderson2008-07-301-31/+32
| | | | | | to Evan for pointing these out. llvm-svn: 54225
* Value numbers whose def index is a special sentinel value should not be ↵Owen Anderson2008-07-301-11/+13
| | | | | | remapped. llvm-svn: 54218
* More fixes for corner cases when remapping live range indices.Owen Anderson2008-07-301-10/+10
| | | | llvm-svn: 54186
* When merging live intervals, we also need to merge in any live ranges that ↵Owen Anderson2008-07-301-13/+42
| | | | | | | | are inputs to two-address instructions that themselves define a range we already care about. llvm-svn: 54185
* When merging a PHI operand's live interval into the PHI's live interval, we ↵Owen Anderson2008-07-291-9/+17
| | | | | | | | need to merge over all liveranges in the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI. llvm-svn: 54174
* Don't decrement the BB remap when we don't need to.Owen Anderson2008-07-291-8/+4
| | | | llvm-svn: 54173
* Fix PR2609. If a label is deleted, then it needsDuncan Sands2008-07-291-4/+3
| | | | | | | | to be marked invalid regardless of whether it is a debug, an exception handling or (hopefully) a GC label. llvm-svn: 54172
* Fix broken CellSPU lowering, re-instate braces in LegalizeNate Begeman2008-07-291-4/+2
| | | | llvm-svn: 54168
* Disable a fix in the previous patch, since it breaks CellSPU.Nate Begeman2008-07-291-2/+4
| | | | | | | The CellSPU codegen is broken, but needs to be fixed before we can put this back in. llvm-svn: 54164
* Add vector shifts to the IR, patch by Eli Friedman.Nate Begeman2008-07-292-8/+22
| | | | | | CodeGen & Clang work coming next. llvm-svn: 54161
* Fold the useful features of alist and alist_node into ilist, andDan Gohman2008-07-286-116/+78
| | | | | | | | | | | | | | | | a new ilist_node class, and remove them. Unlike alist_node, ilist_node doesn't attempt to manage storage itself, so it avoids the associated problems, including being opaque in gdb. Adjust the Recycler class so that it doesn't depend on alist_node. Also, change it to use explicit Size and Align parameters, allowing it to work when the largest-sized node doesn't have the greatest alignment requirement. Change MachineInstr's MachineMemOperand list from a pool-backed alist to a std::list for now. llvm-svn: 54146
* Fix a typo in a comment.Dan Gohman2008-07-281-1/+1
| | | | llvm-svn: 54136
* Make the ScheduleDAG's GraphRoot edge be blue and dashed too, likeDan Gohman2008-07-271-1/+2
| | | | | | the SelectionDAG's. llvm-svn: 54129
* Rename SDOperand to SDValue.Dan Gohman2008-07-2714-2610/+2604
| | | | llvm-svn: 54128
* Tidy SDNode::use_iterator, and complete the transition to have itDan Gohman2008-07-275-55/+46
| | | | | | | parallel its analogue, Value::value_use_iterator. The operator* method now returns the user, rather than the use. llvm-svn: 54127
* Rename isOnlyUseOf to isOnlyUserOf.Dan Gohman2008-07-271-2/+2
| | | | llvm-svn: 54124
* Some binary operations were being treated asDuncan Sands2008-07-272-21/+30
| | | | | | | unary operations! Add support for softening some additional unary operations like fp_to_sint. llvm-svn: 54122
* Fix the issues originally addressed in r54070. After thinking about it some ↵Owen Anderson2008-07-251-2/+19
| | | | | | | | | | more, I realized that the right thing to do is to have StrongPHIElimination use its knowledge of the PHIs before they're erased to update the intervals appropriate. This is both simpler and more accurate than the alternative, which was having LIA figure it out when it renumbered things, plus it's just the right thing to do! llvm-svn: 54077
* Revert my previous patch. In retrospect, this is completely the wrong way ↵Owen Anderson2008-07-251-66/+15
| | | | | | to fix this problem. llvm-svn: 54072
* Special cases are needed in renumbering when dealing with renumbering after ↵Owen Anderson2008-07-251-15/+66
| | | | | | | | | a PHI has been removed. The interval previously defined by the PHI needs to be extended to the beginning of its basic block, and the intervals that were inputs need to be trimmed to the end of their basic blocks. llvm-svn: 54070
* In order to avoid reprocessing a register more than once, we need to add itOwen Anderson2008-07-251-1/+1
| | | | | | to the handled set so it will get filtered out in future iterations. llvm-svn: 54065
* Remove live interval entries for an interval if we're eliminating its only VN.Owen Anderson2008-07-251-1/+6
| | | | llvm-svn: 54062
* Properly remap live ranges whose end indices are the end of the function.Owen Anderson2008-07-251-4/+13
| | | | llvm-svn: 54061
* Make the remapping of interval indices (particularly ending indices) more ↵Owen Anderson2008-07-251-10/+15
| | | | | | | | | robust. This is tricky business, and will probably take a few more iterations to get the last kinks out of it. llvm-svn: 54043
* Disable the new aggressive remat logic introduced in 54000; it causes someDan Gohman2008-07-251-0/+4
| | | | | | | regressions, such as PR2595. Also, there is a significant code-quality issue in SPEC 464.h264ref and a few others. llvm-svn: 54014
* When splitting a vector shuffle, fixed which type we used for the hi partMon P Wang2008-07-251-1/+1
| | | | llvm-svn: 54007
* Use AliasAnalysis::pointsToConstantMemory in SDISel to avoid unnecessaryDan Gohman2008-07-251-7/+15
| | | | | | | dependencies with constant load nodes. This allows them to be scheduled freely. llvm-svn: 54001
* Enable rematerialization of constants using ↵Dan Gohman2008-07-252-15/+109
| | | | | | | | | | AliasAnalysis::pointsToConstantMemory, and knowledge of PseudoSourceValues. This unfortunately isn't sufficient to allow constants to be rematerialized in PIC mode -- the extra indirection is a complication. llvm-svn: 54000
* Store the predecessor MBB in the PHIUnion, rather than an index, since the ↵Owen Anderson2008-07-241-26/+28
| | | | | | indices will change after renumbering. llvm-svn: 53985
* Enable the insertion of empty indices into LiveInterals, thereby making ↵Owen Anderson2008-07-231-70/+80
| | | | | | renumbering possible. llvm-svn: 53961
* Fix a compile-time regression introduced by my heuristic-changing patch. I ↵Owen Anderson2008-07-234-4/+5
| | | | | | | | | forgot to multiply the instruction count by a constant factor in a few places, which caused the register allocator to require many more iterations. llvm-svn: 53959
* Enable first-class aggregates support.Dan Gohman2008-07-231-20/+0
| | | | | | | | | | | | Remove the GetResultInst instruction. It is still accepted in LLVM assembly and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove support for return instructions with multiple values. These are auto-upgraded to use InsertValueInst instructions. The IRBuilder still accepts multiple-value returns, and auto-upgrades them to InsertValueInst instructions. llvm-svn: 53941
* LegalizeTypes support for VSETCC. Fixes PR2575.Duncan Sands2008-07-222-9/+38
| | | | llvm-svn: 53938
* Change the heuristics used in the coalescer, register allocator, and withinOwen Anderson2008-07-224-11/+16
| | | | | | | live intervals itself to use an instruction count approximation that is not affected by inserting empty indices. llvm-svn: 53937
* Fix pr2566: incorrect assumption about bit_convert. It doesn't not have to ↵Evan Cheng2008-07-221-1/+2
| | | | | | output a vector value. Patch by Nicolas Capens! llvm-svn: 53932
* Make the GraphRoot edge look like a chain edge, which is more accurate,Dan Gohman2008-07-221-1/+2
| | | | | | | and use the right result number, in the off chance that the graph root has multiple result values. llvm-svn: 53923
* Another buildbot test commit.Bill Wendling2008-07-221-2/+1
| | | | llvm-svn: 53896
* Trivial check-in to test buildbot. No functionality change.Bill Wendling2008-07-221-3/+4
| | | | llvm-svn: 53889
* Fix grammaros in comments.Dan Gohman2008-07-211-2/+2
| | | | llvm-svn: 53884
* Enhance the GraphWriter support for edge destinations, and teach theDan Gohman2008-07-211-6/+31
| | | | | | | | SelectionDAG graph writer to make use of them. Now, nodes with multiple values are displayed as such, with incoming edges pointing to the specific value they use. llvm-svn: 53875
* After early-lowering the FORMAL_ARGUMENTS node, delete it.Dan Gohman2008-07-211-0/+7
| | | | llvm-svn: 53874
* Add titles to the various SelectionDAG viewGraph callsDan Gohman2008-07-215-52/+64
| | | | | | | that include useful information like the name of the block being viewed and the current phase of compilation. llvm-svn: 53872
* Fix uses of underscore-capital names.Dan Gohman2008-07-211-2/+2
| | | | llvm-svn: 53870
* Now that the MachineInstr leaks are fixed, enable leak checkingDan Gohman2008-07-211-0/+2
| | | | | | in the MachineInstr clone code. llvm-svn: 53868
* Add VerifyNode, a place to put sanity checks onDuncan Sands2008-07-213-6/+44
| | | | | | | | | | | | generic SDNode's (nodes with their own constructors should do sanity checking in the constructor). Add sanity checks for BUILD_VECTOR and fix all the places that were producing bogus BUILD_VECTORs, as found by "make check". My favorite is the BUILD_VECTOR with only two operands that was being used to build a vector with four elements! llvm-svn: 53850
* Pull r53795 from Gaz into mainline:Bill Wendling2008-07-201-14/+29
| | | | | | | | If .loc and .file aren't used, always emit the "debug_line" section. This requires at least one entry in the line matrix. So if there's nothing to emit into the matrix, emit an end of matrix value anyway. llvm-svn: 53803
OpenPOWER on IntegriCloud