summaryrefslogtreecommitdiff
path: root/tools/bugpoint/BugDriver.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-08-05 16:26:32 +0000
committerBob Wilson <bob.wilson@apple.com>2010-08-05 16:26:32 +0000
commitb8be03b0e4275eca68f998baab47e66b8a091c05 (patch)
tree2acfa5cdae1eeb138602233a06f7c821ba19480f /tools/bugpoint/BugDriver.cpp
parentfeaac8f7fff264da2031069847e544dcbbfe5ebb (diff)
downloadllvm-b8be03b0e4275eca68f998baab47e66b8a091c05.tar.gz
llvm-b8be03b0e4275eca68f998baab47e66b8a091c05.tar.bz2
llvm-b8be03b0e4275eca68f998baab47e66b8a091c05.tar.xz
Revert bugpoint change due to buildbot breakage.
--- Reverse-merging r110333 into '.': U tools/bugpoint/BugDriver.h U tools/bugpoint/OptimizerDriver.cpp U tools/bugpoint/bugpoint.cpp U tools/bugpoint/BugDriver.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110341 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/bugpoint/BugDriver.cpp')
-rw-r--r--tools/bugpoint/BugDriver.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp
index 7a3339cc95..cf7b183218 100644
--- a/tools/bugpoint/BugDriver.cpp
+++ b/tools/bugpoint/BugDriver.cpp
@@ -66,12 +66,12 @@ std::string llvm::getPassesString(const std::vector<const PassInfo*> &Passes) {
return Result;
}
-BugDriver::BugDriver(const char *toolname, bool find_bugs,
+BugDriver::BugDriver(const char *toolname, bool as_child, bool find_bugs,
unsigned timeout, unsigned memlimit, bool use_valgrind,
LLVMContext& ctxt)
: Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile),
Program(0), Interpreter(0), SafeInterpreter(0), gcc(0),
- run_find_bugs(find_bugs), Timeout(timeout),
+ run_as_child(as_child), run_find_bugs(find_bugs), Timeout(timeout),
MemoryLimit(memlimit), UseValgrind(use_valgrind) {}
BugDriver::~BugDriver() {
@@ -119,13 +119,15 @@ bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
Program = ParseInputFile(Filenames[0], Context);
if (Program == 0) return true;
- outs() << "Read input file : '" << Filenames[0] << "'\n";
+ if (!run_as_child)
+ outs() << "Read input file : '" << Filenames[0] << "'\n";
for (unsigned i = 1, e = Filenames.size(); i != e; ++i) {
std::auto_ptr<Module> M(ParseInputFile(Filenames[i], Context));
if (M.get() == 0) return true;
- outs() << "Linking in input file: '" << Filenames[i] << "'\n";
+ if (!run_as_child)
+ outs() << "Linking in input file: '" << Filenames[i] << "'\n";
std::string ErrorMessage;
if (Linker::LinkModules(Program, M.get(), &ErrorMessage)) {
errs() << ToolName << ": error linking in '" << Filenames[i] << "': "
@@ -134,7 +136,8 @@ bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
}
}
- outs() << "*** All input ok\n";
+ if (!run_as_child)
+ outs() << "*** All input ok\n";
// All input files read successfully!
return false;
@@ -146,6 +149,14 @@ bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
/// variables are set up from command line arguments.
///
bool BugDriver::run(std::string &ErrMsg) {
+ // The first thing to do is determine if we're running as a child. If we are,
+ // then what to do is very narrow. This form of invocation is only called
+ // from the runPasses method to actually run those passes in a child process.
+ if (run_as_child) {
+ // Execute the passes
+ return runPassesAsChild(PassesToRun);
+ }
+
if (run_find_bugs) {
// Rearrange the passes and apply them to the program. Repeat this process
// until the user kills the program or we find a bug.