diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-07-09 20:43:05 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-07-09 20:43:05 +0000 |
commit | 90fc0f4443726e8be01c2b1ce46bdf75632a1e26 (patch) | |
tree | 7cc7e733e9e3edb1b84935868b0fa49a6b7b2b39 /lib/CodeGen/SimpleRegisterCoalescing.cpp | |
parent | 6c7d3a16b3321c527e35322e869c73d47dba719d (diff) |
Remat uncoalescable COPY instrs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108010 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SimpleRegisterCoalescing.cpp')
-rw-r--r-- | lib/CodeGen/SimpleRegisterCoalescing.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/CodeGen/SimpleRegisterCoalescing.cpp b/lib/CodeGen/SimpleRegisterCoalescing.cpp index b547c1df74..e69d3e4fa7 100644 --- a/lib/CodeGen/SimpleRegisterCoalescing.cpp +++ b/lib/CodeGen/SimpleRegisterCoalescing.cpp @@ -781,6 +781,17 @@ SimpleRegisterCoalescing::UpdateRegDefsUses(const CoalescerPair &CP) { ReMaterializeTrivialDef(li_->getInterval(SrcReg), CopyDstReg, 0, UseMI)) continue; + + if (UseMI->isCopy() && + !UseMI->getOperand(1).getSubReg() && + !UseMI->getOperand(0).getSubReg() && + UseMI->getOperand(1).getReg() == SrcReg && + UseMI->getOperand(0).getReg() != SrcReg && + UseMI->getOperand(0).getReg() != DstReg && + !JoinedCopies.count(UseMI) && + ReMaterializeTrivialDef(li_->getInterval(SrcReg), + UseMI->getOperand(0).getReg(), 0, UseMI)) + continue; } SmallVector<unsigned,8> Ops; |