diff options
author | Evan Cheng <evan.cheng@apple.com> | 2012-02-27 21:46:42 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2012-02-27 21:46:42 +0000 |
commit | ddeb9d11fee7c02f4c52831dc5d3191cc0124b3f (patch) | |
tree | 94e0d6c12ffbbc71b9d95f1cdfd53673d5331da4 /llvm/lib/CodeGen/MachineCopyPropagation.cpp | |
parent | 205fbeb54a1ad3b413a4e5f103c88f974b3ae42c (diff) | |
download | llvm-ddeb9d11fee7c02f4c52831dc5d3191cc0124b3f.zip llvm-ddeb9d11fee7c02f4c52831dc5d3191cc0124b3f.tar.gz llvm-ddeb9d11fee7c02f4c52831dc5d3191cc0124b3f.tar.bz2 |
Fix for PR12090: clear def maps of aliases when visiting a copy. e.g.
%S5<def> = COPY %S0<kill>
First clear def map of Q1, etc.
No small test case available.
llvm-svn: 151574
Diffstat (limited to 'llvm/lib/CodeGen/MachineCopyPropagation.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineCopyPropagation.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineCopyPropagation.cpp b/llvm/lib/CodeGen/MachineCopyPropagation.cpp index 9ed7b73..8a9786d 100644 --- a/llvm/lib/CodeGen/MachineCopyPropagation.cpp +++ b/llvm/lib/CodeGen/MachineCopyPropagation.cpp @@ -199,6 +199,11 @@ bool MachineCopyPropagation::CopyPropagateBlock(MachineBasicBlock &MBB) { SourceNoLongerAvailable(Def, SrcMap, AvailCopyMap); // Remember Def is defined by the copy. + // ... Make sure to clear the def maps of aliases first. + for (const unsigned *AS = TRI->getAliasSet(Def); *AS; ++AS) { + CopyMap.erase(*AS); + AvailCopyMap.erase(*AS); + } CopyMap[Def] = MI; AvailCopyMap[Def] = MI; for (const unsigned *SR = TRI->getSubRegisters(Def); *SR; ++SR) { |