[clang][deps] Modules don't contribute to search path usage
authorJan Svoboda <jan_svoboda@apple.com>
Wed, 16 Mar 2022 10:44:07 +0000 (11:44 +0100)
committerJan Svoboda <jan_svoboda@apple.com>
Wed, 16 Mar 2022 11:17:52 +0000 (12:17 +0100)
To reduce the number of modules we build in explicit builds (which use strict context hash), we prune unused header search paths. This essentially merges parts of the dependency graph.

Determining whether a search path was used to discover a module (through implicit module maps) proved to be somewhat complicated. Initial support landed in D102923, while D113676 attempts to fix some bugs.

However, now that we don't use implicit module maps in explicit builds (since D120465), we don't need to consider such search paths as used anymore. Modules are no longer discovered through the header search mechanism, so we can drop such search paths (provided they are not needed for other reasons).

This patch removes whatever support for detecting such usage we had, since it's buggy and not required anymore.

Depends on D120465.

Reviewed By: dexonsmith

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

clang/include/clang/Lex/HeaderSearch.h
clang/lib/Lex/HeaderSearch.cpp
clang/test/Preprocessor/search-path-usage.m

index 2de46d727ece4edacdb4c89c85652e1147be4c99..22afec4b33eb86c320ae819912552231c180d39a 100644 (file)
@@ -561,6 +561,7 @@ public:
 
   /// Determine which HeaderSearchOptions::UserEntries have been successfully
   /// used so far and mark their index with 'true' in the resulting bit vector.
+  /// Note: implicit module maps don't contribute to entry usage.
   std::vector<bool> computeUserEntryUsage() const;
 
   /// This method returns a HeaderMap for the specified
index c8908642a4c25b88ac81c91b68d6af8357d94cb5..469c435edd96583e16a95e9848fc60131bb20a9c 100644 (file)
@@ -365,9 +365,6 @@ Module *HeaderSearch::lookupModule(StringRef ModuleName, StringRef SearchName,
       break;
   }
 
-  if (Module)
-    noteLookupUsage(It.Idx, ImportLoc);
-
   return Module;
 }
 
index 66f626808cf6fb4f096d32d4d56fb8dc009c1924..4676a19ab6ca4648e9dc5254831d492f3fce7f06 100644 (file)
 #endif
 #endif
 
-// Check that search paths with module maps are reported.
+// Check that search paths with module maps are NOT reported.
 //
 // RUN: mkdir %t/modulemap_abs
 // RUN: sed "s|DIR|%/S/Inputs/search-path-usage|g"                            \
 // RUN:   -DMODMAP_ABS -verify
 #ifdef MODMAP_ABS
 @import b; // \
-// expected-remark-re {{search path used: '{{.*}}/modulemap_abs'}}
+// expected-no-diagnostics
 #endif