[clang][Lex] Header map search case insensitivity
authorTroy Johnson <troyj@meta.com>
Tue, 1 Nov 2022 18:06:30 +0000 (11:06 -0700)
committerTroy Johnson <troyj@meta.com>
Tue, 1 Nov 2022 18:33:00 +0000 (11:33 -0700)
Correct D135801 to be case insensitive.

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

clang/lib/Lex/HeaderSearch.cpp

index 65316f4..e6af122 100644 (file)
@@ -388,7 +388,9 @@ void HeaderSearch::indexInitialHeaderMaps() {
       break;
 
     // Give earlier keys precedence over identical later keys.
-    auto Callback = [&](StringRef Filename) { Index.try_emplace(Filename, i); };
+    auto Callback = [&](StringRef Filename) {
+      Index.try_emplace(Filename.lower(), i);
+    };
     Dir.getHeaderMap()->forEachKey(Callback);
   }
 
@@ -1021,7 +1023,7 @@ Optional<FileEntryRef> HeaderSearch::LookupFile(
         // Handle cold misses of user includes in the presence of many header
         // maps.  We avoid searching perhaps thousands of header maps by
         // jumping directly to the correct one or jumping beyond all of them.
-        auto Iter = SearchDirHeaderMapIndex.find(Filename);
+        auto Iter = SearchDirHeaderMapIndex.find(Filename.lower());
         if (Iter == SearchDirHeaderMapIndex.end())
           // Not in index => Skip to first SearchDir after initial header maps
           It = search_dir_nth(FirstNonHeaderMapSearchDirIdx);