mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-29 22:50:47 +00:00
For PR351:
* Convert use of getUniqueFilename to sys::Path::makeUnique(); git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18949 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cda985e191
commit
97182985d5
@ -152,18 +152,19 @@ bool BugDriver::initializeExecutionEnvironment() {
|
||||
///
|
||||
void BugDriver::compileProgram(Module *M) {
|
||||
// Emit the program to a bytecode file...
|
||||
std::string BytecodeFile = getUniqueFilename("bugpoint-test-program.bc");
|
||||
if (writeProgramToFile(BytecodeFile, M)) {
|
||||
sys::Path BytecodeFile ("bugpoint-test-program.bc");
|
||||
BytecodeFile.makeUnique();
|
||||
if (writeProgramToFile(BytecodeFile.toString(), 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);
|
||||
FileRemover BytecodeFileRemover(BytecodeFile.toString());
|
||||
|
||||
// Actually compile the program!
|
||||
Interpreter->compileProgram(BytecodeFile);
|
||||
Interpreter->compileProgram(BytecodeFile.toString());
|
||||
}
|
||||
|
||||
|
||||
@ -181,7 +182,9 @@ std::string BugDriver::executeProgram(std::string OutputFile,
|
||||
bool CreatedBytecode = false;
|
||||
if (BytecodeFile.empty()) {
|
||||
// Emit the program to a bytecode file...
|
||||
BytecodeFile = getUniqueFilename("bugpoint-test-program.bc");
|
||||
sys::Path uniqueFilename("bugpoint-test-program.bc");
|
||||
uniqueFilename.makeUnique();
|
||||
BytecodeFile = uniqueFilename.toString();
|
||||
|
||||
if (writeProgramToFile(BytecodeFile, Program)) {
|
||||
std::cerr << ToolName << ": Error emitting bytecode to file '"
|
||||
@ -197,7 +200,9 @@ std::string BugDriver::executeProgram(std::string OutputFile,
|
||||
if (OutputFile.empty()) OutputFile = "bugpoint-execution-output";
|
||||
|
||||
// Check to see if this is a valid output filename...
|
||||
OutputFile = getUniqueFilename(OutputFile);
|
||||
sys::Path uniqueFile(OutputFile);
|
||||
uniqueFile.makeUnique();
|
||||
OutputFile = uniqueFile.toString();
|
||||
|
||||
// Figure out which shared objects to run, if any.
|
||||
std::vector<std::string> SharedObjs(AdditionalSOs);
|
||||
|
@ -733,33 +733,35 @@ static void CleanupAndPrepareModules(BugDriver &BD, Module *&Test,
|
||||
static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe) {
|
||||
CleanupAndPrepareModules(BD, Test, Safe);
|
||||
|
||||
std::string TestModuleBC = getUniqueFilename("bugpoint.test.bc");
|
||||
if (BD.writeProgramToFile(TestModuleBC, Test)) {
|
||||
sys::Path TestModuleBC("bugpoint.test.bc");
|
||||
TestModuleBC.makeUnique();
|
||||
if (BD.writeProgramToFile(TestModuleBC.toString(), Test)) {
|
||||
std::cerr << "Error writing bytecode to `" << TestModuleBC << "'\nExiting.";
|
||||
exit(1);
|
||||
}
|
||||
delete Test;
|
||||
|
||||
// Make the shared library
|
||||
std::string SafeModuleBC = getUniqueFilename("bugpoint.safe.bc");
|
||||
sys::Path SafeModuleBC("bugpoint.safe.bc");
|
||||
SafeModuleBC.makeUnique();
|
||||
|
||||
if (BD.writeProgramToFile(SafeModuleBC, Safe)) {
|
||||
if (BD.writeProgramToFile(SafeModuleBC.toString(), Safe)) {
|
||||
std::cerr << "Error writing bytecode to `" << SafeModuleBC << "'\nExiting.";
|
||||
exit(1);
|
||||
}
|
||||
std::string SharedObject = BD.compileSharedObject(SafeModuleBC);
|
||||
std::string SharedObject = BD.compileSharedObject(SafeModuleBC.toString());
|
||||
delete Safe;
|
||||
|
||||
// Run the code generator on the `Test' code, loading the shared library.
|
||||
// The function returns whether or not the new output differs from reference.
|
||||
int Result = BD.diffProgram(TestModuleBC, SharedObject, false);
|
||||
int Result = BD.diffProgram(TestModuleBC.toString(), SharedObject, false);
|
||||
|
||||
if (Result)
|
||||
std::cerr << ": still failing!\n";
|
||||
else
|
||||
std::cerr << ": didn't fail.\n";
|
||||
removeFile(TestModuleBC);
|
||||
removeFile(SafeModuleBC);
|
||||
removeFile(TestModuleBC.toString());
|
||||
removeFile(SafeModuleBC.toString());
|
||||
removeFile(SharedObject);
|
||||
|
||||
return Result;
|
||||
@ -791,20 +793,24 @@ bool BugDriver::debugCodeGenerator() {
|
||||
// Condition the modules
|
||||
CleanupAndPrepareModules(*this, ToCodeGen, ToNotCodeGen);
|
||||
|
||||
std::string TestModuleBC = getUniqueFilename("bugpoint.test.bc");
|
||||
if (writeProgramToFile(TestModuleBC, ToCodeGen)) {
|
||||
sys::Path TestModuleBC("bugpoint.test.bc");
|
||||
TestModuleBC.makeUnique();
|
||||
|
||||
if (writeProgramToFile(TestModuleBC.toString(), ToCodeGen)) {
|
||||
std::cerr << "Error writing bytecode to `" << TestModuleBC << "'\nExiting.";
|
||||
exit(1);
|
||||
}
|
||||
delete ToCodeGen;
|
||||
|
||||
// Make the shared library
|
||||
std::string SafeModuleBC = getUniqueFilename("bugpoint.safe.bc");
|
||||
if (writeProgramToFile(SafeModuleBC, ToNotCodeGen)) {
|
||||
sys::Path SafeModuleBC("bugpoint.safe.bc");
|
||||
SafeModuleBC.makeUnique();
|
||||
|
||||
if (writeProgramToFile(SafeModuleBC.toString(), ToNotCodeGen)) {
|
||||
std::cerr << "Error writing bytecode to `" << SafeModuleBC << "'\nExiting.";
|
||||
exit(1);
|
||||
}
|
||||
std::string SharedObject = compileSharedObject(SafeModuleBC);
|
||||
std::string SharedObject = compileSharedObject(SafeModuleBC.toString());
|
||||
delete ToNotCodeGen;
|
||||
|
||||
std::cout << "You can reproduce the problem with the command line: \n";
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "llvm/Bytecode/WriteBytecodePass.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/Support/FileUtilities.h"
|
||||
#include "llvm/System/Path.h"
|
||||
#include <fstream>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
@ -114,7 +115,9 @@ bool BugDriver::runPasses(const std::vector<const PassInfo*> &Passes,
|
||||
std::string &OutputFilename, bool DeleteOutput,
|
||||
bool Quiet) const{
|
||||
std::cout << std::flush;
|
||||
OutputFilename = getUniqueFilename("bugpoint-output.bc");
|
||||
sys::Path uniqueFilename("bugpoint-output.bc");
|
||||
uniqueFilename.makeUnique();
|
||||
OutputFilename = uniqueFilename.toString();
|
||||
|
||||
pid_t child_pid;
|
||||
switch (child_pid = fork()) {
|
||||
|
Loading…
Reference in New Issue
Block a user