Add a new method for use by the code generator crash debugger.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11613 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-02-18 23:25:22 +00:00
parent ca00512008
commit ea9212ca96
2 changed files with 26 additions and 0 deletions

View File

@ -127,6 +127,12 @@ public:
/// the specified one as the current program.
void setNewProgram(Module *M);
/// compileProgram - Try to compile the specified module, throwing an
/// exception if an error occurs, or returning normally if not. This is used
/// for code generation crash testing.
///
void compileProgram(Module *M);
/// executeProgram - This method runs "Program", capturing the output of the
/// program to a file, returning the filename of the file. A recommended
/// filename may be optionally specified. If there is a problem with the code

View File

@ -137,6 +137,26 @@ bool BugDriver::initializeExecutionEnvironment() {
return Interpreter == 0;
}
/// compileProgram - Try to compile the specified module, throwing an exception
/// if an error occurs, or returning normally if not. This is used for code
/// generation crash testing.
///
void BugDriver::compileProgram(Module *M) {
// Emit the program to a bytecode file...
std::string BytecodeFile = getUniqueFilename("bugpoint-test-program.bc");
if (writeProgramToFile(BytecodeFile, M)) {
std::cerr << ToolName << ": Error emitting bytecode to file '"
<< BytecodeFile << "'!\n";
exit(1);
}
// Remove the temporary bytecode file when we are done.
FileRemover BytecodeFileRemover(BytecodeFile);
// Actually compile the program!
Interpreter->compileProgram(BytecodeFile);
}
/// executeProgram - This method runs "Program", capturing the output of the
/// program to a file, returning the filename of the file. A recommended