Bugpoint's default memory limit (100MB) was too low for valgrind, so
authorJeffrey Yasskin <jyasskin@google.com>
Fri, 19 Mar 2010 00:09:28 +0000 (00:09 +0000)
committerJeffrey Yasskin <jyasskin@google.com>
Fri, 19 Mar 2010 00:09:28 +0000 (00:09 +0000)
this patch raises the default to 800MB when valgrind's active.  800
was chosen semi-arbitrarily.

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

tools/bugpoint/BugDriver.cpp
tools/bugpoint/BugDriver.h
tools/bugpoint/OptimizerDriver.cpp
tools/bugpoint/bugpoint.cpp

index abf5d8ef7211b219ab5ccf4dfb695153f68f92d1..813c96cc795deb81fcdb9fa6824bd365b901f608 100644 (file)
@@ -68,12 +68,12 @@ std::string llvm::getPassesString(const std::vector<const PassInfo*> &Passes) {
 }
 
 BugDriver::BugDriver(const char *toolname, bool as_child, bool find_bugs,
-                     unsigned timeout, unsigned memlimit,
+                     unsigned timeout, unsigned memlimit, bool use_valgrind,
                      LLVMContext& ctxt)
   : Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile),
     Program(0), Interpreter(0), SafeInterpreter(0), gcc(0),
     run_as_child(as_child), run_find_bugs(find_bugs), Timeout(timeout), 
-    MemoryLimit(memlimit)  {}
+    MemoryLimit(memlimit), UseValgrind(use_valgrind) {}
 
 
 /// ParseInputFile - Given a bitcode or assembly input filename, parse and
index db35c851d9a43322878e3921e0f654077ec3fbbd..0a10a61c2159186c5d2b969bae3bb6239ddad0cc 100644 (file)
@@ -55,6 +55,7 @@ class BugDriver {
   bool run_find_bugs;
   unsigned Timeout;
   unsigned MemoryLimit;
+  bool UseValgrind;
 
   // FIXME: sort out public/private distinctions...
   friend class ReducePassList;
@@ -62,7 +63,8 @@ class BugDriver {
 
 public:
   BugDriver(const char *toolname, bool as_child, bool find_bugs,
-            unsigned timeout, unsigned memlimit, LLVMContext& ctxt);
+            unsigned timeout, unsigned memlimit, bool use_valgrind,
+            LLVMContext& ctxt);
 
   const char *getToolName() const { return ToolName; }
 
index 9f712e097a74b6386177bba9bde8030faa76cfd0..3a6149b24a529f8657852b5c895a447c15f9c389 100644 (file)
@@ -45,8 +45,6 @@ namespace {
   // ChildOutput - This option captures the name of the child output file that
   // is set up by the parent bugpoint process
   cl::opt<std::string> ChildOutput("child-output", cl::ReallyHidden);
-  cl::opt<bool> UseValgrind("enable-valgrind",
-                            cl::desc("Run optimizations through valgrind"));
 }
 
 /// writeProgramToFile - This writes the current "Program" to the named bitcode
index 565f3f9a70876864bfcf7e0904e3cbea8bbc1971..e14f31e67d8517b540beecb8c75183038e9791d9 100644 (file)
@@ -25,6 +25,7 @@
 #include "llvm/Support/StandardPasses.h"
 #include "llvm/System/Process.h"
 #include "llvm/System/Signals.h"
+#include "llvm/System/Valgrind.h"
 #include "llvm/LinkAllVMCore.h"
 using namespace llvm;
 
@@ -48,9 +49,14 @@ TimeoutValue("timeout", cl::init(300), cl::value_desc("seconds"),
              cl::desc("Number of seconds program is allowed to run before it "
                       "is killed (default is 300s), 0 disables timeout"));
 
-static cl::opt<unsigned>
-MemoryLimit("mlimit", cl::init(100), cl::value_desc("MBytes"),
-             cl::desc("Maximum amount of memory to use. 0 disables check."));
+static cl::opt<int>
+MemoryLimit("mlimit", cl::init(-1), cl::value_desc("MBytes"),
+             cl::desc("Maximum amount of memory to use. 0 disables check."
+                      " Defaults to 100MB (800MB under valgrind)."));
+
+static cl::opt<bool>
+UseValgrind("enable-valgrind",
+            cl::desc("Run optimizations through valgrind"));
 
 // The AnalysesList is automatically populated with registered Passes by the
 // PassNameParser.
@@ -108,7 +114,17 @@ int main(int argc, char **argv) {
     outs() << "Override triple set to '" << OverrideTriple << "'\n";
   }
 
-  BugDriver D(argv[0], AsChild, FindBugs, TimeoutValue, MemoryLimit, Context);
+  if (MemoryLimit < 0) {
+    // Set the default MemoryLimit.  Be sure to update the flag's description if
+    // you change this.
+    if (sys::RunningOnValgrind() || UseValgrind)
+      MemoryLimit = 800;
+    else
+      MemoryLimit = 100;
+  }
+
+  BugDriver D(argv[0], AsChild, FindBugs, TimeoutValue, MemoryLimit,
+              UseValgrind, Context);
   if (D.addSources(InputFilenames)) return 1;
   
   AddToDriver PM(D);