For PR351:

Generally, remove use of fork/exec from bugpoint in favor of the portable
sys::Program::ExecuteAndWait method. This change requires two new options
to bugpoint to tell it that it is running in "child" mode. In this mode,
it reads its input and runs the passes. The result code signals to the
parent instance of bugpoint what happened (success, fail, crash).

This change should make bugpoint usable on Win32 systems.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24961 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2005-12-22 20:02:55 +00:00
parent d555f413cd
commit c4bb052ecc
4 changed files with 95 additions and 63 deletions
+8 -1
View File
@@ -24,6 +24,13 @@
#include "llvm/System/Signals.h"
using namespace llvm;
// AsChild - Specifies that this invocation of bugpoint is being generated
// from a parent process. It is not intended to be used by users so the
// option is hidden.
static cl::opt<bool>
AsChild("as-child", cl::desc("Run bugpoint as child process"),
cl::ReallyHidden);
static cl::list<std::string>
InputFilenames(cl::Positional, cl::OneOrMore,
cl::desc("<input llvm ll/bc files>"));
@@ -49,7 +56,7 @@ int main(int argc, char **argv) {
sys::PrintStackTraceOnErrorSignal();
sys::SetInterruptFunction(BugpointInterruptFunction);
BugDriver D(argv[0]);
BugDriver D(argv[0],AsChild);
if (D.addSources(InputFilenames)) return 1;
D.addPasses(PassList.begin(), PassList.end());