dblaikie added a comment.

In D83652#2146732 <https://reviews.llvm.org/D83652#2146732>, @llunak wrote:

> The patch is incomplete, isn't it? It removes DeclIsFromPCHWithObjectFile(), 
> but it's still called from ASTContext::DeclMustBeEmitted(). The description 
> also mentions updating of the pch-codegen test, but that's not included.


Ah, right you are - arc diff only took the last commit on this branch. I've 
updated it/used arc correctly to get the whole branch worth of changes.

> But assuming this is intended to replace the D48426 
> <https://reviews.llvm.org/D48426> functionality with modular codegen,

Not quite - it's intended to implement the D48426 
<https://reviews.llvm.org/D48426> functionality using an implementation 
strategy that is closer to modular code generation. Removing the need for the 
module flag, using the MODULAR_CODEGEN_DECLS list, etc. But only putting the 
dllexported entities in there (when using only building-pch-with-obj without 
-fmodules-codegen).

The intent is not to change the behavior of D48426 
<https://reviews.llvm.org/D48426>, but to simplify the implementation a bit by 
reducing the divergence between the two features.

>> Do either of you know if it'd be practical to move to something more similar 
>> to .pcm handling, where the pch itself is passed to the compilation, rather 
>> than homed as a side effect of compiling some other source file?
> 
> Do you mean dropping compatibility with 'cl.exe /Yc'?

Yep, that was essentially what I was wondering - since you were proposing a 
build mode/flags that would not be /Yc compatible, adding an explicit pch build 
and pch object build step - was wondering if the build system support for that 
was sufficiently available that it would be practical for users (like Chromium) 
to migrate to that kind of model and no longer need /Yc compatibility. That 
would further reduce some of the divergence between the two features (then it'd 
come down to only a "what entities do we want to home" question - the mechanics 
of homing them, building their object file, etc, would all be the same).

In D83652#2147097 <https://reviews.llvm.org/D83652#2147097>, @hans wrote:

> In D83652#2146732 <https://reviews.llvm.org/D83652#2146732>, @llunak wrote:
>
> > > Do either of you know if it'd be practical to move to something more 
> > > similar to .pcm handling, where the pch itself is passed to the 
> > > compilation, rather than homed as a side effect of compiling some other 
> > > source file?
> >
> > Do you mean dropping compatibility with 'cl.exe /Yc'?
>
>
> I don't think we can change the interface, because we want cl.exe 
> compatibility.


Fair enough - I guess the only other way to get the cl.exe behavior from the 
Clang driver using modular codegen-type functionality would be to use 4 steps:

- build PCH (with dllexport modular codegen)
- build PCH object file using PCH
- build source object using PCH
- ld -r the two objects together

But I guess the added driver complexity isn't worth the simplification inside 
Clang proper, probably. I guess we already have the "build PCH then use PCH to 
build object" part so /maybe/ it'd be feasible to extend it in this way.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D83652



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

Reply via email to