mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-29 17:46:06 +00:00
Switch FileRemover from PathV1 to V2.
llvm-svn: 128630
This commit is contained in:
parent
41f32c7127
commit
c60223ef6c
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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";
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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>");
|
||||||
|
@ -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.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user