summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/PPDirectives.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-09-25 22:50:50 +0000
committerReid Kleckner <rnk@google.com>2019-09-25 22:50:50 +0000
commit9aeae9fe0d7570447d50fe495d61d4da160ac06d (patch)
tree619da0a30ecd0c7e9fc61f75c56e50d2a74da770 /clang/lib/Lex/PPDirectives.cpp
parent8b5783194ced98cabaa585678cacaf7c2e2763d8 (diff)
downloadbcm5719-llvm-9aeae9fe0d7570447d50fe495d61d4da160ac06d.tar.gz
bcm5719-llvm-9aeae9fe0d7570447d50fe495d61d4da160ac06d.zip
Simplify -fms-compatibility include lookup logic, NFC
This include search logic has an extra parameter to deal with Windows includes with backslashes, which get normalized to forward slashes on non-Windows under -fms-compatibility. Hoist the conditional operator out of LookupHeaderIncludeOrImport and pass the result in instead of repeating the ?: expression everywhere. llvm-svn: 372926
Diffstat (limited to 'clang/lib/Lex/PPDirectives.cpp')
-rw-r--r--clang/lib/Lex/PPDirectives.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp
index fe57f37f09a..660aba1db7a 100644
--- a/clang/lib/Lex/PPDirectives.cpp
+++ b/clang/lib/Lex/PPDirectives.cpp
@@ -1716,11 +1716,11 @@ Optional<FileEntryRef> Preprocessor::LookupHeaderIncludeOrImport(
SourceLocation FilenameLoc, CharSourceRange FilenameRange,
const Token &FilenameTok, bool &IsFrameworkFound, bool IsImportDecl,
bool &IsMapped, const DirectoryLookup *LookupFrom,
- const FileEntry *LookupFromFile, SmallString<128> &NormalizedPath,
+ const FileEntry *LookupFromFile, StringRef LookupFilename,
SmallVectorImpl<char> &RelativePath, SmallVectorImpl<char> &SearchPath,
ModuleMap::KnownHeader &SuggestedModule, bool isAngled) {
Optional<FileEntryRef> File = LookupFile(
- FilenameLoc, LangOpts.MSVCCompat ? NormalizedPath.c_str() : Filename,
+ FilenameLoc, LookupFilename,
isAngled, LookupFrom, LookupFromFile, CurDir,
Callbacks ? &SearchPath : nullptr, Callbacks ? &RelativePath : nullptr,
&SuggestedModule, &IsMapped, &IsFrameworkFound);
@@ -1739,7 +1739,7 @@ Optional<FileEntryRef> Preprocessor::LookupHeaderIncludeOrImport(
// Try the lookup again, skipping the cache.
Optional<FileEntryRef> File = LookupFile(
FilenameLoc,
- LangOpts.MSVCCompat ? NormalizedPath.c_str() : Filename, isAngled,
+ LookupFilename, isAngled,
LookupFrom, LookupFromFile, CurDir, nullptr, nullptr,
&SuggestedModule, &IsMapped, /*IsFrameworkFound=*/nullptr,
/*SkipCache*/ true);
@@ -1757,7 +1757,7 @@ Optional<FileEntryRef> Preprocessor::LookupHeaderIncludeOrImport(
// provide the user with a possible fixit.
if (isAngled) {
Optional<FileEntryRef> File = LookupFile(
- FilenameLoc, LangOpts.MSVCCompat ? NormalizedPath.c_str() : Filename,
+ FilenameLoc, LookupFilename,
false, LookupFrom, LookupFromFile, CurDir,
Callbacks ? &SearchPath : nullptr, Callbacks ? &RelativePath : nullptr,
&SuggestedModule, &IsMapped,
@@ -1913,11 +1913,13 @@ Preprocessor::ImportAction Preprocessor::HandleHeaderIncludeOrImport(
llvm::sys::path::native(NormalizedPath);
#endif
}
+ StringRef LookupFilename =
+ LangOpts.MSVCCompat ? StringRef(NormalizedPath) : Filename;
Optional<FileEntryRef> File = LookupHeaderIncludeOrImport(
CurDir, Filename, FilenameLoc, FilenameRange, FilenameTok,
IsFrameworkFound, IsImportDecl, IsMapped, LookupFrom, LookupFromFile,
- NormalizedPath, RelativePath, SearchPath, SuggestedModule, isAngled);
+ LookupFilename, RelativePath, SearchPath, SuggestedModule, isAngled);
if (usingPCHWithThroughHeader() && SkippingUntilPCHThroughHeader) {
if (File && isPCHThroughHeader(&File->getFileEntry()))
@@ -2059,10 +2061,9 @@ Preprocessor::ImportAction Preprocessor::HandleHeaderIncludeOrImport(
// Notify the callback object that we've seen an inclusion directive.
// FIXME: Use a different callback for a pp-import?
Callbacks->InclusionDirective(
- HashLoc, IncludeTok,
- LangOpts.MSVCCompat ? NormalizedPath.c_str() : Filename, isAngled,
- FilenameRange, File ? &File->getFileEntry() : nullptr, SearchPath,
- RelativePath, Action == Import ? SuggestedModule.getModule() : nullptr,
+ HashLoc, IncludeTok, LookupFilename, isAngled, FilenameRange,
+ File ? &File->getFileEntry() : nullptr, SearchPath, RelativePath,
+ Action == Import ? SuggestedModule.getModule() : nullptr,
FileCharacter);
if (Action == Skip && File)
Callbacks->FileSkipped(*File, FilenameTok, FileCharacter);
@@ -2085,7 +2086,7 @@ Preprocessor::ImportAction Preprocessor::HandleHeaderIncludeOrImport(
!IsMapped && !File->getFileEntry().tryGetRealPathName().empty();
if (CheckIncludePathPortability) {
- StringRef Name = LangOpts.MSVCCompat ? NormalizedPath.str() : Filename;
+ StringRef Name = LookupFilename;
StringRef RealPathName = File->getFileEntry().tryGetRealPathName();
SmallVector<StringRef, 16> Components(llvm::sys::path::begin(Name),
llvm::sys::path::end(Name));
OpenPOWER on IntegriCloud