summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Module.cpp
diff options
context:
space:
mode:
authorBen Langmuir <blangmuir@apple.com>2015-08-13 17:13:33 +0000
committerBen Langmuir <blangmuir@apple.com>2015-08-13 17:13:33 +0000
commit7ff29148ac7883881e62dc9e1714057c68ad4436 (patch)
tree54d51d0e2e33fda451999a6f3eeab578c69bad84 /clang/lib/Basic/Module.cpp
parenta7471795ae391a71cd66213300a173bcea9fd672 (diff)
downloadbcm5719-llvm-7ff29148ac7883881e62dc9e1714057c68ad4436.tar.gz
bcm5719-llvm-7ff29148ac7883881e62dc9e1714057c68ad4436.zip
[Modules] Add Darwin-specific compatibility module map parsing hacks
This preserves backwards compatibility for two hacks in the Darwin system module map files: 1. The use of 'requires excluded' to make headers non-modular, which should really be mapped to 'textual' now that we have this feature. 2. Silently removes a bogus cplusplus requirement from IOKit.avc. Once we start diagnosing missing requirements and headers on auto-imports these would have broken compatibility with existing Darwin SDKs. llvm-svn: 244912
Diffstat (limited to 'clang/lib/Basic/Module.cpp')
-rw-r--r--clang/lib/Basic/Module.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Basic/Module.cpp b/clang/lib/Basic/Module.cpp
index 4314b41eb34..4188cefc849 100644
--- a/clang/lib/Basic/Module.cpp
+++ b/clang/lib/Basic/Module.cpp
@@ -139,6 +139,15 @@ std::string Module::getFullModuleName() const {
return Result;
}
+bool Module::fullModuleNameIs(ArrayRef<StringRef> nameParts) const {
+ for (const Module *M = this; M; M = M->Parent) {
+ if (nameParts.empty() || M->Name != nameParts.back())
+ return false;
+ nameParts = nameParts.drop_back();
+ }
+ return nameParts.empty();
+}
+
Module::DirectoryName Module::getUmbrellaDir() const {
if (Header U = getUmbrellaHeader())
return {"", U.Entry->getDir()};
OpenPOWER on IntegriCloud