Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Fix a bug in the local allocator's liveness computation where it | Dan Gohman | 2008-10-04 | 1 | -3/+5 | |
| | | | | | | | | was setting kill flags on tied uses in two-address instructions. The kill flags were causing the allocator to think it could allocate the use and its tied def in different registers. llvm-svn: 57039 | |||||
* | Switch the MachineOperand accessors back to the short names like | Dan Gohman | 2008-10-03 | 1 | -10/+10 | |
| | | | | | | isReg, etc., from isRegister, etc. llvm-svn: 57006 | |||||
* | Remove SelectionDag early allocation of registers | Dale Johannesen | 2008-09-24 | 1 | -0/+51 | |
| | | | | | | | for earlyclobbers. Teach Local RA about earlyclobber, and add some tests for it. llvm-svn: 56592 | |||||
* | Remove isImm(), isReg(), and friends, in favor of | Dan Gohman | 2008-09-13 | 1 | -2/+2 | |
| | | | | | | | | | isImmediate(), isRegister(), and friends, to avoid confusion about having two different names with the same meaning. I'm not attached to the longer names, and would be ok with changing to the shorter names if others prefer it. llvm-svn: 56189 | |||||
* | Tidy up several unbeseeming casts from pointer to intptr_t. | Dan Gohman | 2008-09-04 | 1 | -2/+1 | |
| | | | | llvm-svn: 55779 | |||||
* | consolidate DenseMapInfo implementations, and add one for std::pair. | Chris Lattner | 2008-08-22 | 1 | -12/+0 | |
| | | | | | | Patch contributed by m-s. llvm-svn: 55167 | |||||
* | Change StackSlotForVirtReg (which maps vregs to frame indices) from std::map ↵ | Evan Cheng | 2008-07-10 | 1 | -8/+8 | |
| | | | | | | to IndexedMap. llvm-svn: 53414 | |||||
* | - Change the horrible N^2 isRegReDefinedByTwoAddr. Now callers must supply ↵ | Evan Cheng | 2008-07-10 | 1 | -15/+5 | |
| | | | | | | | | the operand index of def machineoperand and at most one full scan of non-implicit operands is needed. - Change local register allocator to use the new isRegReDefinedByTwoAddr instead of reinventing the wheel. llvm-svn: 53394 | |||||
* | Use DenseMap instead of std::map in local register allocation. This ↵ | Owen Anderson | 2008-07-10 | 1 | -3/+16 | |
| | | | | | | improves the time on instcombine from .31s to .22s llvm-svn: 53390 | |||||
* | Fix 403.gcc. Finally got the check for two-address-ness correct. | Owen Anderson | 2008-07-10 | 1 | -10/+14 | |
| | | | | llvm-svn: 53389 | |||||
* | Revert r53367, which was breaking things. | Owen Anderson | 2008-07-09 | 1 | -1/+3 | |
| | | | | llvm-svn: 53378 | |||||
* | Loosen our check here. Local regalloc only cares that the reg is used and ↵ | Owen Anderson | 2008-07-09 | 1 | -3/+1 | |
| | | | | | | | | def'd by the same instruction, but about the details of the relationship. llvm-svn: 53367 | |||||
* | Don't use an expensive check for two-address-ness when we have the ↵ | Owen Anderson | 2008-07-09 | 1 | -2/+13 | |
| | | | | | | | | information sitting around to determine it much more quickly, This speeds up the local register allocator from 0.37s to 0.31s on instcombine. llvm-svn: 53359 | |||||
* | Factor local liveness computation out into its own function. | Owen Anderson | 2008-07-09 | 1 | -28/+36 | |
| | | | | llvm-svn: 53352 | |||||
* | Reuse the MO variable instead of recomputing it in RegAllocLocal. | Dan Gohman | 2008-07-09 | 1 | -1/+1 | |
| | | | | | | Keep RegAllocSimple in sync. llvm-svn: 53351 | |||||
* | RegAllocLocal has a TargetInstrInfo data member. Use it instead | Dan Gohman | 2008-07-09 | 1 | -5/+1 | |
| | | | | | | of having local variables duplicate it. llvm-svn: 53346 | |||||
* | Use find with std::map, when that's what's needed, instead of lower_bound | Dan Gohman | 2008-07-09 | 1 | -2/+2 | |
| | | | | | | with extra checks. llvm-svn: 53344 | |||||
* | Fix the build. Apparently MachineInstr& is no longer implicitly convertable ↵ | Owen Anderson | 2008-07-08 | 1 | -1/+1 | |
| | | | | | | to MachineBasicBlock::iterator. llvm-svn: 53260 | |||||
* | Make the local register allocator compute (purely local) liveness ↵ | Owen Anderson | 2008-07-08 | 1 | -4/+118 | |
| | | | | | | | | | information for itself rather than depending on LiveVariables. This decreases compile time from: 0.5909s (LV + Regalloc) to 0.421s (just regalloc). llvm-svn: 53256 | |||||
* | Teach local register allocator to deal with landing pad MBB's. | Evan Cheng | 2008-05-28 | 1 | -4/+4 | |
| | | | | llvm-svn: 51647 | |||||
* | Clean up the use of static and anonymous namespaces. This turned up | Dan Gohman | 2008-05-13 | 1 | -5/+4 | |
| | | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017 | |||||
* | Remove #include<map> from LiveVariables.h. Not referenced. | Evan Cheng | 2008-04-02 | 1 | -0/+1 | |
| | | | | llvm-svn: 49099 | |||||
* | Refactor code. Remove duplicated functions that basically do the same thing as | Evan Cheng | 2008-03-05 | 1 | -2/+1 | |
| | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927 | |||||
* | If we reload a virtual register that's already been assigned, we want to mark | Bill Wendling | 2008-02-29 | 1 | -1/+2 | |
| | | | | | | that instruction as its "last use". This fixes PR1925. llvm-svn: 47758 | |||||
* | Rename PrintableName to Name. | Bill Wendling | 2008-02-26 | 1 | -8/+8 | |
| | | | | llvm-svn: 47629 | |||||
* | Change "Name" to "AsmName" in the target register info. Gee, a refactoring tool | Bill Wendling | 2008-02-26 | 1 | -8/+8 | |
| | | | | | | would have been a Godsend here! llvm-svn: 47625 | |||||
* | Really really bad local register allocator bug. On X86, it was never using ↵ | Evan Cheng | 2008-02-22 | 1 | -1/+1 | |
| | | | | | | | | ESI, EDI, and EBP because of a bug in RALocal::isPhysRegAvailable(). For example, when it checks if ESI is available, it then looks at registers aliases to ESI. SIL is marked -2 (not allocatable) but isPhysRegAvailable() incorrectly assumes it is in use and returns false for ESI. llvm-svn: 47499 | |||||
* | Add debugging printfs. | Evan Cheng | 2008-02-22 | 1 | -0/+2 | |
| | | | | llvm-svn: 47496 | |||||
* | Fix newly-introduced 4.3 warnings | Anton Korobeynikov | 2008-02-20 | 1 | -1/+2 | |
| | | | | llvm-svn: 47375 | |||||
* | Determine whether a spill kills the register it's spilling before insertion ↵ | Evan Cheng | 2008-02-11 | 1 | -8/+3 | |
| | | | | | | rather than trying to undo the kill marker afterwards. llvm-svn: 46953 | |||||
* | Rename MRegisterInfo to TargetRegisterInfo. | Dan Gohman | 2008-02-10 | 1 | -35/+35 | |
| | | | | llvm-svn: 46930 | |||||
* | Remove remnant of load folding in local register allocator. Patch by Holger ↵ | Evan Cheng | 2008-02-07 | 1 | -7/+1 | |
| | | | | | | Schurig. llvm-svn: 46861 | |||||
* | Fix a number of local register allocator issues: PR1609. | Evan Cheng | 2008-02-06 | 1 | -14/+16 | |
| | | | | llvm-svn: 46821 | |||||
* | RegAllocaLocal still *requires* LiveVariables since it runs PHIElimination, ↵ | Evan Cheng | 2008-02-06 | 1 | -1/+3 | |
| | | | | | | followed by TwoAddress which requires LiveVariables. We cannot run LiveVariables on non-SSA code. llvm-svn: 46813 | |||||
* | Reg alloc doesn't really need LiveVariables. | Owen Anderson | 2008-01-27 | 1 | -9/+2 | |
| | | | | llvm-svn: 46420 | |||||
* | When a live virtual register is being clobbered by an implicit def, it is ↵ | Evan Cheng | 2008-01-17 | 1 | -2/+20 | |
| | | | | | | | | | | | spilled and the spill is its kill. However, if the local allocator has determined the register has not been modified (possible when its value was reloaded), it would not issue a restore. In that case, mark the last use of the virtual register as kill. llvm-svn: 46111 | |||||
* | Replace std::vector<bool> with BitVector. | Evan Cheng | 2008-01-17 | 1 | -4/+8 | |
| | | | | llvm-svn: 46104 | |||||
* | rename TargetInstrDescriptor -> TargetInstrDesc. | Chris Lattner | 2008-01-07 | 1 | -1/+1 | |
| | | | | | | | Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695 | |||||
* | Update CodeGen for MRegisterInfo --> TargetInstrInfo changes. | Owen Anderson | 2008-01-07 | 1 | -1/+3 | |
| | | | | llvm-svn: 45673 | |||||
* | Move some more instruction creation methods from RegisterInfo into InstrInfo. | Owen Anderson | 2008-01-01 | 1 | -2/+6 | |
| | | | | llvm-svn: 45484 | |||||
* | Rename SSARegMap -> MachineRegisterInfo in keeping with the idea | Chris Lattner | 2007-12-31 | 1 | -41/+41 | |
| | | | | | | | | | | | | | | 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 | |||||
* | Remove attribution from file headers, per discussion on llvmdev. | Chris Lattner | 2007-12-29 | 1 | -2/+2 | |
| | | | | llvm-svn: 45418 | |||||
* | Add a argument to storeRegToStackSlot and storeRegToAddr to specify whether | Evan Cheng | 2007-12-05 | 1 | -1/+1 | |
| | | | | | | the stored register is killed. llvm-svn: 44600 | |||||
* | Remove redundant foldMemoryOperand variants and other code clean up. | Evan Cheng | 2007-12-02 | 1 | -1/+3 | |
| | | | | llvm-svn: 44517 | |||||
* | Add missing paratheses. | Evan Cheng | 2007-10-22 | 1 | -1/+1 | |
| | | | | llvm-svn: 43227 | |||||
* | Correctly handle implcit def / use operands. | Evan Cheng | 2007-06-26 | 1 | -52/+64 | |
| | | | | llvm-svn: 37740 | |||||
* | Change names from RA to something unique to get rid of naming conflicts with | Bill Wendling | 2007-05-08 | 1 | -21/+23 | |
| | | | | | | certain linkers... llvm-svn: 36944 | |||||
* | Drop 'const' | Devang Patel | 2007-05-03 | 1 | -2/+2 | |
| | | | | llvm-svn: 36662 | |||||
* | Use 'static const char' instead of 'static const int'. | Devang Patel | 2007-05-02 | 1 | -2/+2 | |
| | | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652 | |||||
* | Do not use typeinfo to identify pass in pass manager. | Devang Patel | 2007-05-01 | 1 | -0/+5 | |
| | | | | llvm-svn: 36632 |