ChuanqiXu added a comment.

In D134267#3844605 <https://reviews.llvm.org/D134267#3844605>, @ChuanqiXu wrote:

> In D134267#3815453 <https://reviews.llvm.org/D134267#3815453>, @dblaikie 
> wrote:
>
>>> This also tries to fix the problem I raised a year ago: 
>>> https://discourse.llvm.org/t/make-command-line-support-for-c-20-module-uniform-with-gcc/59144
>>
>> I think this thread is fairly different from what this patch is proposing.
>>
>> @rsmith for discussion of adding effectively implicit modules support for 
>> C++20 modules - this seems like a pretty significant design choice, but 
>> something we (you and I, SG15, etc) have discussed before in terms of "how 
>> do we support 'Hello, World.'" situations without requiring something that 
>> amounts to a build system even for the simplest C++20 modules programs. 
>> Maybe this is it? But it surprises me a bit, and I don't think the linked 
>> thread is sufficiently relevant to draw conclusions about this direction.
>
> I don't understand your point a lot. From my point, the intention of the 
> thread 
> (https://discourse.llvm.org/t/make-command-line-support-for-c-20-module-uniform-with-gcc/59144)
>  are asking why the command line interfaces of clang are clearly more complex 
> than gcc. And @rsmith replies that:
>
>> Currently, Clang lacks two important features here:
>>
>> 1. Produce a .pcm file and a .o file from a single compilation action.
>
> in 
> https://discourse.llvm.org/t/make-command-line-support-for-c-20-module-uniform-with-gcc/59144/12.
>  And I think this is what this patch tries to do: (generate .pcm file and .o 
> file in one single compilation action).
>
> In fact, this doesn't change the behavior a lot. Previously, when we tried to 
> compile a `*.cppm` directly to `*.o`, the compiler will generate `*.pcm` 
> automatically too! Although the `*.pcm` file is only generated in `/tmp/` 
> files by default. And what this patch did is only to change the default 
> location for `*.pcm` files from `/tmp` to `module cache path`. And it 
> wouldn't affect the original 2 phase compilation model.



In D134267#3845177 <https://reviews.llvm.org/D134267#3845177>, @dblaikie wrote:

> In D134267#3844605 <https://reviews.llvm.org/D134267#3844605>, @ChuanqiXu 
> wrote:
>
>> In D134267#3815453 <https://reviews.llvm.org/D134267#3815453>, @dblaikie 
>> wrote:
>>
>>>> This also tries to fix the problem I raised a year ago: 
>>>> https://discourse.llvm.org/t/make-command-line-support-for-c-20-module-uniform-with-gcc/59144
>>>
>>> I think this thread is fairly different from what this patch is proposing.
>>>
>>> @rsmith for discussion of adding effectively implicit modules support for 
>>> C++20 modules - this seems like a pretty significant design choice, but 
>>> something we (you and I, SG15, etc) have discussed before in terms of "how 
>>> do we support 'Hello, World.'" situations without requiring something that 
>>> amounts to a build system even for the simplest C++20 modules programs. 
>>> Maybe this is it? But it surprises me a bit, and I don't think the linked 
>>> thread is sufficiently relevant to draw conclusions about this direction.
>>
>> I don't understand your point a lot. From my point, the intention of the 
>> thread 
>> (https://discourse.llvm.org/t/make-command-line-support-for-c-20-module-uniform-with-gcc/59144)
>>  are asking why the command line interfaces of clang are clearly more 
>> complex than gcc. And @rsmith replies that:
>>
>>> Currently, Clang lacks two important features here:
>>>
>>> 1. Produce a .pcm file and a .o file from a single compilation action.
>>
>> in 
>> https://discourse.llvm.org/t/make-command-line-support-for-c-20-module-uniform-with-gcc/59144/12.
>>  And I think this is what this patch tries to do: (generate .pcm file and .o 
>> file in one single compilation action).
>>
>> In fact, this doesn't change the behavior a lot. Previously, when we tried 
>> to compile a `*.cppm` directly to `*.o`, the compiler will generate `*.pcm` 
>> automatically too! Although the `*.pcm` file is only generated in `/tmp/` 
>> files by default. And what this patch did is only to change the default 
>> location for `*.pcm` files from `/tmp` to `module cache path`. And it 
>> wouldn't affect the original 2 phase compilation model.
>>
>> BTW, this can simplify the use of modules significantly, see 
>> https://reviews.llvm.org/D135507#change-gpsoCkM1g61J for example.
>
> The use of a module cache path I think is a pretty major difference between 
> what was discussed on the discourse thread and what's being proposed here - a 
> module "cache" is what starts to touch near Clang's old implicit modules that 
> has real problems in terms of parallelism, etc. (granted what you're 
> proposing here doesn't go all the way towards that - it doesn't have implicit 
> actions to generate the pcm, at least)
>
> Is this what GCC Supports? I'd expect something more like Split DWARF, where 
> the .pcm (or .dwo file) is placed next to the .o file - not in some separate 
> directory (what sort of naming scheme would be used to ensure that paths in 
> that directory are unique?).

Oh, I see. So you're not against the idea of producing a .pcm file and .o file 
in a single compilation. So we don't have any fundamental conflicts.

>> Is this what GCC Supports?

It looks similar to me. GCC will generate and search the bmi (they called it 
.cmi files) in the `{current_dir}/gcm.cache` directories automatically. But I 
don't find the option to specify the cache directory in the gcc manual. So I 
guess the path is fixed in gcc. The difference in this patch is that we allows 
the user to specify the position of the cache dir. Then I was wondering - if I 
want a path to store modules cache and there is an existing option 
`-fmodules-cache-path`, can I reuse it? - then here is the patch.

> a module "cache" is what starts to touch near Clang's old implicit modules 
> that has real problems in terms of parallelism

Could you elaborate more on this? Do you mean it is bad that the C++20 Modules 
share the cache path with clang modules? Or is it bad about the idea of cache 
path?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134267/new/

https://reviews.llvm.org/D134267

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to