diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2013-06-07 16:13:49 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2013-06-07 16:13:49 +0000 |
| commit | a857fe115b9f4d64b17dee48664dad364dd23a18 (patch) | |
| tree | 54759cb1f106e07e9c272e3a9ea5a7d406b4518c /llvm/lib | |
| parent | 1edacecef442764fd3dc68e07d907f947ce20538 (diff) | |
| download | bcm5719-llvm-a857fe115b9f4d64b17dee48664dad364dd23a18.tar.gz bcm5719-llvm-a857fe115b9f4d64b17dee48664dad364dd23a18.zip | |
R600: Fix a potential iterator invalidation issue.
As a bonus this reduces the loop from O(n^2) to O(n).
llvm-svn: 183532
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp b/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp index 9d237bb7a04..0c123a101e7 100644 --- a/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp +++ b/llvm/lib/Target/R600/R600OptimizeVectorRegisters.cpp @@ -198,11 +198,9 @@ MachineInstr *R600VectorRegMerger::RebuildVector( .addReg(SubReg) .addImm(Chan); UpdatedRegToChan[SubReg] = Chan; - for (std::vector<unsigned>::iterator RemoveIt = UpdatedUndef.begin(), - RemoveE = UpdatedUndef.end(); RemoveIt != RemoveE; ++ RemoveIt) { - if (*RemoveIt == Chan) - UpdatedUndef.erase(RemoveIt); - } + UpdatedUndef.erase( + std::remove(UpdatedUndef.begin(), UpdatedUndef.end(), Chan), + UpdatedUndef.end()); DEBUG(dbgs() << " ->"; Tmp->dump();); (void)Tmp; SrcVec = DstReg; |

