diff options
author | Hao Liu <Hao.Liu@arm.com> | 2015-03-13 05:15:23 +0000 |
---|---|---|
committer | Hao Liu <Hao.Liu@arm.com> | 2015-03-13 05:15:23 +0000 |
commit | 04183242b34d660cc5f265c329eca2fcb4d781e9 (patch) | |
tree | aeca4d7aaf4f299aa3febb54bf2efadf41206989 /llvm/lib/CodeGen/MachineCopyPropagation.cpp | |
parent | 58d0e7ab79a33b2d8352765abbca2c03c34e09de (diff) | |
download | bcm5719-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.cpp | 7 |
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); } } } |