ChuanqiXu added a comment.

In D118586#3336933 <https://reviews.llvm.org/D118586#3336933>, @iains wrote:

> In D118586#3336892 <https://reviews.llvm.org/D118586#3336892>, @ChuanqiXu 
> wrote:
>
>> In D118586#3336865 <https://reviews.llvm.org/D118586#3336865>, @iains wrote:
>>
>>> In D118586#3336612 <https://reviews.llvm.org/D118586#3336612>, @ChuanqiXu 
>>> wrote:
>>>
>>>> (May off the patch)
>>>
>>> I am not sure what you mean here.
>>
>> I mean this comment is not related to the patch. So it doesn't mean to block 
>> the patch landing.
>>
>>>> BTW, I know you also work on GCC frontend. I want to consultant what's 
>>>> your opinion to uniform the command line options between Clang and GCC. 
>>>> Now it looks totally different. I feel it would be a problem for clang. 
>>>> Since the command line between clang and gcc are basically compatible so 
>>>> that user who decide to use clang could turn back to use gcc whenever he 
>>>> want. But I am worrying that it would be a harder decision for users if 
>>>> them are going to use clang. Since the cost to use GCC again would be 
>>>> higher.
>>>
>>> We have the same objective: to keep user-facing options and functionality 
>>> the same between clang and GCC (easier for both user and for build systems).
>>> The content of this patch does not alter that. BTW GCC also keeps the 
>>> module name as "Primary:Parition" internally and user-facing output.  //The 
>>> module name in C++20 modules has no fixed mapping to the BMI/CMI filename 
>>> on disk,.//
>>
>> I just tested the behavior of GCC. When I compile a partition interface unit 
>> (let's name is `mod:part`), it would generate a file named `mod-part,gcm` 
>> under the directory `gcm.cache`. So I feel what GCC does here is more 
>> aggressive, it doesn't only choose the separator '-'. It would create an 
>> cache directory by default. (I am not blaming it. I like the style too. 
>> Otherwise, we need to sore CMI to a place by hand). What I want to say here 
>> is that GCC would replace '-' to ':' when maps to the filesystem. I am OK to 
>> not implement this in the series patch. But I hope we could get in consensus 
>> that we should implement this.
>
> I think I am not explaining well enough ...
>
> Please execute "strings  gcm.cache/mod-part,gcm" - you will see that the 
> Module name is "mod:part" in the module file (GCC knows the module as 
> mod:part internally, it is only the on-disk name that is changed).
>
> We //could// choose to use "mod-part.pcm" in our example test cases here, but 
> it would not make any difference to the requirement - the mapping between 
> module name and filename has to be determined by the mechanism that 
> interfaces with the filesystem (we cannot impose that mapping on the module 
> names internally to the compiler - since the mapping is unknown in the 
> general case).
>
> So we would implement a basic interface (in the module loader, I suppose 
> since that is available for jobs without a preprocessor)  that would give 
> pathNameForModuleName(ModuleName) ,... and probably 
> moduleNameForPathName(PathName) ... those would interface to whatever means 
> was used (e.g. ,module mapper, P1184 <https://reviews.llvm.org/P1184> etc).  
> You could arrange for the default implementation to do the translation you 
> see in GCC (mod:part <=> mod-part.pcm).

Thanks for the detailed explanation. I think we're in consensus now.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D118586

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

Reply via email to