Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Convert VirtRegMap to a MachineFunctionPass. | Owen Anderson | 2009-03-13 | 1 | -18/+40 | |
| | | | | llvm-svn: 66870 | |||||
* | Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. ↵ | Owen Anderson | 2009-03-11 | 1 | -1873/+2 | |
| | | | | | | No (intended) functionality change. llvm-svn: 66720 | |||||
* | Yet another case where the spiller marked two uses of the same register on ↵ | Evan Cheng | 2009-03-09 | 1 | -19/+10 | |
| | | | | | | the same instruction as kill. This fixes PR3706. llvm-svn: 66428 | |||||
* | If a MI uses the same register more than once, only mark one of them as 'kill'. | Evan Cheng | 2009-03-08 | 1 | -6/+22 | |
| | | | | llvm-svn: 66363 | |||||
* | Last commit accidentially deleted this code. | Evan Cheng | 2009-02-28 | 1 | -0/+4 | |
| | | | | llvm-svn: 65679 | |||||
* | The last commit was overly conservative. It's ok to reuse value that's ↵ | Evan Cheng | 2009-02-26 | 1 | -7/+0 | |
| | | | | | | already marked livein. llvm-svn: 65498 | |||||
* | If an available register falls through to a succ block, unset the last kill. ↵ | Evan Cheng | 2009-02-26 | 1 | -37/+76 | |
| | | | | | | Sorry, it's impossible to reduce a sensible test case. It basically requires the moon and stars to align in order to cause a failure. llvm-svn: 65497 | |||||
* | A couple of places where reused use operands should be marked kill. This is ↵ | Evan Cheng | 2009-02-17 | 1 | -0/+11 | |
| | | | | | | exposed by recent availability fallthrough changes. llvm-svn: 64745 | |||||
* | Revert this. It was breaking stuff. | Bill Wendling | 2009-02-13 | 1 | -1/+1 | |
| | | | | llvm-svn: 64428 | |||||
* | Turn off the old way of handling debug information in the code generator. Use | Bill Wendling | 2009-02-13 | 1 | -1/+1 | |
| | | | | | | | the new way, where all of the information is passed on SDNodes and machine instructions. llvm-svn: 64427 | |||||
* | Adjust the sizes for a few SmallVectors to reflect their usage. | Dan Gohman | 2009-02-12 | 1 | -2/+2 | |
| | | | | llvm-svn: 64381 | |||||
* | It's (currently) not safe to keep certain physical registers live across ↵ | Evan Cheng | 2009-02-12 | 1 | -2/+12 | |
| | | | | | | basic blocks, e.g. x86 fp stack registers. llvm-svn: 64374 | |||||
* | If availability info is kept when fallthrough into a bb, add the available ↵ | Evan Cheng | 2009-02-12 | 1 | -3/+21 | |
| | | | | | | registers to live-in set. llvm-svn: 64372 | |||||
* | Remove a bogus assertion. It's possible a live-in available value is used by ↵ | Evan Cheng | 2009-02-11 | 1 | -2/+0 | |
| | | | | | | a previous instruction. llvm-svn: 64339 | |||||
* | Implement PR3495: local spiller optimization. The local spiller can now keep ↵ | Evan Cheng | 2009-02-11 | 1 | -91/+208 | |
| | | | | | | availability information over BB boundaries. It visits BB's in depth first order. After visiting a BB if it find a successor which has a single predecessor it visits the successor next without clearing the availability information. This allows the successor to omit reloads or change them into copies. llvm-svn: 64298 | |||||
* | Explicitly pass in debug location information to BuildMI. | Bill Wendling | 2009-02-03 | 1 | -1/+2 | |
| | | | | llvm-svn: 63599 | |||||
* | Change TargetInstrInfo::isMoveInstr to return source and destination ↵ | Evan Cheng | 2009-01-20 | 1 | -4/+4 | |
| | | | | | | sub-register indices as well. llvm-svn: 62600 | |||||
* | Fix PR3124: overly strict assert. | Evan Cheng | 2008-12-02 | 1 | -2/+4 | |
| | | | | llvm-svn: 60392 | |||||
* | Fix PR2898. Spiller delete a store for reuse before it knows for sure the ↵ | Evan Cheng | 2008-10-17 | 1 | -11/+26 | |
| | | | | | | | | reuse happened. Patch by Lang Hames! llvm-svn: 57720 | |||||
* | Fix a very subtle spiller bug: UpdateKills should not forget to track defs ↵ | Evan Cheng | 2008-10-17 | 1 | -8/+14 | |
| | | | | | | of aliases. llvm-svn: 57673 | |||||
* | Fix command-line option printing to print two spaces where needed, | Dan Gohman | 2008-10-14 | 1 | -2/+2 | |
| | | | | | | | | | instead of requiring all "short description" strings to begin with two spaces. This makes these strings less mysterious, and it fixes some cases where short description strings mistakenly did not begin with two spaces. llvm-svn: 57521 | |||||
* | Don't dereference the end() iterator. Thanks to | Dan Gohman | 2008-10-06 | 1 | -1/+1 | |
| | | | | | | ENABLE_EXPENSIVE_CHECKS for finding this. llvm-svn: 57181 | |||||
* | Switch the MachineOperand accessors back to the short names like | Dan Gohman | 2008-10-03 | 1 | -14/+14 | |
| | | | | | | isReg, etc., from isRegister, etc. llvm-svn: 57006 | |||||
* | Propagate subreg index when promoting a load to a copy. | Evan Cheng | 2008-09-11 | 1 | -0/+7 | |
| | | | | llvm-svn: 56085 | |||||
* | Fix PR2664 - spiller GetRegForReload wasn't respecting sub-register indices ↵ | Evan Cheng | 2008-09-10 | 1 | -2/+4 | |
| | | | | | | on machine operands. llvm-svn: 56065 | |||||
* | Fix an overly strict assertion. Source register of a copy may not be killed, ↵ | Evan Cheng | 2008-09-04 | 1 | -1/+2 | |
| | | | | | | it may be killed by an implicit super-register use. llvm-svn: 55762 | |||||
* | Make SimpleSpiller respect subregister indices. | Owen Anderson | 2008-08-19 | 1 | -2/+5 | |
| | | | | llvm-svn: 54968 | |||||
* | Fix PR2596: out of bound reference. | Evan Cheng | 2008-08-05 | 1 | -3/+8 | |
| | | | | llvm-svn: 54375 | |||||
* | Fix a LocalSpiller leak. This fixes tramp3d-v4. | Dan Gohman | 2008-07-18 | 1 | -0/+1 | |
| | | | | llvm-svn: 53766 | |||||
* | Pool-allocation for MachineInstrs, MachineBasicBlocks, and | Dan Gohman | 2008-07-07 | 1 | -6/+7 | |
| | | | | | | | | | | | 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 | |||||
* | Cosmetic. | Evan Cheng | 2008-06-18 | 1 | -1/+1 | |
| | | | | llvm-svn: 52450 | |||||
* | Fix read after free found by valgrind. | Evan Cheng | 2008-06-16 | 1 | -15/+10 | |
| | | | | llvm-svn: 52309 | |||||
* | Teach the spiller to commute instructions in order to fold a reload. This ↵ | Evan Cheng | 2008-06-13 | 1 | -18/+125 | |
| | | | | | | hits 410 times on 444.namd and 122 times on 252.eon. llvm-svn: 52266 | |||||
* | Move #include to right place. | Evan Cheng | 2008-06-04 | 1 | -0/+1 | |
| | | | | llvm-svn: 51932 | |||||
* | Remove warnings about comparison between signed and unsigned expressions. | Bill Wendling | 2008-05-23 | 1 | -2/+2 | |
| | | | | llvm-svn: 51465 | |||||
* | Don't attempt to update SpillSlotToUsesMap for stack slots that aren't | David Greene | 2008-05-22 | 1 | -2/+14 | |
| | | | | | | generated by the spiller. llvm-svn: 51439 | |||||
* | More local spiller complexity! | Evan Cheng | 2008-05-20 | 1 | -0/+62 | |
| | | | | | | If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB. llvm-svn: 51306 | |||||
* | Clean up the use of static and anonymous namespaces. This turned up | Dan Gohman | 2008-05-13 | 1 | -9/+9 | |
| | | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017 | |||||
* | Yet another nasty spiller bug. | Evan Cheng | 2008-05-07 | 1 | -14/+19 | |
| | | | | | | | | | | %ecx = op store %cl<kill>, (addr) (addr) = op %al It's not safe to unfold the last operand and eliminate store even though %cl is marked kill. It's a sub-register use which means one of its super-register(s) may be used below. llvm-svn: 50794 | |||||
* | Use of implicit_def is not part of live interval. Create empty intervals for ↵ | Evan Cheng | 2008-04-11 | 1 | -0/+8 | |
| | | | | | | the uses when the live interval is being spilled. llvm-svn: 49542 | |||||
* | Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo. | Evan Cheng | 2008-03-31 | 1 | -4/+5 | |
| | | | | llvm-svn: 48995 | |||||
* | Avoid commuting a def MI in order to coalesce a copy instruction away if any ↵ | Evan Cheng | 2008-03-26 | 1 | -0/+1 | |
| | | | | | | use of the same val# is a copy instruction that has already been coalesced. llvm-svn: 48833 | |||||
* | A couple of kill marker maintainence bug. | Evan Cheng | 2008-03-21 | 1 | -1/+1 | |
| | | | | llvm-svn: 48653 | |||||
* | Fix PR2138. Apparently any modification to a std::multimap (including remove ↵ | Evan Cheng | 2008-03-14 | 1 | -2/+8 | |
| | | | | | | entries for a different key) can invalidate multimap iterators. llvm-svn: 48371 | |||||
* | Change VirtRegMap's dump to dump to cerr, not DOUT, so that it | Dan Gohman | 2008-03-12 | 1 | -1/+1 | |
| | | | | | | | can be called from within a debuger without having -debug specified on the command-line. llvm-svn: 48298 | |||||
* | Set NextMII after issuing a physical register spill. | Evan Cheng | 2008-03-12 | 1 | -0/+1 | |
| | | | | llvm-svn: 48263 | |||||
* | Minor debug output bug. | Evan Cheng | 2008-03-12 | 1 | -1/+1 | |
| | | | | llvm-svn: 48261 | |||||
* | Transfer physical register spill info when load / store folding happens. | Evan Cheng | 2008-03-11 | 1 | -1/+2 | |
| | | | | llvm-svn: 48246 | |||||
* | When the register allocator runs out of registers, spill a physical register ↵ | Evan Cheng | 2008-03-11 | 1 | -0/+40 | |
| | | | | | | around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting. llvm-svn: 48218 | |||||
* | Refactor code. Remove duplicated functions that basically do the same thing as | Evan Cheng | 2008-03-05 | 1 | -4/+3 | |
| | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927 |