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