summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-06-07 16:13:49 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-06-07 16:13:49 +0000
commita857fe115b9f4d64b17dee48664dad364dd23a18 (patch)
tree54759cb1f106e07e9c272e3a9ea5a7d406b4518c /llvm/lib
parent1edacecef442764fd3dc68e07d907f947ce20538 (diff)
downloadbcm5719-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.cpp8
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;
OpenPOWER on IntegriCloud