[clang] [clang][modules] Allow module maps with textual headers to be non-affecting (PR #89441)

Sam McCall via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 23 03:00:49 PDT 2024


sam-mccall wrote:

> @sam-mccall That makes sense.
> 
> I think one option we have here is to consider all module maps describing a textual header that got included as affecting. I'm concerned that a long chain of textual header includes might again be problematic.

Yeah, that's the option that comes closest to preserving previous behavior, and the one that I think most precisely captures the "affecting" semantics - including the module maps that were required for the compilation.

I've sent a version of this as https://github.com/llvm/llvm-project/pull/89729, based on your first commit here.

> For this particular test, we only need to consider the module maps describing `use`d modules affecting to keep `-fmodules-strict-decluse` happy, which seems like a more precise solution.

I'm not sure this is correct in general: if A uses B which uses C, and both B and C are textual, then C.modulemap affects the compilation of A.pcm but won't be picked up.

https://github.com/llvm/llvm-project/pull/89441


More information about the cfe-commits mailing list