Add -silence-passes option to bugpoint. This option suppresses output generated
authorMatthijs Kooijman <matthijs@stdin.nl>
Thu, 12 Jun 2008 13:02:26 +0000 (13:02 +0000)
committerMatthijs Kooijman <matthijs@stdin.nl>
Thu, 12 Jun 2008 13:02:26 +0000 (13:02 +0000)
when bugpoint is running passes in a child process.

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

tools/bugpoint/OptimizerDriver.cpp

index b08171bc587971d9d137cbafe993403c153ecc79..3ded5e866b3e025baaea3eee40a49dcd3df6ff2d 100644 (file)
@@ -114,6 +114,8 @@ int BugDriver::runPassesAsChild(const std::vector<const PassInfo*> &Passes) {
   return 0;
 }
 
+cl::opt<bool> SilencePasses("silence-passes", cl::desc("Suppress output of running passes (both stdout and stderr)"));
+
 /// runPasses - Run the specified passes on Program, outputting a bitcode file
 /// and writing the filename into OutputFile if successful.  If the
 /// optimizations fail for some reason (optimizer crashes), return true,
@@ -192,7 +194,12 @@ bool BugDriver::runPasses(const std::vector<const PassInfo*> &Passes,
     prog = sys::Program::FindProgramByName("valgrind");
   else
     prog = tool;
-  int result = sys::Program::ExecuteAndWait(prog, args, 0, 0,
+  
+  // Redirect stdout and stderr to nowhere if SilencePasses is given
+  sys::Path Nowhere;
+  const sys::Path *Redirects[3] = {0, &Nowhere, &Nowhere};
+
+  int result = sys::Program::ExecuteAndWait(prog, args, 0, (SilencePasses ? Redirects : 0),
                                             Timeout, MemoryLimit, &ErrMsg);
 
   // If we are supposed to delete the bitcode file or if the passes crashed,