From: Richard Howell Date: Fri, 9 Sep 2022 17:49:44 +0000 (-0700) Subject: [clang] sort additional module maps when serializing X-Git-Tag: upstream/17.0.6~33760 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3c1b42347b3a0666c93948ade2f420a20e060c1a;p=platform%2Fupstream%2Fllvm.git [clang] sort additional module maps when serializing Sort additional module maps when serializing pcm files. This ensures the `MODULE_MAP_FILE` record is deterministic across repeated builds. Reviewed By: benlangmuir Differential Revision: https://reviews.llvm.org/D133611 --- diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 1e835a4..838c6e3 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -1282,7 +1282,12 @@ void ASTWriter::WriteControlBlock(Preprocessor &PP, ASTContext &Context, if (auto *AdditionalModMaps = Map.getAdditionalModuleMapFiles(WritingModule)) { Record.push_back(AdditionalModMaps->size()); - for (const FileEntry *F : *AdditionalModMaps) + SmallVector ModMaps(AdditionalModMaps->begin(), + AdditionalModMaps->end()); + llvm::sort(ModMaps, [](const FileEntry *A, const FileEntry *B) { + return A->getName() < B->getName(); + }); + for (const FileEntry *F : ModMaps) AddPath(F->getName(), Record); } else { Record.push_back(0);