Skip the linear search if the answer is already known.
authorNick Lewycky <nicholas@mxc.ca>
Mon, 11 Sep 2006 17:23:34 +0000 (17:23 +0000)
committerNick Lewycky <nicholas@mxc.ca>
Mon, 11 Sep 2006 17:23:34 +0000 (17:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30251 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/PredicateSimplifier.cpp

index d59f71853a97a78ad2f24b0b3baf0bb1d45f572c..42ae6adbb45b639cbd5038f645097364b2a2aaf6 100644 (file)
@@ -501,30 +501,32 @@ Value *PredicateSimplifier::resolve(SetCondInst *SCI,
 
   Value *SCI0 = resolve(SCI->getOperand(0), KP),
         *SCI1 = resolve(SCI->getOperand(1), KP);
-  PropertySet::ConstPropertyIterator NE =
-                   KP.findProperty(PropertySet::NE, SCI0, SCI1);
-
-  if (NE != KP.Properties.end()) {
-    switch (SCI->getOpcode()) {
-      case Instruction::SetEQ:
-        return ConstantBool::False;
-      case Instruction::SetNE:
-        return ConstantBool::True;
-      case Instruction::SetLE:
-      case Instruction::SetGE:
-      case Instruction::SetLT:
-      case Instruction::SetGT:
-        break;
-      default:
-        assert(0 && "Unknown opcode in SetCondInst.");
-        break;
-    }
-  }
 
   ConstantIntegral *CI1 = dyn_cast<ConstantIntegral>(SCI0),
                    *CI2 = dyn_cast<ConstantIntegral>(SCI1);
 
-  if (!CI1 || !CI2) return SCI;
+  if (!CI1 || !CI2) {
+    PropertySet::ConstPropertyIterator NE =
+        KP.findProperty(PropertySet::NE, SCI0, SCI1);
+
+    if (NE != KP.Properties.end()) {
+      switch (SCI->getOpcode()) {
+        case Instruction::SetEQ:
+          return ConstantBool::False;
+        case Instruction::SetNE:
+          return ConstantBool::True;
+        case Instruction::SetLE:
+        case Instruction::SetGE:
+        case Instruction::SetLT:
+        case Instruction::SetGT:
+          break;
+        default:
+          assert(0 && "Unknown opcode in SetCondInst.");
+          break;
+      }
+    }
+    return SCI;
+  }
 
   switch(SCI->getOpcode()) {
     case Instruction::SetLE: