ChuanqiXu added a comment.

In D145965#4194514 <https://reviews.llvm.org/D145965#4194514>, @iains wrote:

> In D145965#4192051 <https://reviews.llvm.org/D145965#4192051>, @iains wrote:
>
>> 
>
>
>
>> I was thinking at one stage to add an 'Implementation' module Kind, but at 
>> the moment I do not think it is worth extending the size of the ModuleKind 
>> enum bit field for this (since we now have used up all the entries with the 
>> new 'ExplicitGlobalModuleFragment' case).  That also has a large impact also 
>> for relatively few uses.
>
> I have changed my mind here.
> It seems that we are getting confusing decl context entries without having a 
> proper module for the implementation (even though we will never write such a 
> module to a PCM, since it is not importable).
>
> I was wondering if it would be possible to avoid having separate values for 
> PartitionInterface/Implementation (since they both have a BMI - it is only a 
> question of whether that can be re-exported).  We would have to add one bit 
> to the PCM to deal with that, so that we might as well extend the ModuleKind 
> enum to 4 bits.
>
> So .. please wait for one or two days, I will try to refresh the 
> implementation patch (D126959 <https://reviews.llvm.org/D126959>) and see if 
> that resolves some of the issues I am seeing with `P1815`
>
> (this does not alter the situation that you are going to revisit the 
> `isModuleUnitOfCurrentTU` if that is needed - but it might not be; since 
> having a separate module for the impl. will avoid some of the ambiguities 
> anyway).
>
> Additional Note:  we also have a situation in the lookups for dependent names 
> during template instantiation that the visibility of decls can need to be 
> assessed in a different module context from the current module.  So that we 
> might also need to have a `areTheseModulesFromTheSameTU(Module *A. Module *B)`

Yeah. What I had in mind is to remove `ModulePartitionInterface` and 
`ModulePartitionImplementation` in ModuleKinds and rename `ModuleInterfaceUnit` 
to `NamedModules`. And we can introduce 2 bits for IsPartition and 
IsImplementation. Then we can introduce ImplementationUnit without any loss.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D145965

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

Reply via email to