rjmccall added inline comments.

================
Comment at: clang/lib/CodeGen/CodeGenModule.h:1482
+
+  struct KeepLazyEmiitedSymRAII {
+    std::unique_ptr<CodeGenModule> OldBuilder;
----------------
rjmccall wrote:
> junaire wrote:
> > rjmccall wrote:
> > > I think a RAII object is an odd way to express this API; there's not 
> > > really a natural reason you would scope this.  It would be better to just 
> > > have a method on `CodeGenModule` that steals the internal lazy-emission 
> > > state from a different instance.
> > I don't have a better way to do this in mind, We need to restore the states 
> > after resetting the `Builder` right? So I guess RAII should be fine? Can 
> > you please provide some hints about how to do this more elegantly? Thx!
> I don't know what you mean.  You're not restoring any old state, you're 
> moving state into the new CGM.  The whole thing is an imperative operation, 
> it's just being done in a destructor for no particular reason.
> 
> ```
> std::unique_ptr<CodeGenModule> newBuilder(new CodeGenModule(...));
> Builder->moveLazyEmissionStateInto(newBuilder.get());
> Builder = newBuilder;
> ```
I liked all the assertions you had here.  It was good to validate that we 
weren't overwriting useful state in the new builder.


================
Comment at: clang/lib/CodeGen/ModuleBuilder.cpp:163
 
       for (auto &&Lib : CodeGenOpts.DependentLibraries)
         Builder->AddDependentLib(Lib);
----------------
junaire wrote:
> I left I may doing something wrong here, after invoking `Initialize` we set 
> `Builder = std::move(NewBuilder);`, so these lines are useless now? I'm quite 
> confused though... @rjmccall 
Ah, I see.  Probably the most reasonable thing would be to do something like 
this in `StartModule`:

```
  auto OldBuilder = std::move(Builder);
  Initialize(Ctx);
  if (OldBuilder) {
    OldBuilder->moveLazyEmissionStateInto(*Builder);
  }
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D126781

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

Reply via email to