diff options
Diffstat (limited to 'lib/Frontend/InitHeaderSearch.cpp')
-rw-r--r-- | lib/Frontend/InitHeaderSearch.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp index d65d13489dc4..5d877ee9c0d7 100644 --- a/lib/Frontend/InitHeaderSearch.cpp +++ b/lib/Frontend/InitHeaderSearch.cpp @@ -137,6 +137,13 @@ bool InitHeaderSearch::AddUnmappedPath(const Twine &Path, IncludeDirGroup Group, SmallString<256> MappedPathStorage; StringRef MappedPathStr = Path.toStringRef(MappedPathStorage); + // If use system headers while cross-compiling, emit the warning. + if (HasSysroot && (MappedPathStr.startswith("/usr/include") || + MappedPathStr.startswith("/usr/local/include"))) { + Headers.getDiags().Report(diag::warn_poison_system_directories) + << MappedPathStr; + } + // Compute the DirectoryLookup type. SrcMgr::CharacteristicKind Type; if (Group == Quoted || Group == Angled || Group == IndexHeaderMap) { @@ -148,17 +155,17 @@ bool InitHeaderSearch::AddUnmappedPath(const Twine &Path, IncludeDirGroup Group, } // If the directory exists, add it. - if (const DirectoryEntry *DE = FM.getDirectory(MappedPathStr)) { + if (auto DE = FM.getOptionalDirectoryRef(MappedPathStr)) { IncludePath.push_back( - std::make_pair(Group, DirectoryLookup(DE, Type, isFramework))); + std::make_pair(Group, DirectoryLookup(*DE, Type, isFramework))); return true; } // Check to see if this is an apple-style headermap (which are not allowed to // be frameworks). if (!isFramework) { - if (const FileEntry *FE = FM.getFile(MappedPathStr)) { - if (const HeaderMap *HM = Headers.CreateHeaderMap(FE)) { + if (auto FE = FM.getFile(MappedPathStr)) { + if (const HeaderMap *HM = Headers.CreateHeaderMap(*FE)) { // It is a headermap, add it to the search path. IncludePath.push_back( std::make_pair(Group, @@ -636,8 +643,8 @@ void clang::ApplyHeaderSearchOptions(HeaderSearch &HS, // Set up the builtin include directory in the module map. SmallString<128> P = StringRef(HSOpts.ResourceDir); llvm::sys::path::append(P, "include"); - if (const DirectoryEntry *Dir = HS.getFileMgr().getDirectory(P)) - HS.getModuleMap().setBuiltinIncludeDir(Dir); + if (auto Dir = HS.getFileMgr().getDirectory(P)) + HS.getModuleMap().setBuiltinIncludeDir(*Dir); } Init.Realize(Lang); |