Clean up spill weight computation. Also some changes to give loop induction

variable increment / decrement slighter high priority. 

This has major impact on some micro-benchmarks. On MultiSource/Applications
and spec tests, it's a minor win. It also reduce 256.bzip instruction count
by 8%, 55 on 164.gzip on i386 / Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82485 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2009-09-21 21:12:25 +00:00
parent b2bb7db9e2
commit cf985a9545
9 changed files with 145 additions and 68 deletions

View File

@@ -123,7 +123,6 @@ namespace llvm {
/// classes. The registers may be either phys or virt regs.
bool differingRegisterClasses(unsigned RegA, unsigned RegB) const;
/// AdjustCopiesBackFrom - We found a non-trivially-coalescable copy. If
/// the source value number is defined by a copy from the destination reg
/// see if we can merge these two destination reg valno# into a single
@@ -235,13 +234,15 @@ namespace llvm {
/// lastRegisterUse - Returns the last use of the specific register between
/// cycles Start and End or NULL if there are no uses.
MachineOperand *lastRegisterUse(MachineInstrIndex Start, MachineInstrIndex End,
unsigned Reg, MachineInstrIndex &LastUseIdx) const;
MachineOperand *lastRegisterUse(MachineInstrIndex Start,
MachineInstrIndex End, unsigned Reg,
MachineInstrIndex &LastUseIdx) const;
/// CalculateSpillWeights - Compute spill weights for all virtual register
/// live intervals.
void CalculateSpillWeights();
void printRegName(unsigned reg) const;
/// Returns true if the given live interval is zero length.
bool isZeroLengthInterval(LiveInterval *li) const;
};
} // End llvm namespace