aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/RegAllocSimple.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefsAlkis Evlogimenos2003-10-081-6/+6
| | | | | | | | | | | | | | | | | | | | | | and TargetInstrDescriptor::ImplicitUses to always point to a null terminated array and never be null. So there is no need to check for pointer validity when iterating over those sets. Code that looked like: if (const unsigned* AS = TID.ImplicitDefs) { for (int i = 0; AS[i]; ++i) { // use AS[i] } } was changed to: for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) { // use *AS } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8960 91177308-0d34-0410-b5e6-96231b3b80d8
* Spell `necessary' correctly.Misha Brukman2003-08-181-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7944 91177308-0d34-0410-b5e6-96231b3b80d8
* Factory methods for FunctionPasses now return type FunctionPass *.Brian Gaeke2003-08-131-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7823 91177308-0d34-0410-b5e6-96231b3b80d8
* Set debug typesChris Lattner2003-08-031-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7533 91177308-0d34-0410-b5e6-96231b3b80d8
* Move DEBUG to Debug.hChris Lattner2003-08-011-0/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7497 91177308-0d34-0410-b5e6-96231b3b80d8
* (1) Added special register class containing (for now) %fsr.Vikram S. Adve2003-05-271-1/+1
| | | | | | | | | | | | | | Fixed spilling of %fcc[0-3] which are part of %fsr. (2) Moved some machine-independent reg-class code to class TargetRegInfo from SparcReg{Class,}Info. (3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly() and related functions and flags. Fixed several bugs where only "isDef" was being checked, not "isDefAndUse". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6341 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename MachineInstrInfo -> TargetInstrInfoChris Lattner2003-01-141-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5272 91177308-0d34-0410-b5e6-96231b3b80d8
* * Use the PHI Elimination passChris Lattner2003-01-131-80/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5220 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename FunctionFrameInfo to MachineFrameInfoChris Lattner2002-12-281-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5200 91177308-0d34-0410-b5e6-96231b3b80d8
* * Convert to be a MachineFunctionPass instanceChris Lattner2002-12-281-174/+67
| | | | | | | | | | | | | | | | | | | * Use new FunctionFrameInfo object to manage stack slots instead of doing it directly * Adjust to new MRegisterInfo API * Don't take a TM as a ctor argument * Don't keep track of which callee saved registers are modified * Don't emit prolog/epilog code or spill/restore code for callee saved regs * Use new allocation_order_begin/end iterators to simplify dramatically the logic for picking registers to allocate * Machine PHI nodes can no longer contain constant arguments * Use a bitvector to keep track of registers used instead of a set * Fix problem where explicitly referenced registers would be added to regsused set and never removed git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5196 91177308-0d34-0410-b5e6-96231b3b80d8
* Adjustments to work with the simpler spill interfaceChris Lattner2002-12-251-22/+24
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5144 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix compilation on GCC 2.96Chris Lattner2002-12-231-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5113 91177308-0d34-0410-b5e6-96231b3b80d8
* Implicit defs/uses list may be empty.Chris Lattner2002-12-181-6/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5103 91177308-0d34-0410-b5e6-96231b3b80d8
* Use new reginfo interfaceChris Lattner2002-12-171-3/+59
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5099 91177308-0d34-0410-b5e6-96231b3b80d8
* Keep the stack frame aligned.Chris Lattner2002-12-161-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5081 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename createSimpleX86RegisterAllocator to createSimpleRegisterAllocator.Chris Lattner2002-12-161-28/+2
| | | | | | | Remvoe some dead code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5070 91177308-0d34-0410-b5e6-96231b3b80d8
* Some simpliciations to the spill/reload interfaceChris Lattner2002-12-151-25/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5067 91177308-0d34-0410-b5e6-96231b3b80d8
* Simplify PHI node elimination significantly by doing it as a prepass toChris Lattner2002-12-151-30/+13
| | | | | | | register allocation git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5066 91177308-0d34-0410-b5e6-96231b3b80d8
* Variety of small or trivial simplifications to the code, completely eliminatedChris Lattner2002-12-151-92/+68
| | | | | | | the dependence on PhysRegClassMap git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5064 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove unused savePhysRegToStack methodChris Lattner2002-12-151-28/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5061 91177308-0d34-0410-b5e6-96231b3b80d8
* Localize a map, remove anotherChris Lattner2002-12-151-9/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5060 91177308-0d34-0410-b5e6-96231b3b80d8
* Give simple reg allocator a nice Pass NameChris Lattner2002-12-151-1/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5058 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a big assert making sure 2 address instructions are formed rightChris Lattner2002-12-151-0/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5057 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a problem that occurs when PHI nodes have multiple entries for the same ↵Chris Lattner2002-12-151-30/+47
| | | | | | predecessor git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5055 91177308-0d34-0410-b5e6-96231b3b80d8
* Grab bag of minor cleanups. Export some statistics about the number ofChris Lattner2002-12-151-46/+56
| | | | | | | spills and reloads emitted git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5054 91177308-0d34-0410-b5e6-96231b3b80d8
* Simplify interfaces used by regalloc to insert codeChris Lattner2002-12-151-9/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5052 91177308-0d34-0410-b5e6-96231b3b80d8
* * Simplify code a bit by breaking the PHI node handling stuff out into a ↵Chris Lattner2002-12-151-152/+161
| | | | | | | | | | | seperate function from normal regalloc code * Make the regalloc for a block a function instead of part of runOnMachineBB, which makes it easier to see what's going on in runOnMBB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5051 91177308-0d34-0410-b5e6-96231b3b80d8
* * Remove some unneccesary instance variablesChris Lattner2002-12-151-19/+16
| | | | | | | * Make allocateStackSpaceFor only allocate the right amount of space git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5048 91177308-0d34-0410-b5e6-96231b3b80d8
* pull inverse reg class mapping into a class that is sharable and out of theChris Lattner2002-12-151-6/+28
| | | | | | | target register description classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5045 91177308-0d34-0410-b5e6-96231b3b80d8
* Prune #includesChris Lattner2002-12-151-8/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5044 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove extraneous #includes, perform FIXMEChris Lattner2002-12-151-10/+6
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5043 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix borkness with not using MachineBasicBlocks in PHI nodesChris Lattner2002-12-151-12/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5035 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed a bug where moves due to phis were being neglected.Misha Brukman2002-12-131-23/+19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5019 91177308-0d34-0410-b5e6-96231b3b80d8
* Need to insert all moves due to PHI nodes before *ALL* jumps in a predecessorMisha Brukman2002-12-131-15/+10
| | | | | | | basic block, as there could be multiple. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5016 91177308-0d34-0410-b5e6-96231b3b80d8
* This should be more correct: invalidates physical registers that are used inMisha Brukman2002-12-131-4/+41
| | | | | | | an instruction to avoid using them to allocate to other virtual registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5013 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed bug with running out of registers. Also, reinstated namespace whichMisha Brukman2002-12-131-2/+5
| | | | | | | disappeared during the last checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5007 91177308-0d34-0410-b5e6-96231b3b80d8
* This should handle register allocating PHI nodes.Misha Brukman2002-12-131-23/+97
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5002 91177308-0d34-0410-b5e6-96231b3b80d8
* Start allocating stack space at [ebp-4] to not overwrite the return address.Misha Brukman2002-12-131-2/+9
| | | | | | | Also make all loads & stores 4-byte aligned for performance. ;) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4982 91177308-0d34-0410-b5e6-96231b3b80d8
* Take advantage of our knowledge of 2-address X86 instructions andMisha Brukman2002-12-121-7/+24
| | | | | | | register-allocated them appropriately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4976 91177308-0d34-0410-b5e6-96231b3b80d8
* Added code generation for function prologues and epilogues.Misha Brukman2002-12-041-17/+32
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4930 91177308-0d34-0410-b5e6-96231b3b80d8
* Fun arithmetic with iterators aimed at fixing a bug: inserting instructionsMisha Brukman2002-12-041-2/+4
| | | | | | | | after the *current* instruction while keeping the iterator in the same 'logical' place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4923 91177308-0d34-0410-b5e6-96231b3b80d8
* This should fix the bug seen with some registers not being allocatedMisha Brukman2002-12-031-6/+45
| | | | | | | | | | | | correctly: skipping instructions by incorrectly incrementing the pointer. Also adds support for building a reg-to-regclass map, and splits the function for saving register to stack into two, one suitable for virtual registers (which also assigns it a physical register) and one for simply storing back physical registers. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4898 91177308-0d34-0410-b5e6-96231b3b80d8
* * Abstracted out stack space allocation into its own functionMisha Brukman2002-12-021-34/+36
| | | | | | | * Added saving of register values to the stack git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4858 91177308-0d34-0410-b5e6-96231b3b80d8
* A simple (spilling) register allocator.Misha Brukman2002-11-221-0/+219
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4828 91177308-0d34-0410-b5e6-96231b3b80d8