Finally give bugpoint -timeout support!

llvm-svn: 15163
This commit is contained in:
Chris Lattner 2004-07-24 07:53:26 +00:00
parent 29e97f36bf
commit 0d3969f3d1
2 changed files with 20 additions and 2 deletions

View File

@ -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;

View File

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