Python 2/3 compat: queue vs Queue

Differential Revision: https://reviews.llvm.org/D59590


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356905 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
index 7ef7c46..25f1c28 100644
--- a/tools/llvm-config/llvm-config.cpp
+++ b/tools/llvm-config/llvm-config.cpp
@@ -268,7 +268,6 @@
   // tree.
   bool IsInDevelopmentTree;
   enum { CMakeStyle, CMakeBuildModeStyle } DevelopmentTreeLayout;
-  llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]));
   std::string CurrentExecPrefix;
   std::string ActiveObjRoot;
 
@@ -279,11 +278,18 @@
     build_mode = CMAKE_CFG_INTDIR;
 #endif
 
-  // Create an absolute path, and pop up one directory (we expect to be inside a
-  // bin dir).
-  sys::fs::make_absolute(CurrentPath);
-  CurrentExecPrefix =
-      sys::path::parent_path(sys::path::parent_path(CurrentPath)).str();
+  // Create an absolute path, and pop up as much directory as in
+  // LLVM_TOOLS_INSTALL_DIR
+  {
+    llvm::SmallString<256> CurrentPath(GetExecutablePath(argv[0]));
+    sys::fs::make_absolute(CurrentPath);
+    for (auto iter = sys::path::begin(LLVM_TOOLS_INSTALL_DIR),
+              end = sys::path::end(LLVM_TOOLS_INSTALL_DIR);
+         iter != end; ++iter) {
+      CurrentPath = sys::path::parent_path(CurrentPath).str();
+    }
+    CurrentExecPrefix = sys::path::parent_path(CurrentPath).str();
+  }
 
   // Check to see if we are inside a development tree by comparing to possible
   // locations (prefix style or CMake style).