summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/VirtRegMap.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Convert VirtRegMap to a MachineFunctionPass.Owen Anderson2009-03-131-18/+40
| | | | llvm-svn: 66870
* Reorganization: Move the Spiller out of VirtRegMap.cpp into its own files. ↵Owen Anderson2009-03-111-1873/+2
| | | | | | No (intended) functionality change. llvm-svn: 66720
* Yet another case where the spiller marked two uses of the same register on ↵Evan Cheng2009-03-091-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 Cheng2009-03-081-6/+22
| | | | llvm-svn: 66363
* Last commit accidentially deleted this code.Evan Cheng2009-02-281-0/+4
| | | | llvm-svn: 65679
* The last commit was overly conservative. It's ok to reuse value that's ↵Evan Cheng2009-02-261-7/+0
| | | | | | already marked livein. llvm-svn: 65498
* If an available register falls through to a succ block, unset the last kill. ↵Evan Cheng2009-02-261-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 Cheng2009-02-171-0/+11
| | | | | | exposed by recent availability fallthrough changes. llvm-svn: 64745
* Revert this. It was breaking stuff.Bill Wendling2009-02-131-1/+1
| | | | llvm-svn: 64428
* Turn off the old way of handling debug information in the code generator. UseBill Wendling2009-02-131-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 Gohman2009-02-121-2/+2
| | | | llvm-svn: 64381
* It's (currently) not safe to keep certain physical registers live across ↵Evan Cheng2009-02-121-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 Cheng2009-02-121-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 Cheng2009-02-111-2/+0
| | | | | | a previous instruction. llvm-svn: 64339
* Implement PR3495: local spiller optimization. The local spiller can now keep ↵Evan Cheng2009-02-111-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 Wendling2009-02-031-1/+2
| | | | llvm-svn: 63599
* Change TargetInstrInfo::isMoveInstr to return source and destination ↵Evan Cheng2009-01-201-4/+4
| | | | | | sub-register indices as well. llvm-svn: 62600
* Fix PR3124: overly strict assert.Evan Cheng2008-12-021-2/+4
| | | | llvm-svn: 60392
* Fix PR2898. Spiller delete a store for reuse before it knows for sure the ↵Evan Cheng2008-10-171-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 Cheng2008-10-171-8/+14
| | | | | | of aliases. llvm-svn: 57673
* Fix command-line option printing to print two spaces where needed,Dan Gohman2008-10-141-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 toDan Gohman2008-10-061-1/+1
| | | | | | ENABLE_EXPENSIVE_CHECKS for finding this. llvm-svn: 57181
* Switch the MachineOperand accessors back to the short names likeDan Gohman2008-10-031-14/+14
| | | | | | isReg, etc., from isRegister, etc. llvm-svn: 57006
* Propagate subreg index when promoting a load to a copy.Evan Cheng2008-09-111-0/+7
| | | | llvm-svn: 56085
* Fix PR2664 - spiller GetRegForReload wasn't respecting sub-register indices ↵Evan Cheng2008-09-101-2/+4
| | | | | | on machine operands. llvm-svn: 56065
* Fix an overly strict assertion. Source register of a copy may not be killed, ↵Evan Cheng2008-09-041-1/+2
| | | | | | it may be killed by an implicit super-register use. llvm-svn: 55762
* Make SimpleSpiller respect subregister indices.Owen Anderson2008-08-191-2/+5
| | | | llvm-svn: 54968
* Fix PR2596: out of bound reference.Evan Cheng2008-08-051-3/+8
| | | | llvm-svn: 54375
* Fix a LocalSpiller leak. This fixes tramp3d-v4.Dan Gohman2008-07-181-0/+1
| | | | llvm-svn: 53766
* Pool-allocation for MachineInstrs, MachineBasicBlocks, andDan Gohman2008-07-071-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 Cheng2008-06-181-1/+1
| | | | llvm-svn: 52450
* Fix read after free found by valgrind.Evan Cheng2008-06-161-15/+10
| | | | llvm-svn: 52309
* Teach the spiller to commute instructions in order to fold a reload. This ↵Evan Cheng2008-06-131-18/+125
| | | | | | hits 410 times on 444.namd and 122 times on 252.eon. llvm-svn: 52266
* Move #include to right place.Evan Cheng2008-06-041-0/+1
| | | | llvm-svn: 51932
* Remove warnings about comparison between signed and unsigned expressions.Bill Wendling2008-05-231-2/+2
| | | | llvm-svn: 51465
* Don't attempt to update SpillSlotToUsesMap for stack slots that aren'tDavid Greene2008-05-221-2/+14
| | | | | | generated by the spiller. llvm-svn: 51439
* More local spiller complexity!Evan Cheng2008-05-201-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 upDan Gohman2008-05-131-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 Cheng2008-05-071-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 Cheng2008-04-111-0/+8
| | | | | | the uses when the live interval is being spilled. llvm-svn: 49542
* Move reMaterialize() from TargetRegisterInfo to TargetInstrInfo.Evan Cheng2008-03-311-4/+5
| | | | llvm-svn: 48995
* Avoid commuting a def MI in order to coalesce a copy instruction away if any ↵Evan Cheng2008-03-261-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 Cheng2008-03-211-1/+1
| | | | llvm-svn: 48653
* Fix PR2138. Apparently any modification to a std::multimap (including remove ↵Evan Cheng2008-03-141-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 itDan Gohman2008-03-121-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 Cheng2008-03-121-0/+1
| | | | llvm-svn: 48263
* Minor debug output bug.Evan Cheng2008-03-121-1/+1
| | | | llvm-svn: 48261
* Transfer physical register spill info when load / store folding happens.Evan Cheng2008-03-111-1/+2
| | | | llvm-svn: 48246
* When the register allocator runs out of registers, spill a physical register ↵Evan Cheng2008-03-111-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 asEvan Cheng2008-03-051-4/+3
| | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927
OpenPOWER on IntegriCloud