Check if in set on insertion instead of separately
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Sat, 24 Aug 2013 19:55:38 +0000 (19:55 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Sat, 24 Aug 2013 19:55:38 +0000 (19:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189179 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Vectorize/SLPVectorizer.cpp

index b1f097e2d8a57e0058c8a478e9b5c68925554ae3..2610e2457e71529ba3eee009813df6d0715e8e92 100644 (file)
@@ -1161,13 +1161,11 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
         ValueList Operands;
         BasicBlock *IBB = PH->getIncomingBlock(i);
 
-        if (VisitedBBs.count(IBB)) {
+        if (!VisitedBBs.insert(IBB)) {
           NewPhi->addIncoming(NewPhi->getIncomingValueForBlock(IBB), IBB);
           continue;
         }
 
-        VisitedBBs.insert(IBB);
-
         // Prepare the operand vector.
         for (unsigned j = 0; j < E->Scalars.size(); ++j)
           Operands.push_back(cast<PHINode>(E->Scalars[j])->
@@ -1851,9 +1849,8 @@ bool SLPVectorizer::vectorizeChainsInBlock(BasicBlock *BB, BoUpSLP &R) {
       break;
 
     // We may go through BB multiple times so skip the one we have checked.
-    if (VisitedInstrs.count(instr))
+    if (!VisitedInstrs.insert(instr))
       continue;
-    VisitedInstrs.insert(instr);
 
     // Stop constructing the list when you reach a different type.
     if (Incoming.size() && P->getType() != Incoming[0]->getType()) {
@@ -1879,9 +1876,8 @@ bool SLPVectorizer::vectorizeChainsInBlock(BasicBlock *BB, BoUpSLP &R) {
   for (BasicBlock::iterator it = BB->begin(), e = BB->end(); it != e; it++) {
 
     // We may go through BB multiple times so skip the one we have checked.
-    if (VisitedInstrs.count(it))
+    if (!VisitedInstrs.insert(it))
       continue;
-    VisitedInstrs.insert(it);
 
     if (isa<DbgInfoIntrinsic>(it))
       continue;