1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

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.

llvm-svn: 98905
This commit is contained in:
Jeffrey Yasskin 2010-03-19 00:09:28 +00:00
parent 3e5af02a79
commit 16289314f6
4 changed files with 25 additions and 9 deletions

View 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

View 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; }

View 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

View 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);