Simplify potentially quadratic behavior while erasing elements from std::vector.
authorJakub Staszak <kubastaszak@gmail.com>
Tue, 16 Oct 2012 19:32:31 +0000 (19:32 +0000)
committerJakub Staszak <kubastaszak@gmail.com>
Tue, 16 Oct 2012 19:32:31 +0000 (19:32 +0000)
llvm-svn: 166045

llvm/lib/Transforms/Scalar/DCE.cpp

index 086f0a1..8d53443 100644 (file)
@@ -118,13 +118,7 @@ bool DCE::runOnFunction(Function &F) {
       I->eraseFromParent();
 
       // Remove the instruction from the worklist if it still exists in it.
-      for (std::vector<Instruction*>::iterator WI = WorkList.begin();
-           WI != WorkList.end(); ) {
-        if (*WI == I)
-          WI = WorkList.erase(WI);
-        else
-          ++WI;
-      }
+      WorkList.erase(std::remove(WorkList.begin(), WorkList.end(), I), WorkList.end());
 
       MadeChange = true;
       ++DCEEliminated;