[clang][deps] Disable implicit module maps
authorJan Svoboda <jan_svoboda@apple.com>
Sat, 12 Mar 2022 10:04:17 +0000 (11:04 +0100)
committerJan Svoboda <jan_svoboda@apple.com>
Sat, 12 Mar 2022 10:07:21 +0000 (11:07 +0100)
commita6ef3635461c7e689972337b281d0052331f6150
tree9282fc4950edac46c93bd60ec944b02a0d1b2395
parent85daf6973d2bd3216b9d131be5be625b1227016c
[clang][deps] Disable implicit module maps

Since D113473, we don't report any module map files via `-fmodule-map-file=` in explicit builds. The ultimate goal here is to make sure Clang doesn't open/read/parse/evaluate unnecessary module maps.

However, implicit module maps still end up reading all reachable module maps. This patch disables implicit module maps in explicit builds.

Unfortunately, we still need to report some module map files that aren't encoded in PCM files of dependencies: module maps that are necessary to correctly evaluate includes in modules marked as `[no_undeclared_includes]`.

Depends on D120464.

Reviewed By: dexonsmith

Differential Revision: https://reviews.llvm.org/D120465
clang/include/clang/Tooling/DependencyScanning/ModuleDepCollector.h
clang/lib/Tooling/DependencyScanning/DependencyScanningTool.cpp
clang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
clang/test/ClangScanDeps/modules-full.cpp
clang/test/ClangScanDeps/modules-inferred.m
clang/test/ClangScanDeps/modules-no-undeclared-includes.c [new file with mode: 0644]
clang/test/ClangScanDeps/modules-pch.c