Allow disabling final cleanups
authorChris Lattner <sabre@nondot.org>
Wed, 21 May 2003 20:38:59 +0000 (20:38 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 21 May 2003 20:38:59 +0000 (20:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6271 91177308-0d34-0410-b5e6-96231b3b80d8

tools/bugpoint/ExtractFunction.cpp

index ac893629fb5427d0601d0eaf134df8365c3140bc..725ba599bd9b36a789159e6e381257e48076229e 100644 (file)
@@ -26,6 +26,9 @@ namespace {
   cl::opt<bool>
   NoSCFG("disable-simplifycfg",
          cl::desc("Do not use the -simplifycfg pass to reduce testcases"));
+  cl::opt<bool>
+  NoFinalCleanup("disable-final-cleanup",
+                 cl::desc("Disable the final cleanup phase of narrowing"));
 }
 
 /// deleteInstructionFromProgram - This method clones the current Program and
@@ -79,10 +82,17 @@ Module *BugDriver::deleteInstructionFromProgram(Instruction *I,
 Module *BugDriver::performFinalCleanups() const {
   Module *M = CloneModule(Program);
 
+  // Allow disabling these passes if they crash bugpoint.
+  //
+  // FIXME: This should eventually run these passes in a pass list to prevent
+  // them from being able to crash bugpoint at all!
+  //
+  if (NoFinalCleanup) return M;
+
   // Make all functions external, so GlobalDCE doesn't delete them...
   for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I)
     I->setLinkage(GlobalValue::ExternalLinkage);
-
+  
   PassManager CleanupPasses;
   CleanupPasses.add(createFunctionResolvingPass());
   CleanupPasses.add(createGlobalDCEPass());