diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-07-06 20:31:51 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-07-06 20:31:51 +0000 |
commit | 9c2e7ca3513bf41ad4dd9ff807e0d2742f592722 (patch) | |
tree | f6f08a60c9c1ad581ca4e0e0c2042fec89257b0a /include/llvm/CodeGen | |
parent | 14152b480d09c7ca912af7c06d00b0ff3912e4f5 (diff) | |
download | external_llvm-9c2e7ca3513bf41ad4dd9ff807e0d2742f592722.zip external_llvm-9c2e7ca3513bf41ad4dd9ff807e0d2742f592722.tar.gz external_llvm-9c2e7ca3513bf41ad4dd9ff807e0d2742f592722.tar.bz2 |
Be more forgiving when calculating alias interference for physreg coalescing.
It is OK for an alias live range to overlap if there is a copy to or from the
physical register. CoalescerPair can work out if the copy is coalescable
independently of the alias.
This means that we can join with the actual destination interval instead of
using the getOrigDstReg() hack. It is no longer necessary to merge clobber
ranges into subregisters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107695 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen')
-rw-r--r-- | include/llvm/CodeGen/RegisterCoalescer.h | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/include/llvm/CodeGen/RegisterCoalescer.h b/include/llvm/CodeGen/RegisterCoalescer.h index 7aec10c..7644433 100644 --- a/include/llvm/CodeGen/RegisterCoalescer.h +++ b/include/llvm/CodeGen/RegisterCoalescer.h @@ -165,9 +165,6 @@ namespace llvm { /// virtual register. unsigned subIdx_; - /// origDstReg_ - dstReg_ without subreg adjustments. - unsigned origDstReg_; - /// partial_ - True when the original copy was a partial subregister copy. bool partial_; @@ -192,8 +189,7 @@ namespace llvm { public: CoalescerPair(const TargetInstrInfo &tii, const TargetRegisterInfo &tri) : tii_(tii), tri_(tri), dstReg_(0), srcReg_(0), subIdx_(0), - origDstReg_(0), partial_(false), crossClass_(false), flipped_(false), - newRC_(0) {} + partial_(false), crossClass_(false), flipped_(false), newRC_(0) {} /// setRegisters - set registers to match the copy instruction MI. Return /// false if MI is not a coalescable copy instruction. @@ -232,10 +228,6 @@ namespace llvm { /// coalesced into, or 0. unsigned getSubIdx() const { return subIdx_; } - /// getOrigDstReg - Return DstReg as it appeared in the original copy - /// instruction before any subreg adjustments. - unsigned getOrigDstReg() const { return isPhys() ? origDstReg_ : dstReg_; } - /// getNewRC - Return the register class of the coalesced register. const TargetRegisterClass *getNewRC() const { return newRC_; } }; |