aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Yasskin <jyasskin@google.com>2010-03-19 00:09:28 +0000
committerJeffrey Yasskin <jyasskin@google.com>2010-03-19 00:09:28 +0000
commitc3e6859d8dc9014fee8023497153add9a2148f22 (patch)
tree17e82c7006d8846d002afee47fc6b0229d5151e3
parentf30187a36324fb75042d9ffd20c3fb70aff7763d (diff)
Bugpoint's default memory limit (100MB) was too low for valgrind, so
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
-rw-r--r--tools/bugpoint/BugDriver.cpp4
-rw-r--r--tools/bugpoint/BugDriver.h4
-rw-r--r--tools/bugpoint/OptimizerDriver.cpp2
-rw-r--r--tools/bugpoint/bugpoint.cpp24
4 files changed, 25 insertions, 9 deletions
diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp
index abf5d8ef72..813c96cc79 100644
--- a/tools/bugpoint/BugDriver.cpp
+++ b/tools/bugpoint/BugDriver.cpp
@@ -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
diff --git a/tools/bugpoint/BugDriver.h b/tools/bugpoint/BugDriver.h
index db35c851d9..0a10a61c21 100644
--- a/tools/bugpoint/BugDriver.h
+++ b/tools/bugpoint/BugDriver.h
@@ -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; }
diff --git a/tools/bugpoint/OptimizerDriver.cpp b/tools/bugpoint/OptimizerDriver.cpp
index 9f712e097a..3a6149b24a 100644
--- a/tools/bugpoint/OptimizerDriver.cpp
+++ b/tools/bugpoint/OptimizerDriver.cpp
@@ -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
diff --git a/tools/bugpoint/bugpoint.cpp b/tools/bugpoint/bugpoint.cpp
index 565f3f9a70..e14f31e67d 100644
--- a/tools/bugpoint/bugpoint.cpp
+++ b/tools/bugpoint/bugpoint.cpp
@@ -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);