Index: llvm/tools/llvm-link/llvm-link.cpp =================================================================== --- llvm/tools/llvm-link/llvm-link.cpp +++ llvm/tools/llvm-link/llvm-link.cpp @@ -146,6 +146,7 @@ std::unique_ptr Buffer, LLVMContext &Context) { std::unique_ptr Result(new Module("ArchiveModule", Context)); + Linker L(*Result); StringRef ArchiveName = Buffer->getBufferIdentifier(); if (Verbose) errs() << "Reading library archive file '" << ArchiveName @@ -186,7 +187,12 @@ return nullptr; } - std::unique_ptr M = parseIR(MemBuf.get(), ParseErr, Context); + std::unique_ptr M; + if (DisableLazyLoad) + M = parseIR(MemBuf.get(), ParseErr, Context); + else + M = getLazyIRModule(MemoryBuffer::getMemBuffer(MemBuf.get(), false), + ParseErr, Context); if (!M.get()) { errs() << Argv0 << ": "; @@ -197,7 +203,7 @@ } if (Verbose) errs() << "Linking member '" << ChildName << "' of archive library.\n"; - if (Linker::linkModules(*Result, std::move(M))) + if (L.linkInModule(std::move(M))) return nullptr; } // end for each child ExitOnErr(std::move(Err));