diff options
author | Dale Johannesen <dalej@apple.com> | 2008-09-19 01:02:35 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2008-09-19 01:02:35 +0000 |
commit | fa48f941304f29f967e0a7fc6807d7026ba99b7b (patch) | |
tree | a8f9875394aebdba26f7d1b2f886ead96f181e1f /include/llvm/CodeGen | |
parent | 4fe0fe8b493437e91f8510b81462ff39f0d889ca (diff) | |
download | external_llvm-fa48f941304f29f967e0a7fc6807d7026ba99b7b.zip external_llvm-fa48f941304f29f967e0a7fc6807d7026ba99b7b.tar.gz external_llvm-fa48f941304f29f967e0a7fc6807d7026ba99b7b.tar.bz2 |
Remove AsmThatEarlyClobber etc. from LiveIntervalAnalysis
and redo as linked list walk. Logic moved into RA.
Per review feedback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56326 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen')
-rw-r--r-- | include/llvm/CodeGen/LiveInterval.h | 9 | ||||
-rw-r--r-- | include/llvm/CodeGen/LiveIntervalAnalysis.h | 21 |
2 files changed, 7 insertions, 23 deletions
diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h index 5e5e4b1..8b9eb53 100644 --- a/include/llvm/CodeGen/LiveInterval.h +++ b/include/llvm/CodeGen/LiveInterval.h @@ -105,12 +105,17 @@ namespace llvm { // if the top bits is set, it represents a stack slot. unsigned preference; // preferred register to allocate for this interval float weight; // weight of this interval + bool isEarlyClobber; + bool overlapsEarlyClobber; Ranges ranges; // the ranges in which this register is live VNInfoList valnos; // value#'s public: - LiveInterval(unsigned Reg, float Weight, bool IsSS = false) - : reg(Reg), preference(0), weight(Weight) { + LiveInterval(unsigned Reg, float Weight, bool IsSS = false, + bool IsEarlyClobber = false, bool OverlapsEarlyClobber = false) + : reg(Reg), preference(0), weight(Weight), + isEarlyClobber(IsEarlyClobber), + overlapsEarlyClobber(OverlapsEarlyClobber) { if (IsSS) reg = reg | (1U << (sizeof(unsigned)*8-1)); } diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h index 31eadcf..1910649 100644 --- a/include/llvm/CodeGen/LiveIntervalAnalysis.h +++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h @@ -65,22 +65,6 @@ namespace llvm { AliasAnalysis *aa_; LiveVariables* lv_; - /// AsmsWithEarlyClobber - maps a virtual register number to all the - /// inline asm's that have the register marked earlyclobber. - /// - std::multimap<unsigned, MachineInstr*> AsmsThatEarlyClobber; - - /// AsmsWithEarlyClobberConflict - maps a virtual register number - /// to all the inline asm's that have earlyclobber operands elsewhere - /// and use the register as a (non-earlyclobber) input. - /// - /// Note: earlyclobber operands may not be assigned the same register as - /// each other, or as earlyclobber-conflict operands. However two - /// earlyclobber-conflict operands may be assigned the same register if - /// they happen to contain the same value. - /// - std::multimap<unsigned, MachineInstr*> AsmsWithEarlyClobberConflict; - /// Special pool allocator for VNInfo's (LiveInterval val#). /// BumpPtrAllocator VNInfoAllocator; @@ -353,11 +337,6 @@ namespace llvm { unsigned getNumConflictsWithPhysReg(const LiveInterval &li, unsigned PhysReg) const; - /// noEarlyclobberConflict - see whether virtual reg VReg has a conflict - /// with hard reg HReg because HReg is used as an earlyclobber register in - /// asm that also has VReg live into or across it. - bool noEarlyclobberConflict(unsigned VReg, VirtRegMap &vrm, unsigned HReg); - /// computeNumbering - Compute the index numbering. void computeNumbering(); |