For PR351:
authorReid Spencer <rspencer@reidspencer.com>
Thu, 16 Dec 2004 23:04:20 +0000 (23:04 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Thu, 16 Dec 2004 23:04:20 +0000 (23:04 +0000)
* removeFile() -> sys::Path::destroyFile()
* remove extraneous toString() calls
* convert local variables representing path names from std::string to
  sys::Path
* Use sys::Path objects with FileRemove instead of std::string
* Use sys::Path methods for construction of path names

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19001 91177308-0d34-0410-b5e6-96231b3b80d8

tools/bugpoint/BugDriver.cpp
tools/bugpoint/CrashDebugger.cpp
tools/bugpoint/ExecutionDriver.cpp
tools/bugpoint/Miscompilation.cpp
tools/bugpoint/OptimizerDriver.cpp
tools/gccld/gccld.cpp
tools/llvm-ld/llvm-ld.cpp

index 4b6db0c08566d8345ac694c6bb95a6b596262ed4..0116ab09a57b8e5f848fffb136774b2eadce75e4 100644 (file)
@@ -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.
index 545d767c2ae69a2e047d1c339ccc7f2abc009fa2..7dd6db4ab5849f5b4e9301f52e2e03672a53b375 100644 (file)
@@ -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: "
index fbba6871f0ebdb815e6db1dfeb9d2a3b5aedbb6a..8044f504a43f5ded933c97690e6e59fca82ff697 100644 (file)
@@ -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;
 }
 
index 2a23ee9e5d931ffe971a9c83f4cf40d8f8237b49..33bfd502c0281d94dd0b1dcc554a755123afd318 100644 (file)
@@ -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;
 }
index d141bd0dabe44be928bd9a9ff992ff29a78af49c..709eff37e461f83894c509de8e3827e50df68c18 100644 (file)
@@ -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;
 }
index 938648a2e5991df02dc0c957585097a87267f491..8f4dd3f9a033622926701c1a4ff55b531142a296 100644 (file)
@@ -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);
index ce8cd862855a53988d4ff6756eb84759524b7392..de3ef43c40c6eea61bc344a750a3c0907b15f234 100644 (file)
@@ -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);