diff --git a/tools/bugpoint/CrashDebugger.cpp b/tools/bugpoint/CrashDebugger.cpp
index ba12621..4225a40 100644
--- a/tools/bugpoint/CrashDebugger.cpp
+++ b/tools/bugpoint/CrashDebugger.cpp
@@ -21,6 +21,7 @@
 #include "llvm/Pass.h"
 #include "llvm/PassManager.h"
 #include "llvm/ValueSymbolTable.h"
+#include "llvm/ADT/SmallPtrSet.h"
 #include "llvm/Analysis/Verifier.h"
 #include "llvm/Support/CFG.h"
 #include "llvm/Transforms/Scalar.h"
@@ -267,21 +268,9 @@
   Module *M = CloneModule(BD.getProgram(), ValueMap);
 
   // Convert list to set for fast lookup...
-  std::set<BasicBlock*> Blocks;
-  for (unsigned i = 0, e = BBs.size(); i != e; ++i) {
-    // Convert the basic block from the original module to the new module...
-    const Function *F = BBs[i]->getParent();
-    Function *CMF = cast<Function>(ValueMap[F]);
-    assert(CMF && "Function not in module?!");
-    assert(CMF->getFunctionType() == F->getFunctionType() && "wrong type?");
-    assert(CMF->getName() == F->getName() && "wrong name?");
-
-    // Get the mapped basic block...
-    Function::iterator CBI = CMF->begin();
-    std::advance(CBI, std::distance(F->begin(),
-                                    Function::const_iterator(BBs[i])));
-    Blocks.insert(CBI);
-  }
+  SmallPtrSet<BasicBlock*, 8> Blocks;
+  for (unsigned i = 0, e = BBs.size(); i != e; ++i)
+    Blocks.insert(cast<BasicBlock>(ValueMap[BBs[i]]));
 
   std::cout << "Checking for crash with only these blocks:";
   unsigned NumPrint = Blocks.size();
@@ -320,8 +309,8 @@
   // have to take.
   std::vector<std::pair<Function*, std::string> > BlockInfo;
 
-  for (std::set<BasicBlock*>::iterator I = Blocks.begin(), E = Blocks.end();
-       I != E; ++I)
+  for (SmallPtrSet<BasicBlock*, 8>::iterator I = Blocks.begin(),
+         E = Blocks.end(); I != E; ++I)
     BlockInfo.push_back(std::make_pair((*I)->getParent(), (*I)->getName()));
 
   // Now run the CFG simplify pass on the function...
