summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-07-09 20:43:05 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-07-09 20:43:05 +0000
commite9fdcaa68a1ad859a7ac6f764c324a8aedca4809 (patch)
tree111aaf6ca0212f654942a92024630b31f57662d3 /llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp
parentc982c768d248b21b82fbd70b61a4cc824cd82ddc (diff)
downloadbcm5719-llvm-e9fdcaa68a1ad859a7ac6f764c324a8aedca4809.tar.gz
bcm5719-llvm-e9fdcaa68a1ad859a7ac6f764c324a8aedca4809.zip
Remat uncoalescable COPY instrs
llvm-svn: 108010
Diffstat (limited to 'llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp')
-rw-r--r--llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp b/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp
index b547c1df743..e69d3e4fa78 100644
--- a/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp
+++ b/llvm/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;
OpenPOWER on IntegriCloud