[ValueTracking] Slightly clean up programUndefinedIfUndefOrPoison() (NFC)
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 30 Apr 2021 21:05:41 +0000 (23:05 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 30 Apr 2021 21:05:41 +0000 (23:05 +0200)
Use contains() to check set membership, and adjust an oddly
structured loop.

llvm/lib/Analysis/ValueTracking.cpp

index e2c7253..369ac42 100644 (file)
@@ -5400,10 +5400,9 @@ static bool programUndefinedIfUndefOrPoison(const Value *V,
 
       SmallPtrSet<const Value *, 4> WellDefinedOps;
       getGuaranteedWellDefinedOps(&I, WellDefinedOps);
-      for (auto *Op : WellDefinedOps) {
-        if (Op == V)
-          return true;
-      }
+      if (WellDefinedOps.contains(V))
+        return true;
+
       if (!isGuaranteedToTransferExecutionToSuccessor(&I))
         break;
     }
@@ -5439,16 +5438,12 @@ static bool programUndefinedIfUndefOrPoison(const Value *V,
         for_each(I.users(), Propagate);
     }
 
-    if (auto *NextBB = BB->getSingleSuccessor()) {
-      if (Visited.insert(NextBB).second) {
-        BB = NextBB;
-        Begin = BB->getFirstNonPHI()->getIterator();
-        End = BB->end();
-        continue;
-      }
-    }
+    BB = BB->getSingleSuccessor();
+    if (!BB || !Visited.insert(BB).second)
+      break;
 
-    break;
+    Begin = BB->getFirstNonPHI()->getIterator();
+    End = BB->end();
   }
   return false;
 }