Revert bugpoint change due to buildbot breakage.
[oota-llvm.git] / tools / bugpoint / BugDriver.cpp
index 7a3339cc9582db0d810c3dc98c4fb442f562ca0c..cf7b1832187ceb7b42008ba29d80aea53b0fc67c 100644 (file)
@@ -66,12 +66,12 @@ std::string llvm::getPassesString(const std::vector<const PassInfo*> &Passes) {
   return Result;
 }
 
-BugDriver::BugDriver(const char *toolname, bool find_bugs,
+BugDriver::BugDriver(const char *toolname, bool as_child, bool find_bugs,
                      unsigned timeout, unsigned memlimit, bool use_valgrind,
                      LLVMContext& ctxt)
   : Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile),
     Program(0), Interpreter(0), SafeInterpreter(0), gcc(0),
-    run_find_bugs(find_bugs), Timeout(timeout), 
+    run_as_child(as_child), run_find_bugs(find_bugs), Timeout(timeout), 
     MemoryLimit(memlimit), UseValgrind(use_valgrind) {}
 
 BugDriver::~BugDriver() {
@@ -119,13 +119,15 @@ bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
   Program = ParseInputFile(Filenames[0], Context);
   if (Program == 0) return true;
     
-  outs() << "Read input file      : '" << Filenames[0] << "'\n";
+  if (!run_as_child)
+    outs() << "Read input file      : '" << Filenames[0] << "'\n";
 
   for (unsigned i = 1, e = Filenames.size(); i != e; ++i) {
     std::auto_ptr<Module> M(ParseInputFile(Filenames[i], Context));
     if (M.get() == 0) return true;
 
-    outs() << "Linking in input file: '" << Filenames[i] << "'\n";
+    if (!run_as_child)
+      outs() << "Linking in input file: '" << Filenames[i] << "'\n";
     std::string ErrorMessage;
     if (Linker::LinkModules(Program, M.get(), &ErrorMessage)) {
       errs() << ToolName << ": error linking in '" << Filenames[i] << "': "
@@ -134,7 +136,8 @@ bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
     }
   }
 
-  outs() << "*** All input ok\n";
+  if (!run_as_child)
+    outs() << "*** All input ok\n";
 
   // All input files read successfully!
   return false;
@@ -146,6 +149,14 @@ bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
 /// variables are set up from command line arguments.
 ///
 bool BugDriver::run(std::string &ErrMsg) {
+  // The first thing to do is determine if we're running as a child. If we are,
+  // then what to do is very narrow. This form of invocation is only called
+  // from the runPasses method to actually run those passes in a child process.
+  if (run_as_child) {
+    // Execute the passes
+    return runPassesAsChild(PassesToRun);
+  }
+  
   if (run_find_bugs) {
     // Rearrange the passes and apply them to the program. Repeat this process
     // until the user kills the program or we find a bug.