]> granicus.if.org Git - clang/commitdiff
Cleanup r138662 per Ben and David's suggestions, thanks.
authorChad Rosier <mcrosier@apple.com>
Fri, 26 Aug 2011 22:27:02 +0000 (22:27 +0000)
committerChad Rosier <mcrosier@apple.com>
Fri, 26 Aug 2011 22:27:02 +0000 (22:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@138670 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Driver.h
lib/Driver/Driver.cpp

index 2145d724c3454ff04d61c2e38141deffb071e1fe..bcb75b3a28ab0f82cc1c296d5847fc73fc8714dd 100644 (file)
@@ -377,7 +377,7 @@ public:
   /// as part of compilation; the file will have the given prefix and suffix.
   ///
   /// GCC goes to extra lengths here to be a bit more robust.
-  std::string GetTemporaryPath(const char *Prefix, const char *Suffix) const;
+  std::string GetTemporaryPath(StringRef Prefix, const char *Suffix) const;
 
   /// GetHostInfo - Construct a new host info object for the given
   /// host triple.
index 66d2df16e11dbb6c8d71a2e7c104d21833c9950f..534984b4b3a7e8b33ff00cfe5b7071a31f663fff 100644 (file)
@@ -1335,15 +1335,6 @@ void Driver::BuildJobsForAction(Compilation &C,
   }
 }
 
-// Strip the directory and suffix from BaseInput.
-static std::string getBaseName (const char *BaseInput) {
-  std::pair<StringRef, StringRef> Split = StringRef(BaseInput).rsplit('/');
-  if (Split.second != "")
-    return Split.second.split('.').first.str();
-  else
-    return Split.first.split('.').first.str();
-}
-
 const char *Driver::GetNamedOutputPath(Compilation &C,
                                        const JobAction &JA,
                                        const char *BaseInput,
@@ -1363,9 +1354,10 @@ const char *Driver::GetNamedOutputPath(Compilation &C,
   // Output to a temporary file?
   if ((!AtTopLevel && !C.getArgs().hasArg(options::OPT_save_temps)) ||
       CCGenDiagnostics) {
+    StringRef Name = llvm::sys::path::filename(BaseInput);
+    std::pair<StringRef, StringRef> Split = Name.split('.');
     std::string TmpName =
-      GetTemporaryPath(getBaseName(BaseInput).c_str(), 
-                       types::getTypeTempSuffix(JA.getType()));
+      GetTemporaryPath(Split.first, types::getTypeTempSuffix(JA.getType()));
     return C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str()));
   }
 
@@ -1399,9 +1391,10 @@ const char *Driver::GetNamedOutputPath(Compilation &C,
   // filename, then avoid overwriting input file.
   if (!AtTopLevel && C.getArgs().hasArg(options::OPT_save_temps) &&
       NamedOutput == BaseName) {
+    StringRef Name = llvm::sys::path::filename(BaseInput);
+    std::pair<StringRef, StringRef> Split = Name.split('.');
     std::string TmpName =
-      GetTemporaryPath(getBaseName(BaseInput).c_str(),
-                       types::getTypeTempSuffix(JA.getType()));
+      GetTemporaryPath(Split.first, types::getTypeTempSuffix(JA.getType()));
     return C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str()));
   }
 
@@ -1486,7 +1479,7 @@ std::string Driver::GetProgramPath(const char *Name, const ToolChain &TC,
   return Name;
 }
 
-std::string Driver::GetTemporaryPath(const char *Prefix, const char *Suffix) 
+std::string Driver::GetTemporaryPath(StringRef Prefix, const char *Suffix) 
   const {
   // FIXME: This is lame; sys::Path should provide this function (in particular,
   // it should know how to find the temporary files dir).