================ @@ -174,51 +174,33 @@ std::string llvm::computeLTOCacheKey( for (auto GUID : ExportsGUID) Hasher.update(ArrayRef<uint8_t>((uint8_t *)&GUID, sizeof(GUID))); - // Include the hash for every module we import functions from. The set of - // imported symbols for each module may affect code generation and is - // sensitive to link order, so include that as well. - using ImportMapIteratorTy = - FunctionImporter::ImportMapTy::ImportMapTyImpl::const_iterator; - struct ImportModule { - ImportMapIteratorTy ModIt; - const ModuleSummaryIndex::ModuleInfo *ModInfo; - - StringRef getIdentifier() const { return ModIt->getFirst(); } - const FunctionImporter::FunctionsToImportTy &getFunctions() const { - return ModIt->second; - } - - const ModuleHash &getHash() const { return ModInfo->second; } - }; - - std::vector<ImportModule> ImportModulesVector; - ImportModulesVector.reserve(ImportList.getImportMap().size()); - - for (ImportMapIteratorTy It = ImportList.getImportMap().begin(); - It != ImportList.getImportMap().end(); ++It) { - ImportModulesVector.push_back({It, Index.getModule(It->getFirst())}); - } // Order using module hash, to be both independent of module name and // module order. - llvm::sort(ImportModulesVector, - [](const ImportModule &Lhs, const ImportModule &Rhs) -> bool { - return Lhs.getHash() < Rhs.getHash(); - }); - std::vector<std::pair<uint64_t, uint8_t>> ImportedGUIDs; - for (const ImportModule &Entry : ImportModulesVector) { - auto ModHash = Entry.getHash(); - Hasher.update(ArrayRef<uint8_t>((uint8_t *)&ModHash[0], sizeof(ModHash))); - - AddUint64(Entry.getFunctions().size()); - - ImportedGUIDs.clear(); - for (auto &[Fn, ImportType] : Entry.getFunctions()) - ImportedGUIDs.push_back(std::make_pair(Fn, ImportType)); - llvm::sort(ImportedGUIDs); - for (auto &[GUID, Type] : ImportedGUIDs) { - AddUint64(GUID); - AddUint8(Type); + auto Comp = [&](const std::pair<StringRef, GlobalValue::GUID> &L, + const std::pair<StringRef, GlobalValue::GUID> &R) { + return std::make_pair(Index.getModule(L.first)->second, L.second) < ---------------- kazutakahirata wrote:
Yes, that's true unfortunately. If the performance ever becomes a problem here, we can do all the hash lookups before sorting. https://github.com/llvm/llvm-project/pull/106772 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits