Finally give bugpoint -timeout support!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15163 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-07-24 07:53:26 +00:00
parent c47b6677ae
commit 7d91e49ff7
2 changed files with 20 additions and 2 deletions

View File

@ -156,7 +156,7 @@ bool BugDriver::run() {
// //
bool CreatedOutput = false; bool CreatedOutput = false;
if (ReferenceOutputFile.empty()) { if (ReferenceOutputFile.empty()) {
std::cout << "Generating reference output from raw program..."; std::cout << "Generating reference output from raw program: ";
try { try {
ReferenceOutputFile = executeProgramWithCBE("bugpoint.reference.out"); ReferenceOutputFile = executeProgramWithCBE("bugpoint.reference.out");
CreatedOutput = true; CreatedOutput = true;

View File

@ -53,6 +53,11 @@ namespace {
AdditionalSOs("additional-so", AdditionalSOs("additional-so",
cl::desc("Additional shared objects to load " cl::desc("Additional shared objects to load "
"into executing programs")); "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 { namespace llvm {
@ -201,7 +206,20 @@ std::string BugDriver::executeProgram(std::string OutputFile,
// Actually execute the program! // Actually execute the program!
int RetVal = AI->ExecuteProgram(BytecodeFile, InputArgv, InputFile, 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) if (ProgramExitedNonzero != 0)
*ProgramExitedNonzero = (RetVal != 0); *ProgramExitedNonzero = (RetVal != 0);