summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/VirtRegMap.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Fix a bug in dead spill slot elimination.Evan Cheng2008-02-271-0/+2
| | | | llvm-svn: 47687
* Final de-tabification.Bill Wendling2008-02-271-1/+1
| | | | llvm-svn: 47663
* Spiller now remove unused spill slots.Evan Cheng2008-02-271-17/+72
| | | | llvm-svn: 47657
* Rename PrintableName to Name.Bill Wendling2008-02-261-7/+7
| | | | llvm-svn: 47629
* Change "Name" to "AsmName" in the target register info. Gee, a refactoring toolBill Wendling2008-02-261-9/+9
| | | | | | would have been a Godsend here! llvm-svn: 47625
* De-tabify.Bill Wendling2008-02-261-1/+1
| | | | llvm-svn: 47598
* Make sure reload of implicit uses are issued before remat's.Evan Cheng2008-02-221-3/+15
| | | | llvm-svn: 47492
* Enable re-materialization of instructions which have virtual register ↵Evan Cheng2008-02-221-11/+32
| | | | | | | | operands if the definition of the operand also reaches its uses. llvm-svn: 47475
* Update gcc 4.3 warnings fix patch with recent head changesAnton Korobeynikov2008-02-201-1/+2
| | | | llvm-svn: 47368
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-52/+52
| | | | llvm-svn: 46930
* Forgot these files.Evan Cheng2008-02-081-1/+1
| | | | llvm-svn: 46896
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-071-7/+7
| | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
* Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptorChris Lattner2008-01-071-1/+1
| | | | llvm-svn: 45680
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-071-3/+3
| | | | | | | | | | | | | | | that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674
* Update CodeGen for MRegisterInfo --> TargetInstrInfo changes.Owen Anderson2008-01-071-5/+5
| | | | llvm-svn: 45673
* Move some more instruction creation methods from RegisterInfo into InstrInfo.Owen Anderson2008-01-011-8/+12
| | | | llvm-svn: 45484
* Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of theOwen Anderson2007-12-311-3/+3
| | | | | | Machine-level API cleanup instigated by Chris. llvm-svn: 45470
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-311-28/+30
| | | | | | | | | | | | | | that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
* More cleanups for MachineOperand:Chris Lattner2007-12-301-2/+2
| | | | | | | | | | - Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h llvm-svn: 45461
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* If deleting a reload instruction due to reuse (value is available in ↵Evan Cheng2007-12-111-2/+18
| | | | | | register R and reload is targeting R), make sure to invalidate the kill information of the last kill. llvm-svn: 44894
* MachineInstr can change. Store indexes instead.Evan Cheng2007-12-051-1/+1
| | | | llvm-svn: 44612
* If a split live interval is spilled again, remove the kill marker on its ↵Evan Cheng2007-12-051-1/+2
| | | | | | last use. llvm-svn: 44611
* Fix kill info for split intervals.Evan Cheng2007-12-051-3/+5
| | | | llvm-svn: 44609
* - Mark last use of a split interval as kill instead of letting spiller track it.Evan Cheng2007-12-051-2/+0
| | | | | | | | | This allows an important optimization to be re-enabled. - If all uses / defs of a split interval can be folded, give the interval a low spill weight so it would not be picked in case spilling is needed (avoid pushing other intervals in the same BB to be spilled). llvm-svn: 44601
* Add a argument to storeRegToStackSlot and storeRegToAddr to specify whetherEvan Cheng2007-12-051-11/+7
| | | | | | the stored register is killed. llvm-svn: 44600
* Remove a unsafe optimization. This fixes 401.bzip2.Evan Cheng2007-12-041-8/+0
| | | | llvm-svn: 44587
* Spiller unfold optimization bug: do not clobber a reusable stack slot value ↵Evan Cheng2007-12-041-10/+16
| | | | | | unless it can be modified. llvm-svn: 44575
* Bug fixes.Evan Cheng2007-12-031-7/+8
| | | | llvm-svn: 44549
* Update kill info for uses of split intervals.Evan Cheng2007-12-031-8/+15
| | | | llvm-svn: 44531
* Remove redundant foldMemoryOperand variants and other code clean up.Evan Cheng2007-12-021-14/+4
| | | | llvm-svn: 44517
* Fixed various live interval splitting bugs / compile time issues.Evan Cheng2007-11-291-47/+25
| | | | llvm-svn: 44428
* Recover compile time regression.Evan Cheng2007-11-281-21/+23
| | | | llvm-svn: 44386
* Live interval splitting:Evan Cheng2007-11-171-55/+143
| | | | | | | | | | | | | | | | | | | When a live interval is being spilled, rather than creating short, non-spillable intervals for every def / use, split the interval at BB boundaries. That is, for every BB where the live interval is defined or used, create a new interval that covers all the defs and uses in the BB. This is designed to eliminate one common problem: multiple reloads of the same value in a single basic block. Note, it does *not* decrease the number of spills since no copies are inserted so the split intervals are *connected* through spill and reloads (or rematerialization). The newly created intervals can be spilled again, in that case, since it does not span multiple basic blocks, it's spilled in the usual manner. However, it can reuse the same stack slot as the previously split interval. This is currently controlled by -split-intervals-at-bb. llvm-svn: 44198
OpenPOWER on IntegriCloud