https://github.com/minglotus-6 updated https://github.com/llvm/llvm-project/pull/87600
>From 001a785f664e3a16e61d1e350ea060b829f1856c Mon Sep 17 00:00:00 2001 From: mingmingl <mingmi...@google.com> Date: Mon, 13 May 2024 20:51:25 -0700 Subject: [PATCH 1/3] update this patch as the second one --- llvm/include/llvm/Bitcode/BitcodeWriter.h | 9 +++-- .../llvm/LTO/legacy/ThinLTOCodeGenerator.h | 5 ++- .../llvm/Transforms/IPO/FunctionImport.h | 3 +- llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 38 +++++++++++++++---- llvm/lib/LTO/LTO.cpp | 7 +++- llvm/lib/LTO/ThinLTOCodeGenerator.cpp | 11 ++++-- llvm/lib/Transforms/IPO/FunctionImport.cpp | 5 ++- .../ThinLTO/X86/import_callee_declaration.ll | 13 +++---- llvm/tools/llvm-lto/llvm-lto.cpp | 5 ++- 9 files changed, 66 insertions(+), 30 deletions(-) diff --git a/llvm/include/llvm/Bitcode/BitcodeWriter.h b/llvm/include/llvm/Bitcode/BitcodeWriter.h index 248d33f4502ef..a343f0e057631 100644 --- a/llvm/include/llvm/Bitcode/BitcodeWriter.h +++ b/llvm/include/llvm/Bitcode/BitcodeWriter.h @@ -102,7 +102,8 @@ class raw_ostream; void writeIndex( const ModuleSummaryIndex *Index, - const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex); + const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex, + const GVSummaryPtrSet *DecSummaries); }; /// Write the specified module to the specified raw output stream. @@ -147,10 +148,12 @@ class raw_ostream; /// where it will be written in a new bitcode block. This is used when /// writing the combined index file for ThinLTO. When writing a subset of the /// index for a distributed backend, provide the \p ModuleToSummariesForIndex - /// map. + /// map. \p DecSummaries specifies the set of summaries for which the + /// corresponding value should be imported as a declaration (prototype). void writeIndexToFile(const ModuleSummaryIndex &Index, raw_ostream &Out, const std::map<std::string, GVSummaryMapTy> - *ModuleToSummariesForIndex = nullptr); + *ModuleToSummariesForIndex = nullptr, + const GVSummaryPtrSet *DecSummaries = nullptr); /// If EmbedBitcode is set, save a copy of the llvm IR as data in the /// __LLVM,__bitcode section (.llvmbc on non-MacOS). diff --git a/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h b/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h index c450acda82ad0..f1337e82485c9 100644 --- a/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h +++ b/llvm/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h @@ -271,12 +271,13 @@ class ThinLTOCodeGenerator { const lto::InputFile &File); /** - * Compute the list of summaries needed for importing into module. + * Compute the list of summaries and the subset of declaration summaries + * needed for importing into module. */ void gatherImportedSummariesForModule( Module &Module, ModuleSummaryIndex &Index, std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex, - const lto::InputFile &File); + GVSummaryPtrSet &DecSummaries, const lto::InputFile &File); /** * Perform internalization. Index is updated to reflect linkage changes. diff --git a/llvm/include/llvm/Transforms/IPO/FunctionImport.h b/llvm/include/llvm/Transforms/IPO/FunctionImport.h index 024bba8105b89..f8b98d5f81770 100644 --- a/llvm/include/llvm/Transforms/IPO/FunctionImport.h +++ b/llvm/include/llvm/Transforms/IPO/FunctionImport.h @@ -216,7 +216,8 @@ void gatherImportedSummariesForModule( StringRef ModulePath, const DenseMap<StringRef, GVSummaryMapTy> &ModuleToDefinedGVSummaries, const FunctionImporter::ImportMapTy &ImportList, - std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex); + std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex, + GVSummaryPtrSet &DecSummaries); /// Emit into \p OutputFilename the files module \p ModulePath will import from. std::error_code EmitImportsFiles( diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 6d01e3b4d8218..7b89424194f9b 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -428,6 +428,11 @@ class IndexBitcodeWriter : public BitcodeWriterBase { /// The combined index to write to bitcode. const ModuleSummaryIndex &Index; + /// When writing combined summaries, provides the set of global value + /// summaries for which the value (function, function alias, etc) should be + /// imported as a declaration. + const GVSummaryPtrSet *DecSummaries = nullptr; + /// When writing a subset of the index for distributed backends, client /// provides a map of modules to the corresponding GUIDs/summaries to write. const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex; @@ -452,11 +457,16 @@ class IndexBitcodeWriter : public BitcodeWriterBase { /// Constructs a IndexBitcodeWriter object for the given combined index, /// writing to the provided \p Buffer. When writing a subset of the index /// for a distributed backend, provide a \p ModuleToSummariesForIndex map. + /// If provided, \p ModuleToDecSummaries specifies the set of summaries for + /// which the corresponding functions or aliased functions should be imported + /// as a declaration (but not definition) for each module. IndexBitcodeWriter(BitstreamWriter &Stream, StringTableBuilder &StrtabBuilder, const ModuleSummaryIndex &Index, + const GVSummaryPtrSet *DecSummaries = nullptr, const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex = nullptr) : BitcodeWriterBase(Stream, StrtabBuilder), Index(Index), + DecSummaries(DecSummaries), ModuleToSummariesForIndex(ModuleToSummariesForIndex) { // Assign unique value ids to all summaries to be written, for use // in writing out the call graph edges. Save the mapping from GUID @@ -1202,7 +1212,8 @@ static uint64_t getEncodedFFlags(FunctionSummary::FFlags Flags) { // Decode the flags for GlobalValue in the summary. See getDecodedGVSummaryFlags // in BitcodeReader.cpp. -static uint64_t getEncodedGVSummaryFlags(GlobalValueSummary::GVFlags Flags) { +static uint64_t getEncodedGVSummaryFlags(GlobalValueSummary::GVFlags Flags, + bool ImportAsDecl = false) { uint64_t RawFlags = 0; RawFlags |= Flags.NotEligibleToImport; // bool @@ -1217,7 +1228,8 @@ static uint64_t getEncodedGVSummaryFlags(GlobalValueSummary::GVFlags Flags) { RawFlags |= (Flags.Visibility << 8); // 2 bits - RawFlags |= (Flags.ImportType << 10); // 1 bit + unsigned ImportType = Flags.ImportType | ImportAsDecl; + RawFlags |= (ImportType << 10); // 1 bit return RawFlags; } @@ -4543,6 +4555,12 @@ void IndexBitcodeWriter::writeCombinedGlobalValueSummary() { Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); unsigned AllocAbbrev = Stream.EmitAbbrev(std::move(Abbv)); + auto shouldImportValueAsDecl = [&](GlobalValueSummary *GVS) -> bool { + if (DecSummaries == nullptr) + return false; + return DecSummaries->contains(GVS); + }; + // The aliases are emitted as a post-pass, and will point to the value // id of the aliasee. Save them in a vector for post-processing. SmallVector<AliasSummary *, 64> Aliases; @@ -4653,7 +4671,8 @@ void IndexBitcodeWriter::writeCombinedGlobalValueSummary() { NameVals.push_back(*ValueId); assert(ModuleIdMap.count(FS->modulePath())); NameVals.push_back(ModuleIdMap[FS->modulePath()]); - NameVals.push_back(getEncodedGVSummaryFlags(FS->flags())); + NameVals.push_back( + getEncodedGVSummaryFlags(FS->flags(), shouldImportValueAsDecl(FS))); NameVals.push_back(FS->instCount()); NameVals.push_back(getEncodedFFlags(FS->fflags())); NameVals.push_back(FS->entryCount()); @@ -4702,7 +4721,8 @@ void IndexBitcodeWriter::writeCombinedGlobalValueSummary() { NameVals.push_back(AliasValueId); assert(ModuleIdMap.count(AS->modulePath())); NameVals.push_back(ModuleIdMap[AS->modulePath()]); - NameVals.push_back(getEncodedGVSummaryFlags(AS->flags())); + NameVals.push_back( + getEncodedGVSummaryFlags(AS->flags(), shouldImportValueAsDecl(AS))); auto AliaseeValueId = SummaryToValueIdMap[&AS->getAliasee()]; assert(AliaseeValueId); NameVals.push_back(AliaseeValueId); @@ -5036,8 +5056,9 @@ void BitcodeWriter::writeModule(const Module &M, void BitcodeWriter::writeIndex( const ModuleSummaryIndex *Index, - const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex) { - IndexBitcodeWriter IndexWriter(*Stream, StrtabBuilder, *Index, + const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex, + const GVSummaryPtrSet *DecSummaries) { + IndexBitcodeWriter IndexWriter(*Stream, StrtabBuilder, *Index, DecSummaries, ModuleToSummariesForIndex); IndexWriter.write(); } @@ -5090,12 +5111,13 @@ void IndexBitcodeWriter::write() { // index for a distributed backend, provide a \p ModuleToSummariesForIndex map. void llvm::writeIndexToFile( const ModuleSummaryIndex &Index, raw_ostream &Out, - const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex) { + const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex, + const GVSummaryPtrSet *DecSummaries) { SmallVector<char, 0> Buffer; Buffer.reserve(256 * 1024); BitcodeWriter Writer(Buffer); - Writer.writeIndex(&Index, ModuleToSummariesForIndex); + Writer.writeIndex(&Index, ModuleToSummariesForIndex, DecSummaries); Writer.writeStrtab(); Out.write((char *)&Buffer.front(), Buffer.size()); diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index 2bdfd03580145..79849f7a4ce40 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -1399,10 +1399,12 @@ class lto::ThinBackendProc { 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); @@ -1410,7 +1412,8 @@ class lto::ThinBackendProc { 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", diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp index 8f517eb50dc76..dc2d73b0130b5 100644 --- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp @@ -766,7 +766,7 @@ void ThinLTOCodeGenerator::crossModuleImport(Module &TheModule, void ThinLTOCodeGenerator::gatherImportedSummariesForModule( Module &TheModule, ModuleSummaryIndex &Index, std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex, - const lto::InputFile &File) { + GVSummaryPtrSet &DecSummaries, const lto::InputFile &File) { auto ModuleCount = Index.modulePaths().size(); auto ModuleIdentifier = TheModule.getModuleIdentifier(); @@ -796,7 +796,7 @@ void ThinLTOCodeGenerator::gatherImportedSummariesForModule( llvm::gatherImportedSummariesForModule( ModuleIdentifier, ModuleToDefinedGVSummaries, - ImportLists[ModuleIdentifier], ModuleToSummariesForIndex); + ImportLists[ModuleIdentifier], ModuleToSummariesForIndex, DecSummaries); } /** @@ -832,10 +832,15 @@ void ThinLTOCodeGenerator::emitImports(Module &TheModule, StringRef OutputName, IsPrevailing(PrevailingCopy), ImportLists, ExportLists); + // 'EmitImportsFiles' emits the list of modules from which to import from, and + // the set of keys in `ModuleToSummariesForIndex` should be a superset of keys + // in `ModuleToDecSummaries`, so no need to use `ModuleToDecSummaries` in + // `EmitImportFiles`. + GVSummaryPtrSet DecSummaries; std::map<std::string, GVSummaryMapTy> ModuleToSummariesForIndex; llvm::gatherImportedSummariesForModule( ModuleIdentifier, ModuleToDefinedGVSummaries, - ImportLists[ModuleIdentifier], ModuleToSummariesForIndex); + ImportLists[ModuleIdentifier], ModuleToSummariesForIndex, DecSummaries); std::error_code EC; if ((EC = EmitImportsFiles(ModuleIdentifier, OutputName, diff --git a/llvm/lib/Transforms/IPO/FunctionImport.cpp b/llvm/lib/Transforms/IPO/FunctionImport.cpp index e99fb554cd654..548b7c8bc4303 100644 --- a/llvm/lib/Transforms/IPO/FunctionImport.cpp +++ b/llvm/lib/Transforms/IPO/FunctionImport.cpp @@ -1436,7 +1436,8 @@ void llvm::gatherImportedSummariesForModule( StringRef ModulePath, const DenseMap<StringRef, GVSummaryMapTy> &ModuleToDefinedGVSummaries, const FunctionImporter::ImportMapTy &ImportList, - std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex) { + std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex, + GVSummaryPtrSet &DecSummaries) { // Include all summaries from the importing module. ModuleToSummariesForIndex[std::string(ModulePath)] = ModuleToDefinedGVSummaries.lookup(ModulePath); @@ -1451,7 +1452,7 @@ void llvm::gatherImportedSummariesForModule( assert(DS != DefinedGVSummaries.end() && "Expected a defined summary for imported global value"); if (Type == GlobalValueSummary::Declaration) - continue; + DecSummaries.insert(DS->second); SummariesForIndex[GUID] = DS->second; } diff --git a/llvm/test/ThinLTO/X86/import_callee_declaration.ll b/llvm/test/ThinLTO/X86/import_callee_declaration.ll index b4ce10270e026..a9b30036fc435 100644 --- a/llvm/test/ThinLTO/X86/import_callee_declaration.ll +++ b/llvm/test/ThinLTO/X86/import_callee_declaration.ll @@ -48,20 +48,19 @@ ; First disassemble per-module summary and find out the GUID for {large_func, large_indirect_callee}. ; ; RUN: llvm-dis lib.bc -o - | FileCheck %s --check-prefix=LIB-DIS +; LIB-DIS: [[LIBMOD:\^[0-9]+]] = module: (path: "lib.bc", hash: (0, 0, 0, 0, 0)) ; LIB-DIS: [[LARGEFUNC:\^[0-9]+]] = gv: (name: "large_func", summaries: {{.*}}) ; guid = 2418497564662708935 ; LIB-DIS: [[LARGEINDIRECT:\^[0-9]+]] = gv: (name: "large_indirect_callee", summaries: {{.*}}) ; guid = 14343440786664691134 -; LIB-DIS: [[LARGEINDIRECTALIAS:\^[0-9]+]] = gv: (name: "large_indirect_callee_alias", summaries: {{.*}}, aliasee: [[LARGEINDIRECT]] ; -; Secondly disassemble main's combined summary and test that large callees are -; not imported as declarations yet. -; TODO: Serialize declaration bit and test declaration bits are correctly set. +; Secondly disassemble main's combined summary and verify the import type of +; these two GUIDs are declaration. ; ; RUN: llvm-dis main.bc.thinlto.bc -o - | FileCheck %s --check-prefix=MAIN-DIS ; ; MAIN-DIS: [[LIBMOD:\^[0-9]+]] = module: (path: "lib.bc", hash: (0, 0, 0, 0, 0)) -; MAIN-DIS-NOT: [[LARGEFUNC:\^[0-9]+]] = gv: (guid: 2418497564662708935, summaries: (function: (module: [[LIBMOD]], flags: ({{.*}} importType: declaration), insts: 8, {{.*}}))) -; MAIN-DIS-NOT: [[LARGEINDIRECT:\^[0-9]+]] = gv: (guid: 14343440786664691134, summaries: (function: (module: [[LIBMOD]], flags: ({{.*}} importType: declaration), insts: 8, {{.*}}))) -; MAIN-DIS-NOT: [[LARGEINDIRECTALIAS:\^[0-9]+]] = gv: (guid: 16730173943625350469, summaries: (alias: (module: [[LIBMOD]], flags: ({{.*}} importType: declaration) +; MAIN-DIS: [[LARGEFUNC:\^[0-9]+]] = gv: (guid: 2418497564662708935, summaries: (function: (module: [[LIBMOD]], flags: ({{.*}} importType: declaration), insts: 8, {{.*}}))) +; MAIN-DIS: [[LARGEINDIRECT:\^[0-9]+]] = gv: (guid: 14343440786664691134, summaries: (function: (module: [[LIBMOD]], flags: ({{.*}} importType: declaration), insts: 8, {{.*}}))) +; MAIN-DIS: [[LARGEINDIRECTALIAS:\^[0-9]+]] = gv: (guid: 16730173943625350469, summaries: (alias: (module: [[LIBMOD]], flags: ({{.*}} importType: declaration), aliasee: [[LARGEINDIRECT]]))) ; Run in-process ThinLTO and tests that ; 1. `callee` remains internalized even if the symbols of its callers diff --git a/llvm/tools/llvm-lto/llvm-lto.cpp b/llvm/tools/llvm-lto/llvm-lto.cpp index f310097eec634..8218bd5a74ea3 100644 --- a/llvm/tools/llvm-lto/llvm-lto.cpp +++ b/llvm/tools/llvm-lto/llvm-lto.cpp @@ -692,8 +692,9 @@ class ThinLTOProcessing { // Build a map of module to the GUIDs and summary objects that should // be written to its index. std::map<std::string, GVSummaryMapTy> ModuleToSummariesForIndex; + GVSummaryPtrSet DecSummaries; ThinGenerator.gatherImportedSummariesForModule( - *TheModule, *Index, ModuleToSummariesForIndex, *Input); + *TheModule, *Index, ModuleToSummariesForIndex, DecSummaries, *Input); std::string OutputName = OutputFilename; if (OutputName.empty()) { @@ -703,7 +704,7 @@ class ThinLTOProcessing { std::error_code EC; raw_fd_ostream OS(OutputName, EC, sys::fs::OpenFlags::OF_None); error(EC, "error opening the file '" + OutputName + "'"); - writeIndexToFile(*Index, OS, &ModuleToSummariesForIndex); + writeIndexToFile(*Index, OS, &ModuleToSummariesForIndex, &DecSummaries); } } >From 321f6aabb60ff057693a65976bba6c77592bd825 Mon Sep 17 00:00:00 2001 From: mingmingl <mingmi...@google.com> Date: Mon, 13 May 2024 21:20:22 -0700 Subject: [PATCH 2/3] update stale comment and use 'DAG' for check lines --- llvm/lib/LTO/ThinLTOCodeGenerator.cpp | 3 +-- .../test/ThinLTO/X86/import_callee_declaration.ll | 15 ++++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp index dc2d73b0130b5..b054b42b63777 100644 --- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp @@ -834,8 +834,7 @@ void ThinLTOCodeGenerator::emitImports(Module &TheModule, StringRef OutputName, // 'EmitImportsFiles' emits the list of modules from which to import from, and // the set of keys in `ModuleToSummariesForIndex` should be a superset of keys - // in `ModuleToDecSummaries`, so no need to use `ModuleToDecSummaries` in - // `EmitImportFiles`. + // in `DecSummaries`, so no need to use `DecSummaries` in `EmitImportFiles`. GVSummaryPtrSet DecSummaries; std::map<std::string, GVSummaryMapTy> ModuleToSummariesForIndex; llvm::gatherImportedSummariesForModule( diff --git a/llvm/test/ThinLTO/X86/import_callee_declaration.ll b/llvm/test/ThinLTO/X86/import_callee_declaration.ll index a9b30036fc435..3ff5125e37227 100644 --- a/llvm/test/ThinLTO/X86/import_callee_declaration.ll +++ b/llvm/test/ThinLTO/X86/import_callee_declaration.ll @@ -51,6 +51,7 @@ ; LIB-DIS: [[LIBMOD:\^[0-9]+]] = module: (path: "lib.bc", hash: (0, 0, 0, 0, 0)) ; LIB-DIS: [[LARGEFUNC:\^[0-9]+]] = gv: (name: "large_func", summaries: {{.*}}) ; guid = 2418497564662708935 ; LIB-DIS: [[LARGEINDIRECT:\^[0-9]+]] = gv: (name: "large_indirect_callee", summaries: {{.*}}) ; guid = 14343440786664691134 +; LIB-DIS: [[LARGEINDIRECTALIAS:\^[0-9]+]] = gv: (name: "large_indirect_callee_alias", summaries: {{.*}}, aliasee: [[LARGEINDIRECT]] ; ; Secondly disassemble main's combined summary and verify the import type of ; these two GUIDs are declaration. @@ -82,13 +83,13 @@ ; RUN: -r=lib.bc,large_indirect_callee_alias,px \ ; RUN: -r=lib.bc,calleeAddrs,px -o in-process main.bc lib.bc 2>&1 | FileCheck %s --check-prefix=IMPORTDUMP -; IMPORTDUMP: Not importing function 11825436545918268459 callee from lib.cc -; IMPORTDUMP: Is importing function declaration 14343440786664691134 large_indirect_callee from lib.cc -; IMPORTDUMP: Is importing function definition 13568239288960714650 small_indirect_callee from lib.cc -; IMPORTDUMP: Is importing function definition 6976996067367342685 small_func from lib.cc -; IMPORTDUMP: Is importing function declaration 2418497564662708935 large_func from lib.cc -; IMPORTDUMP: Not importing global 7680325410415171624 calleeAddrs from lib.cc -; IMPORTDUMP: Is importing alias declaration 16730173943625350469 large_indirect_callee_alias from lib.cc +; IMPORTDUMP-DAG: Not importing function 11825436545918268459 callee from lib.cc +; IMPORTDUMP-DAG: Is importing function declaration 14343440786664691134 large_indirect_callee from lib.cc +; IMPORTDUMP-DAG: Is importing function definition 13568239288960714650 small_indirect_callee from lib.cc +; IMPORTDUMP-DAG: Is importing function definition 6976996067367342685 small_func from lib.cc +; IMPORTDUMP-DAG: Is importing function declaration 2418497564662708935 large_func from lib.cc +; IMPORTDUMP-DAG: Not importing global 7680325410415171624 calleeAddrs from lib.cc +; IMPORTDUMP-DAG: Is importing alias declaration 16730173943625350469 large_indirect_callee_alias from lib.cc ; RUN: llvm-dis in-process.1.3.import.bc -o - | FileCheck %s --check-prefix=IMPORT >From 31d9bd23366cf34b5d9161c276ab91090ba0b95a Mon Sep 17 00:00:00 2001 From: mingmingl <mingmi...@google.com> Date: Wed, 15 May 2024 12:16:42 -0700 Subject: [PATCH 3/3] add comment for 'DecSummaries' parameter in FunctionImport.h --- llvm/include/llvm/Transforms/IPO/FunctionImport.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/llvm/include/llvm/Transforms/IPO/FunctionImport.h b/llvm/include/llvm/Transforms/IPO/FunctionImport.h index f8b98d5f81770..72a0823c6627b 100644 --- a/llvm/include/llvm/Transforms/IPO/FunctionImport.h +++ b/llvm/include/llvm/Transforms/IPO/FunctionImport.h @@ -212,6 +212,9 @@ bool convertToDeclaration(GlobalValue &GV); /// \p ModuleToSummariesForIndex will be populated with the needed summaries /// from each required module path. Use a std::map instead of StringMap to get /// stable order for bitcode emission. +/// +/// \p DecSummaries will be popluated with the subset of of summary pointers +/// that have 'declaration' import type among all summaries the module need. void gatherImportedSummariesForModule( StringRef ModulePath, const DenseMap<StringRef, GVSummaryMapTy> &ModuleToDefinedGVSummaries, _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits