diff options
author | Mingming Liu <mingmingl@google.com> | 2024-05-22 09:52:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-22 09:52:54 -0700 |
commit | 6262763341fcd71a2b0708cf7485f9abd1d26ba8 (patch) | |
tree | 5a574bad6a6bd1170907647932b78abc837c41ce /llvm/lib/LTO/LTO.cpp | |
parent | 271eb0686b7b0f9d2e016751399b948ccbbe7925 (diff) | |
download | llvm-6262763341fcd71a2b0708cf7485f9abd1d26ba8.zip llvm-6262763341fcd71a2b0708cf7485f9abd1d26ba8.tar.gz llvm-6262763341fcd71a2b0708cf7485f9abd1d26ba8.tar.bz2 |
[ThinLTO][Bitcode] Generate import type in bitcode (#87600)
For distributed ThinLTO, the LTO indexing step generates combined
summary for each module, and postlink pipeline reads the combined
summary which stores the information for link-time optimization.
This patch populates the 'import type' of a summary in bitcode, and
updates bitcode reader to parse the bit correctly.
Diffstat (limited to 'llvm/lib/LTO/LTO.cpp')
-rw-r--r-- | llvm/lib/LTO/LTO.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index e2754d7..7304eab 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -1400,18 +1400,20 @@ public: llvm::StringRef ModulePath, const std::string &NewModulePath) { std::map<std::string, GVSummaryMapTy> ModuleToSummariesForIndex; + GVSummaryPtrSet DeclarationSummaries; std::error_code EC; gatherImportedSummariesForModule(ModulePath, ModuleToDefinedGVSummaries, - ImportList, ModuleToSummariesForIndex); + ImportList, ModuleToSummariesForIndex, + DeclarationSummaries); raw_fd_ostream OS(NewModulePath + ".thinlto.bc", EC, sys::fs::OpenFlags::OF_None); if (EC) return errorCodeToError(EC); - // TODO: Serialize declaration bits to bitcode. - writeIndexToFile(CombinedIndex, OS, &ModuleToSummariesForIndex); + writeIndexToFile(CombinedIndex, OS, &ModuleToSummariesForIndex, + &DeclarationSummaries); if (ShouldEmitImportsFiles) { EC = EmitImportsFiles(ModulePath, NewModulePath + ".imports", |