summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/clang/Lex/HeaderSearchOptions.h7
-rw-r--r--lib/Frontend/CreateInvocationFromCommandLine.cpp8
-rw-r--r--lib/Frontend/InitHeaderSearch.cpp11
-rw-r--r--lib/Tooling/Tooling.cpp3
-rw-r--r--test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector1
-rw-r--r--test/Tooling/clang-check-mac-libcxx-abspath.cpp17
-rw-r--r--test/Tooling/clang-check-mac-libcxx-relpath.cpp17
7 files changed, 10 insertions, 54 deletions
diff --git a/include/clang/Lex/HeaderSearchOptions.h b/include/clang/Lex/HeaderSearchOptions.h
index bdf7b43f46..e5b52b3032 100644
--- a/include/clang/Lex/HeaderSearchOptions.h
+++ b/include/clang/Lex/HeaderSearchOptions.h
@@ -108,13 +108,6 @@ public:
/// etc.).
std::string ResourceDir;
- /// Compiler install dir as detected by the Driver.
- /// This is typically the directory that contains the clang executable, i.e.
- /// the 'bin/' subdir of a clang distribution.
- /// Only used to add include dirs for libc++ on Darwin. Please avoid relying
- /// on this field for other purposes.
- std::string InstallDir;
-
/// The directory used for the module cache.
std::string ModuleCachePath;
diff --git a/lib/Frontend/CreateInvocationFromCommandLine.cpp b/lib/Frontend/CreateInvocationFromCommandLine.cpp
index 3a5e1e8b15..2d4c40f8b9 100644
--- a/lib/Frontend/CreateInvocationFromCommandLine.cpp
+++ b/lib/Frontend/CreateInvocationFromCommandLine.cpp
@@ -11,18 +11,17 @@
//
//===----------------------------------------------------------------------===//
+#include "clang/Frontend/Utils.h"
#include "clang/Basic/DiagnosticOptions.h"
-#include "clang/Driver/Action.h"
#include "clang/Driver/Compilation.h"
#include "clang/Driver/Driver.h"
+#include "clang/Driver/Action.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/Tool.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendDiagnostic.h"
-#include "clang/Frontend/Utils.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Support/Host.h"
-#include "llvm/Support/Path.h"
using namespace clang;
using namespace llvm::opt;
@@ -103,8 +102,5 @@ std::unique_ptr<CompilerInvocation> clang::createInvocationFromCommandLine(
CCArgs.size(),
*Diags))
return nullptr;
- // Patch up the install dir, so we find the same standard library as the
- // original compiler on MacOS.
- CI->getHeaderSearchOpts().InstallDir = TheDriver.getInstalledDir();
return CI;
}
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp
index 2f62ad3faf..deedb22f3e 100644
--- a/lib/Frontend/InitHeaderSearch.cpp
+++ b/lib/Frontend/InitHeaderSearch.cpp
@@ -476,9 +476,14 @@ void InitHeaderSearch::AddDefaultIncludePaths(const LangOptions &Lang,
if (triple.isOSDarwin()) {
// On Darwin, libc++ may be installed alongside the compiler in
// include/c++/v1.
- if (!HSOpts.InstallDir.empty()) {
- // Get from foo/bin to foo.
- SmallString<128> P(llvm::sys::path::parent_path(HSOpts.InstallDir));
+ if (!HSOpts.ResourceDir.empty()) {
+ // Remove version from foo/lib/clang/version
+ StringRef NoVer = llvm::sys::path::parent_path(HSOpts.ResourceDir);
+ // Remove clang from foo/lib/clang
+ StringRef Lib = llvm::sys::path::parent_path(NoVer);
+ // Remove lib from foo/lib
+ SmallString<128> P = llvm::sys::path::parent_path(Lib);
+
// Get foo/include/c++/v1
llvm::sys::path::append(P, "include", "c++", "v1");
AddUnmappedPath(P, CXXSystem, false);
diff --git a/lib/Tooling/Tooling.cpp b/lib/Tooling/Tooling.cpp
index f113e47cdc..cfdb32f0ae 100644
--- a/lib/Tooling/Tooling.cpp
+++ b/lib/Tooling/Tooling.cpp
@@ -327,9 +327,6 @@ bool ToolInvocation::run() {
Invocation->getPreprocessorOpts().addRemappedFile(It.getKey(),
Input.release());
}
- // Patch up the install dir, so we find the same standard library as the
- // original compiler on MacOS.
- Invocation->getHeaderSearchOpts().InstallDir = Driver->getInstalledDir();
return runInvocation(BinaryName, Compilation.get(), std::move(Invocation),
std::move(PCHContainerOps));
}
diff --git a/test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector b/test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector
deleted file mode 100644
index 8512477b5d..0000000000
--- a/test/Tooling/Inputs/mock-libcxx/include/c++/v1/mock_vector
+++ /dev/null
@@ -1 +0,0 @@
-class vector {};
diff --git a/test/Tooling/clang-check-mac-libcxx-abspath.cpp b/test/Tooling/clang-check-mac-libcxx-abspath.cpp
deleted file mode 100644
index 476ba3ce08..0000000000
--- a/test/Tooling/clang-check-mac-libcxx-abspath.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// Clang on MacOS can find libc++ living beside the installed compiler.
-// This test makes sure our libTooling-based tools emulate this properly.
-//
-// RUN: rm -rf %t
-// RUN: mkdir %t
-//
-// Install the mock libc++ (simulates the libc++ directory structure).
-// RUN: cp -r %S/Inputs/mock-libcxx %t/
-//
-// Pretend clang is installed beside the mock library that we provided.
-// RUN: echo '[{"directory":"%t","command":"%t/mock-libcxx/bin/clang++ -stdlib=libc++ -target x86_64-apple-darwin -c test.cpp","file":"test.cpp"}]' | sed -e 's/\\/\//g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// clang-check will produce an error code if the mock library is not found.
-// RUN: clang-check -p "%t" "%t/test.cpp"
-
-#include <mock_vector>
-vector v;
diff --git a/test/Tooling/clang-check-mac-libcxx-relpath.cpp b/test/Tooling/clang-check-mac-libcxx-relpath.cpp
deleted file mode 100644
index 099be5ecd4..0000000000
--- a/test/Tooling/clang-check-mac-libcxx-relpath.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// Clang on MacOS can find libc++ living beside the installed compiler.
-// This test makes sure our libTooling-based tools emulate this properly.
-//
-// RUN: rm -rf %t
-// RUN: mkdir %t
-//
-// Install the mock libc++ (simulates the libc++ directory structure).
-// RUN: cp -r %S/Inputs/mock-libcxx %t/
-//
-// Pretend clang is installed beside the mock library that we provided.
-// RUN: echo '[{"directory":"%t","command":"mock-libcxx/bin/clang++ -stdlib=libc++ -target x86_64-apple-darwin -c test.cpp","file":"test.cpp"}]' | sed -e 's/\\/\//g' > %t/compile_commands.json
-// RUN: cp "%s" "%t/test.cpp"
-// clang-check will produce an error code if the mock library is not found.
-// RUN: clang-check -p "%t" "%t/test.cpp"
-
-#include <mock_vector>
-vector v;