Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Get live interval reconstruction several steps closer to working. | Owen Anderson | 2008-12-31 | 1 | -66/+86 |
| | | | | llvm-svn: 61514 | ||||
* | Linux wants the FDE initial location and address range to be forced to 32-bit. | Bill Wendling | 2008-12-29 | 1 | -2/+4 |
| | | | | | | Darwin doesn't. Make this optional for platforms. llvm-svn: 61484 | ||||
* | The FDE initial location and address range data should be free to be 64-bit | Bill Wendling | 2008-12-29 | 1 | -2/+2 |
| | | | | | | (quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin. llvm-svn: 61483 | ||||
* | Add braces, as suggested by a gcc warning. | Duncan Sands | 2008-12-29 | 1 | -4/+6 |
| | | | | llvm-svn: 61465 | ||||
* | Teach LeaglizeDAG that i64 mul can be a libcall. | Scott Michel | 2008-12-29 | 1 | -0/+2 |
| | | | | llvm-svn: 61463 | ||||
* | Fix up kill/dead marking in the new live interval reconstruction code. | Owen Anderson | 2008-12-28 | 1 | -6/+18 |
| | | | | llvm-svn: 61460 | ||||
* | Add prototype code for recomputing a live interval's ranges and valnos ↵ | Owen Anderson | 2008-12-28 | 1 | -1/+260 |
| | | | | | | through recursive phi construction. llvm-svn: 61458 | ||||
* | Darwin likes for the EH frame to be non-local. | Bill Wendling | 2008-12-24 | 1 | -4/+16 |
| | | | | llvm-svn: 61420 | ||||
* | GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sure | Bill Wendling | 2008-12-24 | 1 | -4/+16 |
| | | | | | | about other platforms. llvm-svn: 61415 | ||||
* | Change comments so everybody can understand them, hopefully. | Dale Johannesen | 2008-12-23 | 1 | -2/+2 |
| | | | | llvm-svn: 61405 | ||||
* | Add another permutation where we should get rid of a-a. | Dale Johannesen | 2008-12-23 | 1 | -4/+11 |
| | | | | llvm-svn: 61401 | ||||
* | Restore debug printing | Anton Korobeynikov | 2008-12-23 | 1 | -23/+26 |
| | | | | llvm-svn: 61398 | ||||
* | Sometimes APInt syntax is really ugly... :( | Anton Korobeynikov | 2008-12-23 | 1 | -10/+21 |
| | | | | llvm-svn: 61397 | ||||
* | Indent stuff properly | Anton Korobeynikov | 2008-12-23 | 1 | -25/+25 |
| | | | | llvm-svn: 61396 | ||||
* | Initial checkin of APInt'ififcation of switch lowering | Anton Korobeynikov | 2008-12-23 | 2 | -127/+126 |
| | | | | llvm-svn: 61395 | ||||
* | Fix typo. | Devang Patel | 2008-12-23 | 1 | -1/+2 |
| | | | | | | Silence unused variable warning. llvm-svn: 61391 | ||||
* | Silience unused warnings. | Devang Patel | 2008-12-23 | 2 | -0/+4 |
| | | | | llvm-svn: 61390 | ||||
* | Clean up the atomic opcodes in SelectionDAG. | Dan Gohman | 2008-12-23 | 5 | -536/+139 |
| | | | | | | | | | | | | | This removes all the _8, _16, _32, and _64 opcodes and replaces each group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode is now used to carry the size information. In tablegen, the size-specific opcodes are replaced by size-independent opcodes that utilize the ability to compose them with predicates. This shrinks the per-opcode tables and makes the code that handles atomics much more concise. llvm-svn: 61389 | ||||
* | Rename BuildSchedUnits to BuildSchedGraph, and refactor the | Dan Gohman | 2008-12-23 | 6 | -14/+24 |
| | | | | | | code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions. llvm-svn: 61376 | ||||
* | Use isTerminator() instead of isBranch()||isReturn() in | Dan Gohman | 2008-12-23 | 3 | -5/+4 |
| | | | | | | | | several places. isTerminator() returns true for a superset of cases, and includes things like FP_REG_KILL, which are nither return or branch but aren't safe to move/remat/etc. llvm-svn: 61373 | ||||
* | Avoid an unnecessary call to allnodes_size(), which is linear. | Dan Gohman | 2008-12-23 | 1 | -8/+11 |
| | | | | llvm-svn: 61372 | ||||
* | Minor code simplifications. | Dan Gohman | 2008-12-23 | 1 | -6/+6 |
| | | | | llvm-svn: 61371 | ||||
* | One more permutation of subtracting off a base value. | Dale Johannesen | 2008-12-23 | 1 | -0/+6 |
| | | | | llvm-svn: 61361 | ||||
* | Refactor a bunch of code out of AsmPrinter::EmitGlobalConstant into separate | Dan Gohman | 2008-12-22 | 1 | -182/+207 |
| | | | | | | functions. llvm-svn: 61345 | ||||
* | Optimize setDepthDirty and setHeightDirty a little, as they showed | Dan Gohman | 2008-12-22 | 1 | -10/+16 |
| | | | | | | up on a profile. llvm-svn: 61344 | ||||
* | Use SmallVector's pop_back_val. | Dan Gohman | 2008-12-20 | 1 | -4/+2 |
| | | | | llvm-svn: 61277 | ||||
* | Use the correct Preds and Succs lists in setHeightDirty() | Dan Gohman | 2008-12-20 | 1 | -4/+4 |
| | | | | | | and setDepthDirty(), respectively. This fixes PR3241. llvm-svn: 61276 | ||||
* | Use ~0u instead of -1u as the special value, to hopefully avoid | Dan Gohman | 2008-12-19 | 1 | -20/+20 |
| | | | | | | warnings on compilers that warn about such things. llvm-svn: 61263 | ||||
* | Fix PR3149. If an early clobber def is a physical register and it is tied to ↵ | Evan Cheng | 2008-12-19 | 2 | -7/+29 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this. 172 %ECX<def> = MOV32rr %reg1039<kill> 180 INLINEASM <es:subl $5,$1 sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>, 36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0 188 %EAX<def> = MOV32rr %EAX<kill> 196 %ECX<def> = MOV32rr %ECX<kill> 204 %ECX<def> = MOV32rr %ECX<kill> 212 %EAX<def> = MOV32rr %EAX<kill> 220 %EAX<def> = MOV32rr %EAX 228 %reg1039<def> = MOV32rr %ECX<kill> The early clobber operand ties ECX input to the ECX def. The live interval of ECX is represented as this: %reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47) The right way to represent this is something like %reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47) Of course that won't work since that means overlapping live ranges defined by two val#. The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom. llvm-svn: 61259 | ||||
* | Fix some release-assert warnings | Chris Lattner | 2008-12-19 | 1 | -4/+4 |
| | | | | llvm-svn: 61244 | ||||
* | Fix bug 3202. | Rafael Espindola | 2008-12-19 | 2 | -2/+3 |
| | | | | | | | The EH_frame and .eh symbols are now private, except for darwin9 and earlier. The patch also fixes the definition of PrivateGlobalPrefix on pcc linux. llvm-svn: 61242 | ||||
* | Perform this loop only when the -debug flag is specified. | Bill Wendling | 2008-12-19 | 1 | -5/+7 |
| | | | | llvm-svn: 61238 | ||||
* | Initialize the ImplicitDefed member, to avoid getting stale | Dan Gohman | 2008-12-19 | 1 | -0/+1 |
| | | | | | | data from a previous block. llvm-svn: 61237 | ||||
* | Teach LowerSubregs to preserve kill/dead information when lowering | Dan Gohman | 2008-12-18 | 1 | -1/+63 |
| | | | | | | subreg instructions. llvm-svn: 61220 | ||||
* | Make LowerSubregs' debug output for EXTRACT_SUBREG consistent with | Dan Gohman | 2008-12-18 | 1 | -1/+6 |
| | | | | | | that of INSERT_SUBREG and SUBREG_TO_REG. llvm-svn: 61218 | ||||
* | Fix a copy+pasto in an assertion message. | Dan Gohman | 2008-12-18 | 1 | -1/+1 |
| | | | | llvm-svn: 61217 | ||||
* | Fix indentation level. | Dan Gohman | 2008-12-18 | 1 | -33/+33 |
| | | | | llvm-svn: 61216 | ||||
* | Print subreg information in MachineInstr::dump. | Dan Gohman | 2008-12-18 | 1 | -1/+5 |
| | | | | llvm-svn: 61213 | ||||
* | Added support for vector widening. | Mon P Wang | 2008-12-18 | 6 | -43/+1238 |
| | | | | llvm-svn: 61209 | ||||
* | Give MachineLICM a name, for -time-passes etc. | Dan Gohman | 2008-12-18 | 1 | -0/+2 |
| | | | | llvm-svn: 61184 | ||||
* | Move post-RA scheduling before branch folding for now, because branch | Dan Gohman | 2008-12-18 | 1 | -7/+7 |
| | | | | | | | folding's tail merging doesn't currently preserve liveness information which post-RA scheduling requires. llvm-svn: 61183 | ||||
* | Re-apply r61158 in a form that no longer breaks tests. | Owen Anderson | 2008-12-18 | 1 | -36/+61 |
| | | | | llvm-svn: 61182 | ||||
* | Revert r61158 for now, as it caused some test failures. | Owen Anderson | 2008-12-17 | 1 | -46/+36 |
| | | | | llvm-svn: 61159 | ||||
* | Fix miscompilations caused by renumbering, and enable it as part of prealloc ↵ | Owen Anderson | 2008-12-17 | 1 | -36/+46 |
| | | | | | | splitting. llvm-svn: 61158 | ||||
* | Fix expansion of vsetcc to set the high bit for true instead of 1. | Mon P Wang | 2008-12-17 | 1 | -4/+6 |
| | | | | llvm-svn: 61129 | ||||
* | Double the amount of memory reserved for SUnits. This is a | Dan Gohman | 2008-12-17 | 1 | -1/+3 |
| | | | | | | | | | temporary workaround for an obscure bug. When node cloning is used, it is possible that more SUnits will be created, and if the SUnits std::vector has to reallocate, it will invalidate all the graph edges. llvm-svn: 61122 | ||||
* | Use getDepth() and getHeight() instead of accessing the | Dan Gohman | 2008-12-17 | 1 | -2/+2 |
| | | | | | | | Depth and Height members directly, as they may not be current. llvm-svn: 61121 | ||||
* | Fix for PR3225: disable a broken optimization in | Eli Friedman | 2008-12-17 | 1 | -0/+3 |
| | | | | | | | | | DAGTypeLegalizer::ExpandShiftWithKnownAmountBit. In terms of restoring the optimization, the best fix here isn't obvious... any ideas? llvm-svn: 61119 | ||||
* | A new dag combine; several permutations of this | Dale Johannesen | 2008-12-16 | 1 | -0/+6 |
| | | | | | | are there under ADD, this one was missing. llvm-svn: 61107 | ||||
* | Add code to renumber split intervals into new vregs. This is disabled for ↵ | Owen Anderson | 2008-12-16 | 1 | -0/+48 |
| | | | | | | now until I finish working out some iterator invalidation issues. llvm-svn: 61104 |