]> granicus.if.org Git - llvm/commitdiff
[SCEV] Use a "Discovered" set instead of a "Visited" set; NFC
authorSanjoy Das <sanjoy@playingwithpointers.com>
Mon, 4 Dec 2017 19:22:01 +0000 (19:22 +0000)
committerSanjoy Das <sanjoy@playingwithpointers.com>
Mon, 4 Dec 2017 19:22:01 +0000 (19:22 +0000)
Suggested by Max Kazantsev in https://reviews.llvm.org/D39361

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319679 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/ScalarEvolution.cpp

index 98c2845c1e6fccd3ea3703f24118ab869cbaabde..8e60ca01c0276724f881f238ffa4b600face1e9b 100644 (file)
@@ -6414,11 +6414,9 @@ ScalarEvolution::getBackedgeTakenInfo(const Loop *L) {
     SmallVector<Instruction *, 16> Worklist;
     PushLoopPHIs(L, Worklist);
 
-    SmallPtrSet<Instruction *, 8> Visited;
+    SmallPtrSet<Instruction *, 8> Discovered;
     while (!Worklist.empty()) {
       Instruction *I = Worklist.pop_back_val();
-      if (!Visited.insert(I).second)
-        continue;
 
       ValueExprMapType::iterator It =
         ValueExprMap.find_as(static_cast<Value *>(I));
@@ -6460,7 +6458,8 @@ ScalarEvolution::getBackedgeTakenInfo(const Loop *L) {
       for (auto *U : I->users())
         if (auto *I = dyn_cast<Instruction>(U)) {
           auto *LoopForUser = LI.getLoopFor(I->getParent());
-          if (LoopForUser && L->contains(LoopForUser))
+          if (LoopForUser && L->contains(LoopForUser) &&
+              Discovered.insert(I).second)
             Worklist.push_back(I);
         }
     }