Switch FileRemover from PathV1 to V2.

llvm-svn: 128630
This commit is contained in:
Michael J. Spencer 2011-03-31 13:04:19 +00:00
parent 41f32c7127
commit c60223ef6c
6 changed files with 30 additions and 21 deletions

View File

@ -15,6 +15,7 @@
#ifndef LLVM_SUPPORT_FILEUTILITIES_H #ifndef LLVM_SUPPORT_FILEUTILITIES_H
#define LLVM_SUPPORT_FILEUTILITIES_H #define LLVM_SUPPORT_FILEUTILITIES_H
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h" #include "llvm/Support/Path.h"
namespace llvm { namespace llvm {
@ -37,29 +38,36 @@ namespace llvm {
/// specified (if deleteIt is true). /// specified (if deleteIt is true).
/// ///
class FileRemover { class FileRemover {
sys::Path Filename; SmallString<128> Filename;
bool DeleteIt; bool DeleteIt;
public: public:
FileRemover() : DeleteIt(false) {} FileRemover() : DeleteIt(false) {}
explicit FileRemover(const sys::Path &filename, bool deleteIt = true) explicit FileRemover(const Twine& filename, bool deleteIt = true)
: Filename(filename), DeleteIt(deleteIt) {} : DeleteIt(deleteIt) {
filename.toVector(Filename);
}
~FileRemover() { ~FileRemover() {
if (DeleteIt) { if (DeleteIt) {
// Ignore problems deleting the file. // Ignore problems deleting the file.
Filename.eraseFromDisk(); bool existed;
sys::fs::remove(Filename.str(), existed);
} }
} }
/// setFile - Give ownership of the file to the FileRemover so it will /// setFile - Give ownership of the file to the FileRemover so it will
/// be removed when the object is destroyed. If the FileRemover already /// be removed when the object is destroyed. If the FileRemover already
/// had ownership of a file, remove it first. /// had ownership of a file, remove it first.
void setFile(const sys::Path &filename, bool deleteIt = true) { void setFile(const Twine& filename, bool deleteIt = true) {
if (DeleteIt) if (DeleteIt) {
Filename.eraseFromDisk(); // Ignore problems deleting the file.
bool existed;
sys::fs::remove(Filename.str(), existed);
}
Filename = filename; Filename.clear();
filename.toVector(Filename);
DeleteIt = deleteIt; DeleteIt = deleteIt;
} }

View File

@ -194,7 +194,7 @@ bool BugDriver::run(std::string &ErrMsg) {
// Make sure the reference output file gets deleted on exit from this // Make sure the reference output file gets deleted on exit from this
// function, if appropriate. // function, if appropriate.
sys::Path ROF(ReferenceOutputFile); sys::Path ROF(ReferenceOutputFile);
FileRemover RemoverInstance(ROF, CreatedOutput && !SaveTemps); FileRemover RemoverInstance(ROF.str(), CreatedOutput && !SaveTemps);
// Diff the output of the raw program against the reference output. If it // Diff the output of the raw program against the reference output. If it
// matches, then we assume there is a miscompilation bug and try to // matches, then we assume there is a miscompilation bug and try to

View File

@ -323,7 +323,7 @@ void BugDriver::compileProgram(Module *M, std::string *Error) const {
} }
// Remove the temporary bitcode file when we are done. // Remove the temporary bitcode file when we are done.
FileRemover BitcodeFileRemover(BitcodeFile, !SaveTemps); FileRemover BitcodeFileRemover(BitcodeFile.str(), !SaveTemps);
// Actually compile the program! // Actually compile the program!
Interpreter->compileProgram(BitcodeFile.str(), Error, Timeout, MemoryLimit); Interpreter->compileProgram(BitcodeFile.str(), Error, Timeout, MemoryLimit);
@ -364,7 +364,8 @@ std::string BugDriver::executeProgram(const Module *Program,
// Remove the temporary bitcode file when we are done. // Remove the temporary bitcode file when we are done.
sys::Path BitcodePath(BitcodeFile); sys::Path BitcodePath(BitcodeFile);
FileRemover BitcodeFileRemover(BitcodePath, CreatedBitcode && !SaveTemps); FileRemover BitcodeFileRemover(BitcodePath.str(),
CreatedBitcode && !SaveTemps);
if (OutputFile.empty()) OutputFile = OutputPrefix + "-execution-output"; if (OutputFile.empty()) OutputFile = OutputPrefix + "-execution-output";

View File

@ -943,7 +943,7 @@ static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe,
} }
delete Test; delete Test;
FileRemover TestModuleBCRemover(TestModuleBC, !SaveTemps); FileRemover TestModuleBCRemover(TestModuleBC.str(), !SaveTemps);
// Make the shared library // Make the shared library
sys::Path SafeModuleBC("bugpoint.safe.bc"); sys::Path SafeModuleBC("bugpoint.safe.bc");
@ -959,14 +959,14 @@ static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe,
exit(1); exit(1);
} }
FileRemover SafeModuleBCRemover(SafeModuleBC, !SaveTemps); FileRemover SafeModuleBCRemover(SafeModuleBC.str(), !SaveTemps);
std::string SharedObject = BD.compileSharedObject(SafeModuleBC.str(), Error); std::string SharedObject = BD.compileSharedObject(SafeModuleBC.str(), Error);
if (!Error.empty()) if (!Error.empty())
return false; return false;
delete Safe; delete Safe;
FileRemover SharedObjectRemover(sys::Path(SharedObject), !SaveTemps); FileRemover SharedObjectRemover(SharedObject, !SaveTemps);
// Run the code generator on the `Test' code, loading the shared library. // Run the code generator on the `Test' code, loading the shared library.
// The function returns whether or not the new output differs from reference. // The function returns whether or not the new output differs from reference.

View File

@ -503,7 +503,7 @@ int LLC::ExecuteProgram(const std::string &Bitcode,
sys::Path OutputAsmFile; sys::Path OutputAsmFile;
GCC::FileType FileKind = OutputCode(Bitcode, OutputAsmFile, *Error, Timeout, GCC::FileType FileKind = OutputCode(Bitcode, OutputAsmFile, *Error, Timeout,
MemoryLimit); MemoryLimit);
FileRemover OutFileRemover(OutputAsmFile, !SaveTemps); FileRemover OutFileRemover(OutputAsmFile.str(), !SaveTemps);
std::vector<std::string> GCCArgs(ArgsForGCC); std::vector<std::string> GCCArgs(ArgsForGCC);
GCCArgs.insert(GCCArgs.end(), SharedLibs.begin(), SharedLibs.end()); GCCArgs.insert(GCCArgs.end(), SharedLibs.begin(), SharedLibs.end());
@ -675,7 +675,7 @@ int CBE::ExecuteProgram(const std::string &Bitcode,
sys::Path OutputCFile; sys::Path OutputCFile;
OutputCode(Bitcode, OutputCFile, *Error, Timeout, MemoryLimit); OutputCode(Bitcode, OutputCFile, *Error, Timeout, MemoryLimit);
FileRemover CFileRemove(OutputCFile, !SaveTemps); FileRemover CFileRemove(OutputCFile.str(), !SaveTemps);
std::vector<std::string> GCCArgs(ArgsForGCC); std::vector<std::string> GCCArgs(ArgsForGCC);
GCCArgs.insert(GCCArgs.end(), SharedLibs.begin(), SharedLibs.end()); GCCArgs.insert(GCCArgs.end(), SharedLibs.begin(), SharedLibs.end());
@ -851,7 +851,7 @@ int GCC::ExecuteProgram(const std::string &ProgramFile,
errs() << "\n"; errs() << "\n";
); );
FileRemover OutputBinaryRemover(OutputBinary, !SaveTemps); FileRemover OutputBinaryRemover(OutputBinary.str(), !SaveTemps);
if (RemoteClientPath.isEmpty()) { if (RemoteClientPath.isEmpty()) {
DEBUG(errs() << "<run locally>"); DEBUG(errs() << "<run locally>");

View File

@ -552,12 +552,12 @@ int main(int argc, char **argv, char **envp) {
} }
// Arrange for the bitcode output file to be deleted on any errors. // Arrange for the bitcode output file to be deleted on any errors.
BitcodeOutputRemover.setFile(sys::Path(BitcodeOutputFilename)); BitcodeOutputRemover.setFile(BitcodeOutputFilename);
sys::RemoveFileOnSignal(sys::Path(BitcodeOutputFilename)); sys::RemoveFileOnSignal(sys::Path(BitcodeOutputFilename));
// Arrange for the output file to be deleted on any errors. // Arrange for the output file to be deleted on any errors.
if (!LinkAsLibrary) { if (!LinkAsLibrary) {
OutputRemover.setFile(sys::Path(OutputFilename)); OutputRemover.setFile(OutputFilename);
sys::RemoveFileOnSignal(sys::Path(OutputFilename)); sys::RemoveFileOnSignal(sys::Path(OutputFilename));
} }
@ -657,7 +657,7 @@ int main(int argc, char **argv, char **envp) {
AssemblyFile.appendSuffix("s"); AssemblyFile.appendSuffix("s");
// Mark the output files for removal. // Mark the output files for removal.
FileRemover AssemblyFileRemover(AssemblyFile); FileRemover AssemblyFileRemover(AssemblyFile.str());
sys::RemoveFileOnSignal(AssemblyFile); sys::RemoveFileOnSignal(AssemblyFile);
// Determine the locations of the llc and gcc programs. // Determine the locations of the llc and gcc programs.
@ -684,7 +684,7 @@ int main(int argc, char **argv, char **envp) {
CFile.appendSuffix("cbe.c"); CFile.appendSuffix("cbe.c");
// Mark the output files for removal. // Mark the output files for removal.
FileRemover CFileRemover(CFile); FileRemover CFileRemover(CFile.str());
sys::RemoveFileOnSignal(CFile); sys::RemoveFileOnSignal(CFile);
// Determine the locations of the llc and gcc programs. // Determine the locations of the llc and gcc programs.