[llvm-commits] [llvm] r121675 - /llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp

Chris Lattner sabre at nondot.org
Sun Dec 12 20:15:19 PST 2010


Author: lattner
Date: Sun Dec 12 22:15:19 2010
New Revision: 121675

URL: http://llvm.org/viewvc/llvm-project?rev=121675&view=rev
Log:
inline a function, making the result much simpler.

Modified:
    llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp

Modified: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp?rev=121675&r1=121674&r2=121675&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp Sun Dec 12 22:15:19 2010
@@ -347,31 +347,6 @@
   return 0;
 }
 
-/// GatherValueComparisons - If the specified Cond is an 'and' or 'or' of a
-/// bunch of comparisons of one value against constants, return the value and
-/// the constants being compared.
-static bool GatherValueComparisons(Value *CondV, Value *&CompVal,
-                                   std::vector<ConstantInt*> &Values,
-                                   const TargetData *TD) {
-  Instruction *Cond = dyn_cast<Instruction>(CondV);
-  if (Cond == 0) return false;
-  
-  if (Cond->getOpcode() == Instruction::Or) {
-    CompVal = GatherConstantSetEQs(Cond, Values, TD);
-
-    // Return true to indicate that the condition is true if the CompVal is
-    // equal to one of the constants.
-    return true;
-  }
-  if (Cond->getOpcode() == Instruction::And) {
-    CompVal = GatherConstantSetNEs(Cond, Values, TD);
-
-    // Return false to indicate that the condition is false if the CompVal is
-    // equal to one of the constants.
-    return false;
-  }
-  return false;
-}
 
 static void EraseTerminatorInstAndDCECond(TerminatorInst *TI) {
   Instruction* Cond = 0;
@@ -2096,8 +2071,17 @@
       // 'setne's and'ed together, collect them.
       Value *CompVal = 0;
       std::vector<ConstantInt*> Values;
-      bool TrueWhenEqual = GatherValueComparisons(BI->getCondition(), CompVal,
-                                                  Values, TD);
+      bool TrueWhenEqual = true;
+      
+      if (Instruction *Cond = dyn_cast<Instruction>(BI->getCondition())) {
+        if (Cond->getOpcode() == Instruction::Or) {
+          CompVal = GatherConstantSetEQs(Cond, Values, TD);
+        } else if (Cond->getOpcode() == Instruction::And) {
+          CompVal = GatherConstantSetNEs(Cond, Values, TD);
+          TrueWhenEqual = false;
+        }
+      }
+
       if (CompVal) {
         // There might be duplicate constants in the list, which the switch
         // instruction can't handle, remove them now.





More information about the llvm-commits mailing list