Index: lib/CodeGen/IfConversion.cpp
===================================================================
--- lib/CodeGen/IfConversion.cpp
+++ lib/CodeGen/IfConversion.cpp
@@ -359,8 +359,7 @@
 
   std::vector<std::unique_ptr<IfcvtToken>> Tokens;
   MadeChange = false;
-  unsigned NumIfCvts = NumSimple + NumSimpleFalse + NumTriangle +
-    NumTriangleRev + NumTriangleFalse + NumTriangleFRev + NumDiamonds;
+  unsigned NumIfCvts = 0;
   while (IfCvtLimit == -1 || (int)NumIfCvts < IfCvtLimit) {
     // Do an initial analysis for each basic block and find all the potential
     // candidates to perform if-conversion.
@@ -464,8 +463,9 @@
 
       Change |= RetVal;
 
-      NumIfCvts = NumSimple + NumSimpleFalse + NumTriangle + NumTriangleRev +
-        NumTriangleFalse + NumTriangleFRev + NumDiamonds;
+      if (RetVal)
+        ++NumIfCvts;
+
       if (IfCvtLimit != -1 && (int)NumIfCvts >= IfCvtLimit)
         break;
     }