summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MachineCopyPropagation.cpp
diff options
context:
space:
mode:
authorHao Liu <Hao.Liu@arm.com>2015-03-13 05:15:23 +0000
committerHao Liu <Hao.Liu@arm.com>2015-03-13 05:15:23 +0000
commit04183242b34d660cc5f265c329eca2fcb4d781e9 (patch)
treeaeca4d7aaf4f299aa3febb54bf2efadf41206989 /llvm/lib/CodeGen/MachineCopyPropagation.cpp
parent58d0e7ab79a33b2d8352765abbca2c03c34e09de (diff)
downloadbcm5719-llvm-04183242b34d660cc5f265c329eca2fcb4d781e9.tar.gz
bcm5719-llvm-04183242b34d660cc5f265c329eca2fcb4d781e9.zip
[MachineCopyPropagation] Fix a bug causing incorrect removal for the instruction sequences as follows
%Q5_Q6<def> = COPY %Q2_Q3 %D5<def> = %D3<def> = %D3<def> = COPY %D6 // Incorrectly removed in MachineCopyPropagation Using of %D3 results in incorrect result ... Reviewed in http://reviews.llvm.org/D8242 llvm-svn: 232142
Diffstat (limited to 'llvm/lib/CodeGen/MachineCopyPropagation.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineCopyPropagation.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/MachineCopyPropagation.cpp b/llvm/lib/CodeGen/MachineCopyPropagation.cpp
index cbd62728ace..96111225db5 100644
--- a/llvm/lib/CodeGen/MachineCopyPropagation.cpp
+++ b/llvm/lib/CodeGen/MachineCopyPropagation.cpp
@@ -75,10 +75,9 @@ MachineCopyPropagation::SourceNoLongerAvailable(unsigned Reg,
I != E; ++I) {
unsigned MappedDef = *I;
// Source of copy is no longer available for propagation.
- if (AvailCopyMap.erase(MappedDef)) {
- for (MCSubRegIterator SR(MappedDef, TRI); SR.isValid(); ++SR)
- AvailCopyMap.erase(*SR);
- }
+ AvailCopyMap.erase(MappedDef);
+ for (MCSubRegIterator SR(MappedDef, TRI); SR.isValid(); ++SR)
+ AvailCopyMap.erase(*SR);
}
}
}
OpenPOWER on IntegriCloud