]> granicus.if.org Git - clang/commitdiff
[cleanup] Factor out setting the driver's install dir. NFC.
authorSean Silva <chisophugis@gmail.com>
Fri, 15 Aug 2014 18:58:15 +0000 (18:58 +0000)
committerSean Silva <chisophugis@gmail.com>
Fri, 15 Aug 2014 18:58:15 +0000 (18:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215756 91177308-0d34-0410-b5e6-96231b3b80d8

tools/driver/driver.cpp

index 1bb94a8ad81ba963965173a6ee3d55084fd230e5..e695f5c3a10498356919e323b435fc06486923d7 100644 (file)
@@ -336,6 +336,27 @@ CreateAndPopulateDiagOpts(SmallVectorImpl<const char *> &argv) {
   return DiagOpts;
 }
 
+static void SetInstallDir(SmallVectorImpl<const char *> &argv,
+                          Driver &TheDriver) {
+  // Attempt to find the original path used to invoke the driver, to determine
+  // the installed path. We do this manually, because we want to support that
+  // path being a symlink.
+  SmallString<128> InstalledPath(argv[0]);
+
+  // Do a PATH lookup, if there are no directory components.
+  if (llvm::sys::path::filename(InstalledPath) == InstalledPath) {
+    std::string Tmp = llvm::sys::FindProgramByName(
+      llvm::sys::path::filename(InstalledPath.str()));
+    if (!Tmp.empty())
+      InstalledPath = Tmp;
+  }
+  llvm::sys::fs::make_absolute(InstalledPath);
+  InstalledPath = llvm::sys::path::parent_path(InstalledPath);
+  bool exists;
+  if (!llvm::sys::fs::exists(InstalledPath.str(), exists) && exists)
+    TheDriver.setInstalledDir(InstalledPath);
+}
+
 int main(int argc_, const char **argv_) {
   llvm::sys::PrintStackTraceOnErrorSignal();
   llvm::PrettyStackTraceProgram X(argc_, argv_);
@@ -399,26 +420,7 @@ int main(int argc_, const char **argv_) {
   ProcessWarningOptions(Diags, *DiagOpts, /*ReportDiags=*/false);
 
   Driver TheDriver(Path, llvm::sys::getDefaultTargetTriple(), Diags);
-
-  // Attempt to find the original path used to invoke the driver, to determine
-  // the installed path. We do this manually, because we want to support that
-  // path being a symlink.
-  {
-    SmallString<128> InstalledPath(argv[0]);
-
-    // Do a PATH lookup, if there are no directory components.
-    if (llvm::sys::path::filename(InstalledPath) == InstalledPath) {
-      std::string Tmp = llvm::sys::FindProgramByName(
-        llvm::sys::path::filename(InstalledPath.str()));
-      if (!Tmp.empty())
-        InstalledPath = Tmp;
-    }
-    llvm::sys::fs::make_absolute(InstalledPath);
-    InstalledPath = llvm::sys::path::parent_path(InstalledPath);
-    bool exists;
-    if (!llvm::sys::fs::exists(InstalledPath.str(), exists) && exists)
-      TheDriver.setInstalledDir(InstalledPath);
-  }
+  SetInstallDir(argv, TheDriver);
 
   llvm::InitializeAllTargets();
   ParseProgName(argv, SavedStrings, TheDriver);