Remove incorrect and poorly tested code for trying to reason about values on default...
authorOwen Anderson <resistor@mac.com>
Thu, 2 Sep 2010 22:16:52 +0000 (22:16 +0000)
committerOwen Anderson <resistor@mac.com>
Thu, 2 Sep 2010 22:16:52 +0000 (22:16 +0000)
switches.  Just return the conservatively correct answer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112876 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/LazyValueInfo.cpp

index ff98bf97711aed70353eeb6c6cecc8e6a353b418..b4923f9a717b43dc373fbdbee44d1b13cf8bc09c 100644 (file)
@@ -670,25 +670,11 @@ LVILatticeVal LVIQuery::getEdgeValue(BasicBlock *BBFrom, BasicBlock *BBTo) {
   // If the edge was formed by a switch on the value, then we may know exactly
   // what it is.
   if (SwitchInst *SI = dyn_cast<SwitchInst>(BBFrom->getTerminator())) {
-    // If BBTo is the default destination of the switch, we know that it 
-    // doesn't have the same value as any of the cases.
     if (SI->getCondition() == Val) {
+      // We don't know anything in the default case.
       if (SI->getDefaultDest() == BBTo) {
-        const IntegerType *IT = cast<IntegerType>(Val->getType());
-        ConstantRange CR(IT->getBitWidth());
-        
-        for (unsigned i = 1, e = SI->getNumSuccessors(); i != e; ++i) {
-          const APInt CaseVal = SI->getCaseValue(i)->getValue();
-          ConstantRange CaseRange(CaseVal, CaseVal+1);
-          CaseRange = CaseRange.inverse();
-          CR = CR.intersectWith(CaseRange);
-        }
-        
         LVILatticeVal Result;
-        if (CR.isFullSet() || CR.isEmptySet())
-          Result.markOverdefined();
-        else
-          Result.markConstantRange(CR);
+        Result.markOverdefined();
         return Result;
       }