diff options
author | Chris Lattner <sabre@nondot.org> | 2004-07-24 07:53:26 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-07-24 07:53:26 +0000 |
commit | 7d91e49ff7bcc0fd10a54d45a6185bb05adf3d20 (patch) | |
tree | 250e875dc6a9fddbe92cad1b15e4071668f1dcde | |
parent | c47b6677ae8a71d72db42ea74f296bcf6b14a6dc (diff) |
Finally give bugpoint -timeout support!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15163 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | tools/bugpoint/BugDriver.cpp | 2 | ||||
-rw-r--r-- | tools/bugpoint/ExecutionDriver.cpp | 20 |
2 files changed, 20 insertions, 2 deletions
diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp index 1bac8da243..1826b7b780 100644 --- a/tools/bugpoint/BugDriver.cpp +++ b/tools/bugpoint/BugDriver.cpp @@ -156,7 +156,7 @@ bool BugDriver::run() { // bool CreatedOutput = false; if (ReferenceOutputFile.empty()) { - std::cout << "Generating reference output from raw program..."; + std::cout << "Generating reference output from raw program: "; try { ReferenceOutputFile = executeProgramWithCBE("bugpoint.reference.out"); CreatedOutput = true; diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp index 7d6c4aaaae..62f0a242a6 100644 --- a/tools/bugpoint/ExecutionDriver.cpp +++ b/tools/bugpoint/ExecutionDriver.cpp @@ -53,6 +53,11 @@ namespace { AdditionalSOs("additional-so", cl::desc("Additional shared objects to load " "into executing programs")); + + cl::opt<unsigned> + 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")); } namespace llvm { @@ -201,7 +206,20 @@ std::string BugDriver::executeProgram(std::string OutputFile, // Actually execute the program! int RetVal = AI->ExecuteProgram(BytecodeFile, InputArgv, InputFile, - OutputFile, SharedObjs); + OutputFile, SharedObjs, TimeoutValue); + + if (RetVal == -1) { + std::cerr << "<timeout>"; + static bool FirstTimeout = true; + if (FirstTimeout) { + std::cout << "\n" + "*** Program execution timed out! This mechanism is designed to handle\n" + " programs stuck in infinite loops gracefully. The -timeout option\n" + " can be used to change the timeout threshold or disable it completely\n" + " (with -timeout=0). This message is only displayed once.\n"; + FirstTimeout = false; + } + } if (ProgramExitedNonzero != 0) *ProgramExitedNonzero = (RetVal != 0); |