aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-07-06 20:31:51 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-07-06 20:31:51 +0000
commit9c2e7ca3513bf41ad4dd9ff807e0d2742f592722 (patch)
treef6f08a60c9c1ad581ca4e0e0c2042fec89257b0a /include/llvm/CodeGen
parent14152b480d09c7ca912af7c06d00b0ff3912e4f5 (diff)
downloadexternal_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.h10
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_; }
};