summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Revert 51440 as it breaks a bunch of PIC tests.Evan Cheng2008-05-231-3/+1
| | | | llvm-svn: 51513
* When rewriting defs and uses after spilling, don't set the weight of aDavid Greene2008-05-221-1/+3
| | | | | | | | live interval to infinity if the instruction being rewritten is an original remat def instruction. We were only checking against the clone of the remat def which doesn't actually appear in the IR at all. llvm-svn: 51440
* Don't spill dead def.Evan Cheng2008-05-201-1/+3
| | | | llvm-svn: 51305
* Clean up the use of static and anonymous namespaces. This turned upDan Gohman2008-05-131-27/+25
| | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
* Make several variable declarations static.Dan Gohman2008-05-061-6/+6
| | | | llvm-svn: 50696
* Empty basic block should have an empty range.Evan Cheng2008-04-161-1/+3
| | | | llvm-svn: 49800
* Use of implicit_def is not part of live interval. Create empty intervals for ↵Evan Cheng2008-04-111-12/+30
| | | | | | the uses when the live interval is being spilled. llvm-svn: 49542
* - More aggressively coalescing away copies whose source is defined by an ↵Evan Cheng2008-04-091-2/+9
| | | | | | | | implicit_def. - Added insert_subreg coalescing support. llvm-svn: 49448
* - Treat a live range defined by an implicit_def as a zero-sized one.Evan Cheng2008-04-031-2/+28
| | | | | | - Eliminate an implicit_def when it's being spilled. llvm-svn: 49166
* Re-materialization is for uses only.Evan Cheng2008-04-011-4/+4
| | | | llvm-svn: 49053
* It's not safe to fold a load from GV stub or constantpool into a two-address ↵Evan Cheng2008-03-311-2/+3
| | | | | | use. llvm-svn: 49002
* The support for remat of instructions with a register operand is hackish, to ↵Evan Cheng2008-03-311-18/+7
| | | | | | say the least. Since the register operand guaranteed to be PIC base and that it is already live at all uses, we are making sure it will not be spilled after its uses are rematerialized for both performance and correctness reasons. llvm-svn: 48976
* Remove isImplicitDef TargetInstrDesc flag.Evan Cheng2008-03-151-4/+3
| | | | llvm-svn: 48381
* Transfer physical register spill info when load / store folding happens.Evan Cheng2008-03-111-0/+1
| | | | llvm-svn: 48246
* When the register allocator runs out of registers, spill a physical register ↵Evan Cheng2008-03-111-0/+78
| | | | | | 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-12/+13
| | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927
* Spiller now remove unused spill slots.Evan Cheng2008-02-271-0/+3
| | | | llvm-svn: 47657
* Rename PrintableName to Name.Bill Wendling2008-02-261-1/+1
| | | | llvm-svn: 47629
* Change "Name" to "AsmName" in the target register info. Gee, a refactoring toolBill Wendling2008-02-261-1/+1
| | | | | | would have been a Godsend here! llvm-svn: 47625
* All remat'ed loads cannot be folded into two-address code. Not just argument ↵Evan Cheng2008-02-251-4/+4
| | | | | | loads. This change doesn't really have any impact on codegen. llvm-svn: 47557
* Correctly determine whether a argument load can be folded into its uses.Evan Cheng2008-02-251-45/+52
| | | | llvm-svn: 47545
* Rematerialization logic was overly conservative when it comes to loads from ↵Evan Cheng2008-02-231-20/+6
| | | | | | fixed stack slots. llvm-svn: 47529
* If remating a machine instr with virtual register operand, make sure the vr ↵Evan Cheng2008-02-231-2/+1
| | | | | | is avaliable at all uses regardless of whether it would be folded. llvm-svn: 47526
* Recognize loads of arguments as re-materializable first. Therefore if ↵Evan Cheng2008-02-231-24/+26
| | | | | | isReallyTriviallyReMaterializable() returns true it doesn't confuse it as a "normal" re-materializable instruction. llvm-svn: 47520
* Fix spill weight updating bug.Evan Cheng2008-02-231-15/+27
| | | | llvm-svn: 47507
* Enable re-materialization of instructions which have virtual register ↵Evan Cheng2008-02-221-28/+155
| | | | | | | | operands if the definition of the operand also reaches its uses. llvm-svn: 47475
* Clean up some spilling code using MachineRegisterInfo.Evan Cheng2008-02-211-22/+51
| | | | llvm-svn: 47416
* New helper function getMBBFromIndex() that given an index in any instruction ↵Roman Levenstein2008-02-181-16/+0
| | | | | | of an MBB returns a pointer the MBB. Reviewed by Evan. llvm-svn: 47267
* - Removing the infamous r2rMap_ and rep() method. Now the coalescer will updateEvan Cheng2008-02-151-28/+36
| | | | | | | register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. llvm-svn: 47167
* Fix a potential serious problem where kills belonging to the val# defined by ↵Evan Cheng2008-02-131-3/+2
| | | | | | a two-address instruction is also on the val# that defines the input. llvm-svn: 47057
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-22/+22
| | | | llvm-svn: 46930
* Forgot these files.Evan Cheng2008-02-081-2/+2
| | | | llvm-svn: 46896
* Move some functionality for adding flags to MachineInstr's into methods on ↵Owen Anderson2008-01-241-1/+1
| | | | | | MachineInstr rather than LiveVariables. llvm-svn: 46295
* Only remat loads from immutable stack slots.Evan Cheng2008-01-101-2/+2
| | | | llvm-svn: 45831
* Simplify some code.Evan Cheng2008-01-101-8/+2
| | | | llvm-svn: 45830
* Don't use LiveVariables::VarInfo::DefInst.Owen Anderson2008-01-101-1/+8
| | | | llvm-svn: 45815
* rename TargetInstrDescriptor -> TargetInstrDesc.Chris Lattner2008-01-071-10/+10
| | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
* simplify some code using new predicatesChris Lattner2008-01-071-3/+2
| | | | llvm-svn: 45689
* Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflectsChris Lattner2008-01-071-7/+7
| | | | | | | | | | | | | | | 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-3/+3
| | | | llvm-svn: 45673
* rename isLoad -> isSimpleLoad due to evan's desire to have such a predicate.Chris Lattner2008-01-061-5/+4
| | | | llvm-svn: 45667
* Don't recalculate the loop info and loop dominators analyses if they'reBill Wendling2008-01-041-0/+2
| | | | | | preserved. llvm-svn: 45596
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-311-10/+10
| | | | | | | | | | | | | | 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-1/+1
| | | | | | | | | | - 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
* Implicit def instructions, e.g. X86::IMPLICIT_DEF_GR32, are always ↵Evan Cheng2007-12-121-3/+15
| | | | | | re-materializable and they should not be spilled. llvm-svn: 44960
* Switch over to MachineLoopInfo.Evan Cheng2007-12-111-5/+5
| | | | llvm-svn: 44838
* Reverting 44702. It wasn't correct to rename them.Bill Wendling2007-12-081-1/+1
| | | | llvm-svn: 44727
* Renaming:Bill Wendling2007-12-081-1/+1
| | | | | | | isTriviallyReMaterializable -> hasNoSideEffects isReallyTriviallyReMaterializable -> isTriviallyReMaterializable llvm-svn: 44702
* Turning simple splitting on. Start testing new coalescer heuristics as new ↵Evan Cheng2007-12-061-1/+1
| | | | | | llcbeta. llvm-svn: 44660
OpenPOWER on IntegriCloud