mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-29 03:26:06 +00:00
[IR] Inroduce ModuleToSummariesForIndexTy (NFC) (#105906)
This patch introduces type alias ModuleToSummariesForIndexTy. I'm planning to change the type slightly to allow heterogeneous lookup (that is, std::map<K, V, std::less<>>) in a subsequent patch. The problem is that changing the type affects many places. Using a type alias reduces the impact.
This commit is contained in:
parent
ca53611c90
commit
dbd7ce0ccd
@ -100,10 +100,9 @@ public:
|
||||
void writeThinLinkBitcode(const Module &M, const ModuleSummaryIndex &Index,
|
||||
const ModuleHash &ModHash);
|
||||
|
||||
void writeIndex(
|
||||
const ModuleSummaryIndex *Index,
|
||||
const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex,
|
||||
const GVSummaryPtrSet *DecSummaries);
|
||||
void writeIndex(const ModuleSummaryIndex *Index,
|
||||
const ModuleToSummariesForIndexTy *ModuleToSummariesForIndex,
|
||||
const GVSummaryPtrSet *DecSummaries);
|
||||
};
|
||||
|
||||
/// Write the specified module to the specified raw output stream.
|
||||
@ -150,10 +149,10 @@ void writeThinLinkBitcodeToFile(const Module &M, raw_ostream &Out,
|
||||
/// index for a distributed backend, provide the \p ModuleToSummariesForIndex
|
||||
/// 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,
|
||||
const GVSummaryPtrSet *DecSummaries = nullptr);
|
||||
void writeIndexToFile(
|
||||
const ModuleSummaryIndex &Index, raw_ostream &Out,
|
||||
const ModuleToSummariesForIndexTy *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).
|
||||
|
@ -1291,6 +1291,10 @@ using ModulePathStringTableTy = StringMap<ModuleHash>;
|
||||
/// a particular module, and provide efficient access to their summary.
|
||||
using GVSummaryMapTy = DenseMap<GlobalValue::GUID, GlobalValueSummary *>;
|
||||
|
||||
/// Map of a module name to the GUIDs and summaries we will import from that
|
||||
/// module.
|
||||
using ModuleToSummariesForIndexTy = std::map<std::string, GVSummaryMapTy>;
|
||||
|
||||
/// A set of global value summary pointers.
|
||||
using GVSummaryPtrSet = std::unordered_set<GlobalValueSummary *>;
|
||||
|
||||
|
@ -276,7 +276,7 @@ public:
|
||||
*/
|
||||
void gatherImportedSummariesForModule(
|
||||
Module &Module, ModuleSummaryIndex &Index,
|
||||
std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex,
|
||||
ModuleToSummariesForIndexTy &ModuleToSummariesForIndex,
|
||||
GVSummaryPtrSet &DecSummaries, const lto::InputFile &File);
|
||||
|
||||
/**
|
||||
|
@ -262,13 +262,13 @@ void gatherImportedSummariesForModule(
|
||||
StringRef ModulePath,
|
||||
const DenseMap<StringRef, GVSummaryMapTy> &ModuleToDefinedGVSummaries,
|
||||
const FunctionImporter::ImportMapTy &ImportList,
|
||||
std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex,
|
||||
ModuleToSummariesForIndexTy &ModuleToSummariesForIndex,
|
||||
GVSummaryPtrSet &DecSummaries);
|
||||
|
||||
/// Emit into \p OutputFilename the files module \p ModulePath will import from.
|
||||
std::error_code EmitImportsFiles(
|
||||
StringRef ModulePath, StringRef OutputFilename,
|
||||
const std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex);
|
||||
std::error_code
|
||||
EmitImportsFiles(StringRef ModulePath, StringRef OutputFilename,
|
||||
const ModuleToSummariesForIndexTy &ModuleToSummariesForIndex);
|
||||
|
||||
/// Based on the information recorded in the summaries during global
|
||||
/// summary-based analysis:
|
||||
|
@ -432,7 +432,7 @@ class IndexBitcodeWriter : public BitcodeWriterBase {
|
||||
|
||||
/// 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;
|
||||
const ModuleToSummariesForIndexTy *ModuleToSummariesForIndex;
|
||||
|
||||
/// Map that holds the correspondence between the GUID used in the combined
|
||||
/// index and a value id generated by this class to use in references.
|
||||
@ -461,11 +461,11 @@ public:
|
||||
/// If provided, \p DecSummaries 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)
|
||||
IndexBitcodeWriter(
|
||||
BitstreamWriter &Stream, StringTableBuilder &StrtabBuilder,
|
||||
const ModuleSummaryIndex &Index,
|
||||
const GVSummaryPtrSet *DecSummaries = nullptr,
|
||||
const ModuleToSummariesForIndexTy *ModuleToSummariesForIndex = nullptr)
|
||||
: BitcodeWriterBase(Stream, StrtabBuilder), Index(Index),
|
||||
DecSummaries(DecSummaries),
|
||||
ModuleToSummariesForIndex(ModuleToSummariesForIndex) {
|
||||
@ -5102,7 +5102,7 @@ void BitcodeWriter::writeModule(const Module &M,
|
||||
|
||||
void BitcodeWriter::writeIndex(
|
||||
const ModuleSummaryIndex *Index,
|
||||
const std::map<std::string, GVSummaryMapTy> *ModuleToSummariesForIndex,
|
||||
const ModuleToSummariesForIndexTy *ModuleToSummariesForIndex,
|
||||
const GVSummaryPtrSet *DecSummaries) {
|
||||
IndexBitcodeWriter IndexWriter(*Stream, StrtabBuilder, *Index, DecSummaries,
|
||||
ModuleToSummariesForIndex);
|
||||
@ -5159,7 +5159,7 @@ 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 ModuleToSummariesForIndexTy *ModuleToSummariesForIndex,
|
||||
const GVSummaryPtrSet *DecSummaries) {
|
||||
SmallVector<char, 0> Buffer;
|
||||
Buffer.reserve(256 * 1024);
|
||||
|
@ -1399,7 +1399,7 @@ public:
|
||||
Error emitFiles(const FunctionImporter::ImportMapTy &ImportList,
|
||||
llvm::StringRef ModulePath,
|
||||
const std::string &NewModulePath) {
|
||||
std::map<std::string, GVSummaryMapTy> ModuleToSummariesForIndex;
|
||||
ModuleToSummariesForIndexTy ModuleToSummariesForIndex;
|
||||
GVSummaryPtrSet DeclarationSummaries;
|
||||
|
||||
std::error_code EC;
|
||||
|
@ -762,7 +762,7 @@ void ThinLTOCodeGenerator::crossModuleImport(Module &TheModule,
|
||||
*/
|
||||
void ThinLTOCodeGenerator::gatherImportedSummariesForModule(
|
||||
Module &TheModule, ModuleSummaryIndex &Index,
|
||||
std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex,
|
||||
ModuleToSummariesForIndexTy &ModuleToSummariesForIndex,
|
||||
GVSummaryPtrSet &DecSummaries, const lto::InputFile &File) {
|
||||
auto ModuleCount = Index.modulePaths().size();
|
||||
auto ModuleIdentifier = TheModule.getModuleIdentifier();
|
||||
@ -833,7 +833,7 @@ void ThinLTOCodeGenerator::emitImports(Module &TheModule, StringRef OutputName,
|
||||
// the set of keys in `ModuleToSummariesForIndex` should be a superset of keys
|
||||
// in `DecSummaries`, so no need to use `DecSummaries` in `EmitImportFiles`.
|
||||
GVSummaryPtrSet DecSummaries;
|
||||
std::map<std::string, GVSummaryMapTy> ModuleToSummariesForIndex;
|
||||
ModuleToSummariesForIndexTy ModuleToSummariesForIndex;
|
||||
llvm::gatherImportedSummariesForModule(
|
||||
ModuleIdentifier, ModuleToDefinedGVSummaries,
|
||||
ImportLists[ModuleIdentifier], ModuleToSummariesForIndex, DecSummaries);
|
||||
|
@ -1485,7 +1485,7 @@ void llvm::gatherImportedSummariesForModule(
|
||||
StringRef ModulePath,
|
||||
const DenseMap<StringRef, GVSummaryMapTy> &ModuleToDefinedGVSummaries,
|
||||
const FunctionImporter::ImportMapTy &ImportList,
|
||||
std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex,
|
||||
ModuleToSummariesForIndexTy &ModuleToSummariesForIndex,
|
||||
GVSummaryPtrSet &DecSummaries) {
|
||||
// Include all summaries from the importing module.
|
||||
ModuleToSummariesForIndex[std::string(ModulePath)] =
|
||||
@ -1511,7 +1511,7 @@ void llvm::gatherImportedSummariesForModule(
|
||||
/// Emit the files \p ModulePath will import from into \p OutputFilename.
|
||||
std::error_code llvm::EmitImportsFiles(
|
||||
StringRef ModulePath, StringRef OutputFilename,
|
||||
const std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex) {
|
||||
const ModuleToSummariesForIndexTy &ModuleToSummariesForIndex) {
|
||||
std::error_code EC;
|
||||
raw_fd_ostream ImportsOS(OutputFilename, EC, sys::fs::OpenFlags::OF_Text);
|
||||
if (EC)
|
||||
|
@ -691,7 +691,7 @@ private:
|
||||
|
||||
// Build a map of module to the GUIDs and summary objects that should
|
||||
// be written to its index.
|
||||
std::map<std::string, GVSummaryMapTy> ModuleToSummariesForIndex;
|
||||
ModuleToSummariesForIndexTy ModuleToSummariesForIndex;
|
||||
GVSummaryPtrSet DecSummaries;
|
||||
ThinGenerator.gatherImportedSummariesForModule(
|
||||
*TheModule, *Index, ModuleToSummariesForIndex, DecSummaries, *Input);
|
||||
|
Loading…
x
Reference in New Issue
Block a user