aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/bugpoint/BugDriver.cpp2
-rw-r--r--tools/bugpoint/CrashDebugger.cpp10
-rw-r--r--tools/bugpoint/ExecutionDriver.cpp26
-rw-r--r--tools/bugpoint/Miscompilation.cpp10
-rw-r--r--tools/bugpoint/OptimizerDriver.cpp4
-rw-r--r--tools/gccld/gccld.cpp23
-rw-r--r--tools/llvm-ld/llvm-ld.cpp23
7 files changed, 54 insertions, 44 deletions
diff --git a/tools/bugpoint/BugDriver.cpp b/tools/bugpoint/BugDriver.cpp
index 4b6db0c..0116ab0 100644
--- a/tools/bugpoint/BugDriver.cpp
+++ b/tools/bugpoint/BugDriver.cpp
@@ -175,7 +175,7 @@ bool BugDriver::run() {
// Make sure the reference output file gets deleted on exit from this
// function, if appropriate.
- FileRemover RemoverInstance(ReferenceOutputFile, CreatedOutput);
+ FileRemover RemoverInstance(sys::Path(ReferenceOutputFile), CreatedOutput);
// Diff the output of the raw program against the reference output. If it
// matches, then we have a miscompilation bug.
diff --git a/tools/bugpoint/CrashDebugger.cpp b/tools/bugpoint/CrashDebugger.cpp
index 545d767..7dd6db4 100644
--- a/tools/bugpoint/CrashDebugger.cpp
+++ b/tools/bugpoint/CrashDebugger.cpp
@@ -49,23 +49,25 @@ namespace llvm {
ReducePassList::TestResult
ReducePassList::doTest(std::vector<const PassInfo*> &Prefix,
std::vector<const PassInfo*> &Suffix) {
- std::string PrefixOutput;
+ sys::Path PrefixOutput;
Module *OrigProgram = 0;
if (!Prefix.empty()) {
std::cout << "Checking to see if these passes crash: "
<< getPassesString(Prefix) << ": ";
- if (BD.runPasses(Prefix, PrefixOutput))
+ std::string PfxOutput;
+ if (BD.runPasses(Prefix, PfxOutput))
return KeepPrefix;
+ PrefixOutput.setFile(PfxOutput);
OrigProgram = BD.Program;
- BD.Program = ParseInputFile(PrefixOutput);
+ BD.Program = ParseInputFile(PrefixOutput.toString());
if (BD.Program == 0) {
std::cerr << BD.getToolName() << ": Error reading bytecode file '"
<< PrefixOutput << "'!\n";
exit(1);
}
- removeFile(PrefixOutput);
+ PrefixOutput.destroyFile();
}
std::cout << "Checking to see if these passes crash: "
diff --git a/tools/bugpoint/ExecutionDriver.cpp b/tools/bugpoint/ExecutionDriver.cpp
index fbba687..8044f50 100644
--- a/tools/bugpoint/ExecutionDriver.cpp
+++ b/tools/bugpoint/ExecutionDriver.cpp
@@ -161,7 +161,7 @@ void BugDriver::compileProgram(Module *M) {
}
// Remove the temporary bytecode file when we are done.
- FileRemover BytecodeFileRemover(BytecodeFile.toString());
+ FileRemover BytecodeFileRemover(BytecodeFile);
// Actually compile the program!
Interpreter->compileProgram(BytecodeFile.toString());
@@ -195,7 +195,7 @@ std::string BugDriver::executeProgram(std::string OutputFile,
}
// Remove the temporary bytecode file when we are done.
- FileRemover BytecodeFileRemover(BytecodeFile, CreatedBytecode);
+ FileRemover BytecodeFileRemover(sys::Path(BytecodeFile), CreatedBytecode);
if (OutputFile.empty()) OutputFile = "bugpoint-execution-output";
@@ -252,7 +252,7 @@ std::string BugDriver::executeProgramWithCBE(std::string OutputFile) {
std::string BugDriver::compileSharedObject(const std::string &BytecodeFile) {
assert(Interpreter && "Interpreter should have been created already!");
- std::string OutputCFile;
+ sys::Path OutputCFile;
// Using CBE
cbe->OutputC(BytecodeFile, OutputCFile);
@@ -268,11 +268,12 @@ std::string BugDriver::compileSharedObject(const std::string &BytecodeFile) {
#endif
std::string SharedObjectFile;
- if (gcc->MakeSharedObject(OutputCFile, GCC::CFile, SharedObjectFile))
+ if (gcc->MakeSharedObject(OutputCFile.toString(), GCC::CFile,
+ SharedObjectFile))
exit(1);
// Remove the intermediate C file
- removeFile(OutputCFile);
+ OutputCFile.destroyFile();
return "./" + SharedObjectFile;
}
@@ -288,19 +289,20 @@ bool BugDriver::diffProgram(const std::string &BytecodeFile,
bool ProgramExitedNonzero;
// Execute the program, generating an output file...
- std::string Output = executeProgram("", BytecodeFile, SharedObject, 0,
- &ProgramExitedNonzero);
+ sys::Path Output (executeProgram("", BytecodeFile, SharedObject, 0,
+ &ProgramExitedNonzero));
// If we're checking the program exit code, assume anything nonzero is bad.
if (CheckProgramExitCode && ProgramExitedNonzero) {
- removeFile(Output);
- if (RemoveBytecode) removeFile(BytecodeFile);
+ Output.destroyFile();
+ if (RemoveBytecode)
+ sys::Path(BytecodeFile).destroyFile();
return true;
}
std::string Error;
bool FilesDifferent = false;
- if (DiffFiles(ReferenceOutputFile, Output, &Error)) {
+ if (DiffFiles(ReferenceOutputFile, Output.toString(), &Error)) {
if (!Error.empty()) {
std::cerr << "While diffing output: " << Error << '\n';
exit(1);
@@ -309,10 +311,10 @@ bool BugDriver::diffProgram(const std::string &BytecodeFile,
}
// Remove the generated output.
- removeFile(Output);
+ Output.destroyFile();
// Remove the bytecode file if we are supposed to.
- if (RemoveBytecode) removeFile(BytecodeFile);
+ if (RemoveBytecode) sys::Path(BytecodeFile).destroyFile();
return FilesDifferent;
}
diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp
index 2a23ee9..33bfd50 100644
--- a/tools/bugpoint/Miscompilation.cpp
+++ b/tools/bugpoint/Miscompilation.cpp
@@ -93,7 +93,7 @@ ReduceMiscompilingPasses::doTest(std::vector<const PassInfo*> &Prefix,
// If the prefix maintains the predicate by itself, only keep the prefix!
if (BD.diffProgram(BytecodeResult)) {
std::cout << " nope.\n";
- removeFile(BytecodeResult);
+ sys::Path(BytecodeResult).destroyFile();
return KeepPrefix;
}
std::cout << " yup.\n"; // No miscompilation!
@@ -107,7 +107,7 @@ ReduceMiscompilingPasses::doTest(std::vector<const PassInfo*> &Prefix,
<< BytecodeResult << "'!\n";
exit(1);
}
- removeFile(BytecodeResult); // No longer need the file on disk
+ sys::Path(BytecodeResult).destroyFile(); // No longer need the file on disk
// Don't check if there are no passes in the suffix.
if (Suffix.empty())
@@ -760,9 +760,9 @@ static bool TestCodeGenerator(BugDriver &BD, Module *Test, Module *Safe) {
std::cerr << ": still failing!\n";
else
std::cerr << ": didn't fail.\n";
- removeFile(TestModuleBC.toString());
- removeFile(SafeModuleBC.toString());
- removeFile(SharedObject);
+ TestModuleBC.destroyFile();
+ SafeModuleBC.destroyFile();
+ sys::Path(SharedObject).destroyFile();
return Result;
}
diff --git a/tools/bugpoint/OptimizerDriver.cpp b/tools/bugpoint/OptimizerDriver.cpp
index d141bd0..709eff3 100644
--- a/tools/bugpoint/OptimizerDriver.cpp
+++ b/tools/bugpoint/OptimizerDriver.cpp
@@ -143,7 +143,7 @@ bool BugDriver::runPasses(const std::vector<const PassInfo*> &Passes,
// If we are supposed to delete the bytecode file or if the passes crashed,
// remove it now. This may fail if the file was never created, but that's ok.
if (DeleteOutput || !ExitedOK)
- removeFile(OutputFilename);
+ sys::Path(OutputFilename).destroyFile();
if (!Quiet) {
if (ExitedOK)
@@ -194,6 +194,6 @@ Module *BugDriver::runPassesOn(Module *M,
<< BytecodeResult << "'!\n";
exit(1);
}
- removeFile(BytecodeResult); // No longer need the file on disk
+ sys::Path(BytecodeResult).destroyFile(); // No longer need the file on disk
return Ret;
}
diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp
index 938648a..8f4dd3f 100644
--- a/tools/gccld/gccld.cpp
+++ b/tools/gccld/gccld.cpp
@@ -276,10 +276,11 @@ int main(int argc, char **argv, char **envp ) {
// Otherwise, create a script that will run the bytecode through the JIT.
if (Native) {
// Name of the Assembly Language output file
- std::string AssemblyFile = OutputFilename + ".s";
+ sys::Path AssemblyFile ( OutputFilename);
+ AssemblyFile.appendSuffix("s");
// Mark the output files for removal if we get an interrupt.
- sys::RemoveFileOnSignal(sys::Path(AssemblyFile));
+ sys::RemoveFileOnSignal(AssemblyFile);
sys::RemoveFileOnSignal(sys::Path(OutputFilename));
// Determine the locations of the llc and gcc programs.
@@ -293,17 +294,19 @@ int main(int argc, char **argv, char **envp ) {
// Generate an assembly language file for the bytecode.
if (Verbose) std::cout << "Generating Assembly Code\n";
- GenerateAssembly(AssemblyFile, RealBytecodeOutput, llc);
+ GenerateAssembly(AssemblyFile.toString(), RealBytecodeOutput, llc);
if (Verbose) std::cout << "Generating Native Code\n";
- GenerateNative(OutputFilename, AssemblyFile, Libraries, gcc, envp );
+ GenerateNative(OutputFilename, AssemblyFile.toString(),
+ Libraries, gcc, envp );
// Remove the assembly language file.
- removeFile (AssemblyFile);
+ AssemblyFile.destroyFile();;
} else if (NativeCBE) {
- std::string CFile = OutputFilename + ".cbe.c";
+ sys::Path CFile (OutputFilename);
+ CFile.appendSuffix("cbe.c");
// Mark the output files for removal if we get an interrupt.
- sys::RemoveFileOnSignal(sys::Path(CFile));
+ sys::RemoveFileOnSignal(CFile);
sys::RemoveFileOnSignal(sys::Path(OutputFilename));
// Determine the locations of the llc and gcc programs.
@@ -317,12 +320,12 @@ int main(int argc, char **argv, char **envp ) {
// Generate an assembly language file for the bytecode.
if (Verbose) std::cout << "Generating Assembly Code\n";
- GenerateCFile(CFile, RealBytecodeOutput, llc);
+ GenerateCFile(CFile.toString(), RealBytecodeOutput, llc);
if (Verbose) std::cout << "Generating Native Code\n";
- GenerateNative(OutputFilename, CFile, Libraries, gcc, envp );
+ GenerateNative(OutputFilename, CFile.toString(), Libraries, gcc, envp );
// Remove the assembly language file.
- removeFile(CFile);
+ CFile.destroyFile();
} else {
EmitShellScript(argv);
diff --git a/tools/llvm-ld/llvm-ld.cpp b/tools/llvm-ld/llvm-ld.cpp
index ce8cd86..de3ef43 100644
--- a/tools/llvm-ld/llvm-ld.cpp
+++ b/tools/llvm-ld/llvm-ld.cpp
@@ -448,10 +448,11 @@ int main(int argc, char **argv, char **envp) {
// Otherwise, create a script that will run the bytecode through the JIT.
if (Native) {
// Name of the Assembly Language output file
- std::string AssemblyFile = OutputFilename + ".s";
+ sys::Path AssemblyFile ( OutputFilename);
+ AssemblyFile.appendSuffix("s");
// Mark the output files for removal if we get an interrupt.
- sys::RemoveFileOnSignal(sys::Path(AssemblyFile));
+ sys::RemoveFileOnSignal(AssemblyFile);
sys::RemoveFileOnSignal(sys::Path(OutputFilename));
// Determine the locations of the llc and gcc programs.
@@ -465,17 +466,19 @@ int main(int argc, char **argv, char **envp) {
// Generate an assembly language file for the bytecode.
if (Verbose) std::cout << "Generating Assembly Code\n";
- GenerateAssembly(AssemblyFile, RealBytecodeOutput, llc);
+ GenerateAssembly(AssemblyFile.toString(), RealBytecodeOutput, llc);
if (Verbose) std::cout << "Generating Native Code\n";
- GenerateNative(OutputFilename, AssemblyFile, Libraries, gcc, envp);
+ GenerateNative(OutputFilename, AssemblyFile.toString(), Libraries,
+ gcc, envp);
// Remove the assembly language file.
- removeFile (AssemblyFile);
+ AssemblyFile.destroyFile();
} else if (NativeCBE) {
- std::string CFile = OutputFilename + ".cbe.c";
+ sys::Path CFile (OutputFilename);
+ CFile.appendSuffix("cbe.c");
// Mark the output files for removal if we get an interrupt.
- sys::RemoveFileOnSignal(sys::Path(CFile));
+ sys::RemoveFileOnSignal(CFile);
sys::RemoveFileOnSignal(sys::Path(OutputFilename));
// Determine the locations of the llc and gcc programs.
@@ -489,12 +492,12 @@ int main(int argc, char **argv, char **envp) {
// Generate an assembly language file for the bytecode.
if (Verbose) std::cout << "Generating Assembly Code\n";
- GenerateCFile(CFile, RealBytecodeOutput, llc);
+ GenerateCFile(CFile.toString(), RealBytecodeOutput, llc);
if (Verbose) std::cout << "Generating Native Code\n";
- GenerateNative(OutputFilename, CFile, Libraries, gcc, envp);
+ GenerateNative(OutputFilename, CFile.toString(), Libraries, gcc, envp);
// Remove the assembly language file.
- removeFile(CFile);
+ CFile.destroyFile();
} else {
EmitShellScript(argv);