[PATCH v5 4/5] c++modules: report imported CMI files as dependencies

Jason Merrill jason@redhat.com
Tue Jul 18 20:52:44 GMT 2023


On 6/25/23 12:36, Ben Boeckel wrote:
> On Fri, Jun 23, 2023 at 08:12:41 -0400, Nathan Sidwell wrote:
>> On 6/22/23 22:45, Ben Boeckel wrote:
>>> On Thu, Jun 22, 2023 at 17:21:42 -0400, Jason Merrill wrote:
>>>> On 1/25/23 16:06, Ben Boeckel wrote:
>>>>> They affect the build, so report them via `-MF` mechanisms.
>>>>
>>>> Why isn't this covered by the existing code in preprocessed_module?
>>>
>>> It appears as though it is neutered in patch 3 where
>>> `write_make_modules_deps` is used in `make_write` (or will use that name
>>
>> Why do you want to record the transitive modules? I would expect just noting the
>> ones with imports directly in the TU would suffice (i.e check the 'outermost' arg)
> 
> FWIW, only GCC has "fat" modules. MSVC and Clang both require the
> transitive closure to be passed. The idea there is to minimize the size
> of individual module files.
> 
> If GCC only reads the "fat" modules, then only those should be recorded.
> If it reads other modules, they should be recorded as well.

But wouldn't the transitive modules be dependencies of the direct 
imports, so (re)building the direct imports would first require building 
the transitive modules anyway?  Expressing the transitive closure of 
dependencies for each importer seems redundant when it can be easily 
derived from the direct dependencies of each module.

Jason



More information about the Gcc mailing list