================ @@ -251,32 +255,50 @@ bool BackendConsumer::LinkInModules(llvm::Module *M, bool ShouldLinkFiles) { } CurLinkModule = LM.Module.get(); - - // TODO: If CloneModule() is updated to support cloning of unmaterialized - // modules, we can remove this bool Err; - if (Error E = CurLinkModule->materializeAll()) - return false; // Create a Clone to move to the linker, which preserves the original // linking modules, allowing them to be linked again in the future - // TODO: Add a ShouldCleanup option to make Cloning optional. When - // set, we can pass the original modules to the linker for cleanup - std::unique_ptr<llvm::Module> Clone = llvm::CloneModule(*LM.Module); + if (ClRelinkBuiltinBitcodePostop) { ---------------- yxsamliu wrote:
you could define a lambda `auto DoLink = [&](auto& Mod) { if (LM.Internalize) { Err = Linker::linkModules( *M, std::move(Mod), LM.LinkFlags, [](llvm::Module &M, const llvm::StringSet<> &GVS) { internalizeModule(M, [&GVS](const llvm::GlobalValue &GV) { return !GV.hasName() || (GVS.count(GV.getName()) == 0); }); }); } else Err = Linker::linkModules(*M, std::move(Mod), LM.LinkFlags); };` then call this lambda https://github.com/llvm/llvm-project/pull/72478 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits