Avoid if-converting simple block that ends with unconditional branch or fallthrough unless it branches / falls to the 'false' block. Not profitable, may end up increasing code size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37660 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/IfConversion.cpp b/lib/CodeGen/IfConversion.cpp
index 965cf6a..64328d6 100644
--- a/lib/CodeGen/IfConversion.cpp
+++ b/lib/CodeGen/IfConversion.cpp
@@ -399,6 +399,9 @@
   if (TrueBBI.IsBeingAnalyzed || TrueBBI.IsDone)
     return false;
 
+  if (TrueBBI.IsBrAnalyzable)
+    return false;
+
   if (TrueBBI.BB->pred_size() > 1) {
     if (TrueBBI.CannotBeCopied ||
         TrueBBI.NonPredSize > TLI->getIfCvtDupBlockSizeLimit())
@@ -406,7 +409,7 @@
     Dups = TrueBBI.NonPredSize;
   }
 
-  return !blockAlwaysFallThrough(TrueBBI) && TrueBBI.BrCond.size() == 0;
+  return true;
 }
 
 /// ValidTriangle - Returns true if the 'true' and 'false' blocks (along