summaryrefslogtreecommitdiff
path: root/tools/bugpoint/bugpoint.cpp
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 /tools/bugpoint/bugpoint.cpp
parentf30187a36324fb75042d9ffd20c3fb70aff7763d (diff)
downloadllvm-c3e6859d8dc9014fee8023497153add9a2148f22.tar.gz
llvm-c3e6859d8dc9014fee8023497153add9a2148f22.tar.bz2
llvm-c3e6859d8dc9014fee8023497153add9a2148f22.tar.xz
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
Diffstat (limited to 'tools/bugpoint/bugpoint.cpp')
-rw-r--r--tools/bugpoint/bugpoint.cpp24
1 files changed, 20 insertions, 4 deletions
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);