Don't use PathV1.h in tools/bugpoint/Miscompilation.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184193 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2013-06-18 15:29:32 +00:00
parent 9c22f87b13
commit 88088f4067
3 changed files with 49 additions and 30 deletions

View File

@ -275,6 +275,8 @@ public:
/// bitcode file. If an error occurs, true is returned.
///
bool writeProgramToFile(const std::string &Filename, const Module *M) const;
bool writeProgramToFile(const std::string &Filename, int FD,
const Module *M) const;
private:
/// runPasses - Just like the method above, but this just returns true or

View File

@ -25,7 +25,6 @@
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/PathV1.h"
#include "llvm/Transforms/Utils/Cloning.h"
using namespace llvm;
@ -927,14 +926,16 @@ static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe,
std::string &Error) {
CleanupAndPrepareModules(BD, Test, Safe);
sys::Path TestModuleBC("bugpoint.test.bc");
std::string ErrMsg;
if (TestModuleBC.makeUnique(true, &ErrMsg)) {
SmallString<128> TestModuleBC;
int TestModuleFD;
error_code EC = sys::fs::unique_file("bugpoint.test-%%%%%%%.bc", TestModuleFD,
TestModuleBC);
if (EC) {
errs() << BD.getToolName() << "Error making unique filename: "
<< ErrMsg << "\n";
<< EC.message() << "\n";
exit(1);
}
if (BD.writeProgramToFile(TestModuleBC.str(), Test)) {
if (BD.writeProgramToFile(TestModuleBC.str(), TestModuleFD, Test)) {
errs() << "Error writing bitcode to `" << TestModuleBC.str()
<< "'\nExiting.";
exit(1);
@ -944,14 +945,17 @@ static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe,
FileRemover TestModuleBCRemover(TestModuleBC.str(), !SaveTemps);
// Make the shared library
sys::Path SafeModuleBC("bugpoint.safe.bc");
if (SafeModuleBC.makeUnique(true, &ErrMsg)) {
SmallString<128> SafeModuleBC;
int SafeModuleFD;
EC = sys::fs::unique_file("bugpoint.safe-%%%%%%%.bc", SafeModuleFD,
SafeModuleBC);
if (EC) {
errs() << BD.getToolName() << "Error making unique filename: "
<< ErrMsg << "\n";
<< EC.message() << "\n";
exit(1);
}
if (BD.writeProgramToFile(SafeModuleBC.str(), Safe)) {
if (BD.writeProgramToFile(SafeModuleBC.str(), SafeModuleFD, Safe)) {
errs() << "Error writing bitcode to `" << SafeModuleBC.str()
<< "'\nExiting.";
exit(1);
@ -1016,15 +1020,17 @@ bool BugDriver::debugCodeGenerator(std::string *Error) {
// Condition the modules
CleanupAndPrepareModules(*this, ToCodeGen, ToNotCodeGen);
sys::Path TestModuleBC("bugpoint.test.bc");
std::string ErrMsg;
if (TestModuleBC.makeUnique(true, &ErrMsg)) {
SmallString<128> TestModuleBC;
int TestModuleFD;
error_code EC = sys::fs::unique_file("bugpoint.test-%%%%%%%.bc", TestModuleFD,
TestModuleBC);
if (EC) {
errs() << getToolName() << "Error making unique filename: "
<< ErrMsg << "\n";
<< EC.message() << "\n";
exit(1);
}
if (writeProgramToFile(TestModuleBC.str(), ToCodeGen)) {
if (writeProgramToFile(TestModuleBC.str(), TestModuleFD, ToCodeGen)) {
errs() << "Error writing bitcode to `" << TestModuleBC.str()
<< "'\nExiting.";
exit(1);
@ -1032,14 +1038,17 @@ bool BugDriver::debugCodeGenerator(std::string *Error) {
delete ToCodeGen;
// Make the shared library
sys::Path SafeModuleBC("bugpoint.safe.bc");
if (SafeModuleBC.makeUnique(true, &ErrMsg)) {
SmallString<128> SafeModuleBC;
int SafeModuleFD;
EC = sys::fs::unique_file("bugpoint.safe-%%%%%%%.bc", SafeModuleFD,
SafeModuleBC);
if (EC) {
errs() << getToolName() << "Error making unique filename: "
<< ErrMsg << "\n";
<< EC.message() << "\n";
exit(1);
}
if (writeProgramToFile(SafeModuleBC.str(), ToNotCodeGen)) {
if (writeProgramToFile(SafeModuleBC.str(), SafeModuleFD, ToNotCodeGen)) {
errs() << "Error writing bitcode to `" << SafeModuleBC.str()
<< "'\nExiting.";
exit(1);

View File

@ -49,20 +49,28 @@ namespace {
/// writeProgramToFile - This writes the current "Program" to the named bitcode
/// file. If an error occurs, true is returned.
///
static bool writeProgramToFileAux(tool_output_file &Out, const Module *M) {
WriteBitcodeToFile(M, Out.os());
Out.os().close();
if (!Out.os().has_error()) {
Out.keep();
return false;
}
return true;
}
bool BugDriver::writeProgramToFile(const std::string &Filename, int FD,
const Module *M) const {
tool_output_file Out(Filename.c_str(), FD);
return writeProgramToFileAux(Out, M);
}
bool BugDriver::writeProgramToFile(const std::string &Filename,
const Module *M) const {
std::string ErrInfo;
tool_output_file Out(Filename.c_str(), ErrInfo,
raw_fd_ostream::F_Binary);
if (ErrInfo.empty()) {
WriteBitcodeToFile(M, Out.os());
Out.os().close();
if (!Out.os().has_error()) {
Out.keep();
return false;
}
}
Out.os().clear_error();
tool_output_file Out(Filename.c_str(), ErrInfo, raw_fd_ostream::F_Binary);
if (ErrInfo.empty())
return writeProgramToFileAux(Out, M);
return true;
}