dblaikie added a comment.

In D144844#4193727 <https://reviews.llvm.org/D144844#4193727>, @iains wrote:

> In D144844#4193568 <https://reviews.llvm.org/D144844#4193568>, @dblaikie 
> wrote:
>
>> Seem to recall @iains and others were concerned about the number of modules 
>> flags - this one I'd be inclined to suggest we shouldn't add if possible. If 
>> one way or the other is generally better - we should, at least initially, 
>> dictate that behavior entirely until someone can demonstrate divergent use 
>> cases that seem reasonable to support but must have different behavior here.
>
> Agreed, [IMO, at least] we have a very large set of modules options, and 
> expanding that should only be done if no sensible alternative can be found 
> (we are already seeing users getting confused about which ones apply in each 
> case).
>
> A second point here - that (once we have the ability to generate object and 
> PCM in the same compilation) that we will move to elide the function bodies 
> for non-inline and non-dependent cases from the PCM, so that this problem 
> will magically "go away" (to restore the current behaviour, we'd then be 
> using some optimisation control to avoid the elision, I suppose).

Yeah, this seems like the simplest concrete point to suggest we just change the 
defaults here - that's the plan moving forward, and I don't think it's worth 
trying to maintain two codepaths/supports here - people can write the functions 
as explicitly `inline` when they want cross-module inlining & we can let 
non-inline functions be the same as they were before modules.

If, years from now, someone wants to prototype some stronger optimization 
opportunities in modules - let's do that later/then?

>> The performance of cross-module inlining could be achieved with something 
>> like ThinLTO if we were to lean in favor of not allowing cross-module 
>> inlining by default, for instance.
>
> +1 this seems exactly what LTO is intended for (also there are folks who seem 
> to have an expectation that the BMI somehow magically contains an optimised 
> representation of the source - which again is the province of LTO).

There's some advantages (build system complexity, time, etc) to doing it at 
compile-time, rather than link-time, but I don't think we have enough data to 
be worth the complexity for now - I'd vote for letting the feature go/removing 
it for now, and folks can try to bring it back with data/measurements later.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D144844

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

Reply via email to