Move pass configuration out of pass constructors: BranchFolderPass
[oota-llvm.git] / tools / llvm-diff / DifferenceEngine.cpp
index b240d8c5da5d1f452b0ad6630b015df9554026ee..8113fd4c667c336120d5d5a9ea028dc4cfc38043 100644 (file)
@@ -319,15 +319,15 @@ class FunctionDifferenceEngine {
       bool Difference = false;
 
       DenseMap<ConstantInt*,BasicBlock*> LCases;
-      for (unsigned I = 1, E = LI->getNumCases(); I != E; ++I)
-        LCases[LI->getCaseValue(I)] = LI->getSuccessor(I);
-      for (unsigned I = 1, E = RI->getNumCases(); I != E; ++I) {
+      for (unsigned I = 0, E = LI->getNumCases(); I != E; ++I)
+        LCases[LI->getCaseValue(I)] = LI->getCaseSuccessor(I);
+      for (unsigned I = 0, E = RI->getNumCases(); I != E; ++I) {
         ConstantInt *CaseValue = RI->getCaseValue(I);
         BasicBlock *LCase = LCases[CaseValue];
         if (LCase) {
-          if (TryUnify) tryUnify(LCase, RI->getSuccessor(I));
+          if (TryUnify) tryUnify(LCase, RI->getCaseSuccessor(I));
           LCases.erase(CaseValue);
-        } else if (!Difference) {
+        } else if (Complain || !Difference) {
           if (Complain)
             Engine.logf("right switch has extra case %r") << CaseValue;
           Difference = true;
@@ -628,6 +628,8 @@ void FunctionDifferenceEngine::runBlockDiff(BasicBlock::iterator LStart,
 
 }
 
+void DifferenceEngine::Oracle::anchor() { }
+
 void DifferenceEngine::diff(Function *L, Function *R) {
   Context C(*this, L, R);