diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index 21cad1de0ced57..5c603ac6ab4728 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -199,13 +199,19 @@ void llvm::computeLTOCacheKey( [](const ImportModule &Lhs, const ImportModule &Rhs) -> bool { return Lhs.getHash() < Rhs.getHash(); }); + std::vector ImportedGUIDs; for (const ImportModule &Entry : ImportModulesVector) { auto ModHash = Entry.getHash(); Hasher.update(ArrayRef((uint8_t *)&ModHash[0], sizeof(ModHash))); AddUint64(Entry.getFunctions().size()); + + ImportedGUIDs.clear(); for (auto &Fn : Entry.getFunctions()) - AddUint64(Fn); + ImportedGUIDs.push_back(Fn); + llvm::sort(ImportedGUIDs); + for (auto &GUID : ImportedGUIDs) + AddUint64(GUID); } // Include the hash for the resolved ODR.