Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 | ||||
* | Fix a bug in dead spill slot elimination. | Evan Cheng | 2008-02-27 | 1 | -0/+2 |
| | | | | llvm-svn: 47687 | ||||
* | Final de-tabification. | Bill Wendling | 2008-02-27 | 1 | -1/+1 |
| | | | | llvm-svn: 47663 | ||||
* | Spiller now remove unused spill slots. | Evan Cheng | 2008-02-27 | 1 | -17/+72 |
| | | | | llvm-svn: 47657 | ||||
* | Rename PrintableName to Name. | Bill Wendling | 2008-02-26 | 1 | -7/+7 |
| | | | | llvm-svn: 47629 | ||||
* | Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool | Bill Wendling | 2008-02-26 | 1 | -9/+9 |
| | | | | | | would have been a Godsend here! llvm-svn: 47625 | ||||
* | De-tabify. | Bill Wendling | 2008-02-26 | 1 | -1/+1 |
| | | | | llvm-svn: 47598 | ||||
* | Make sure reload of implicit uses are issued before remat's. | Evan Cheng | 2008-02-22 | 1 | -3/+15 |
| | | | | llvm-svn: 47492 | ||||
* | Enable re-materialization of instructions which have virtual register ↵ | Evan Cheng | 2008-02-22 | 1 | -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 changes | Anton Korobeynikov | 2008-02-20 | 1 | -1/+2 |
| | | | | llvm-svn: 47368 | ||||
* | Rename MRegisterInfo to TargetRegisterInfo. | Dan Gohman | 2008-02-10 | 1 | -52/+52 |
| | | | | llvm-svn: 46930 | ||||
* | Forgot these files. | Evan Cheng | 2008-02-08 | 1 | -1/+1 |
| | | | | llvm-svn: 46896 | ||||
* | rename TargetInstrDescriptor -> TargetInstrDesc. | Chris Lattner | 2008-01-07 | 1 | -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 TargetInstrDescriptor | Chris Lattner | 2008-01-07 | 1 | -1/+1 |
| | | | | llvm-svn: 45680 | ||||
* | Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects | Chris Lattner | 2008-01-07 | 1 | -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 Anderson | 2008-01-07 | 1 | -5/+5 |
| | | | | llvm-svn: 45673 | ||||
* | Move some more instruction creation methods from RegisterInfo into InstrInfo. | Owen Anderson | 2008-01-01 | 1 | -8/+12 |
| | | | | llvm-svn: 45484 | ||||
* | Move copyRegToReg from MRegisterInfo to TargetInstrInfo. This is part of the | Owen Anderson | 2007-12-31 | 1 | -3/+3 |
| | | | | | | Machine-level API cleanup instigated by Chris. llvm-svn: 45470 | ||||
* | Rename SSARegMap -> MachineRegisterInfo in keeping with the idea | Chris Lattner | 2007-12-31 | 1 | -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 Lattner | 2007-12-30 | 1 | -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 Lattner | 2007-12-29 | 1 | -2/+2 |
| | | | | llvm-svn: 45418 | ||||
* | If deleting a reload instruction due to reuse (value is available in ↵ | Evan Cheng | 2007-12-11 | 1 | -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 Cheng | 2007-12-05 | 1 | -1/+1 |
| | | | | llvm-svn: 44612 | ||||
* | If a split live interval is spilled again, remove the kill marker on its ↵ | Evan Cheng | 2007-12-05 | 1 | -1/+2 |
| | | | | | | last use. llvm-svn: 44611 |