sylvestre.ledru created this revision. sylvestre.ledru added reviewers: yaxunl, Anastasia. Herald added a project: clang. Herald added a subscriber: cfe-commits.
This patch have been applied to Debian packages for a few months without any regression. Patch by Rebecca N. Palmer Repository: rC Clang https://reviews.llvm.org/D60379 Files: lib/Serialization/ASTWriter.cpp Index: lib/Serialization/ASTWriter.cpp =================================================================== --- lib/Serialization/ASTWriter.cpp +++ lib/Serialization/ASTWriter.cpp @@ -4279,9 +4279,13 @@ return; RecordData Record; + // Sort to allow reproducible .pch files - https://bugs.debian.org/877359 + std::map<TypeID, std::set<std::string>> sortedOpenCLTypeExtMap; for (const auto &I : SemaRef.OpenCLTypeExtMap) { - Record.push_back( - static_cast<unsigned>(getTypeID(I.first->getCanonicalTypeInternal()))); + sortedOpenCLTypeExtMap[getTypeID(I.first->getCanonicalTypeInternal())]=I.second; + } + for (const auto &I : sortedOpenCLTypeExtMap) { + Record.push_back(static_cast<unsigned>(I.first)); Record.push_back(I.second.size()); for (auto Ext : I.second) AddString(Ext, Record); @@ -4294,8 +4298,12 @@ return; RecordData Record; + std::map<DeclID, std::set<std::string>> sortedOpenCLDeclExtMap; for (const auto &I : SemaRef.OpenCLDeclExtMap) { - Record.push_back(getDeclID(I.first)); + sortedOpenCLDeclExtMap[getDeclID(I.first)]=I.second; + } + for (const auto &I : sortedOpenCLDeclExtMap) { + Record.push_back(I.first); Record.push_back(static_cast<unsigned>(I.second.size())); for (auto Ext : I.second) AddString(Ext, Record);
Index: lib/Serialization/ASTWriter.cpp =================================================================== --- lib/Serialization/ASTWriter.cpp +++ lib/Serialization/ASTWriter.cpp @@ -4279,9 +4279,13 @@ return; RecordData Record; + // Sort to allow reproducible .pch files - https://bugs.debian.org/877359 + std::map<TypeID, std::set<std::string>> sortedOpenCLTypeExtMap; for (const auto &I : SemaRef.OpenCLTypeExtMap) { - Record.push_back( - static_cast<unsigned>(getTypeID(I.first->getCanonicalTypeInternal()))); + sortedOpenCLTypeExtMap[getTypeID(I.first->getCanonicalTypeInternal())]=I.second; + } + for (const auto &I : sortedOpenCLTypeExtMap) { + Record.push_back(static_cast<unsigned>(I.first)); Record.push_back(I.second.size()); for (auto Ext : I.second) AddString(Ext, Record); @@ -4294,8 +4298,12 @@ return; RecordData Record; + std::map<DeclID, std::set<std::string>> sortedOpenCLDeclExtMap; for (const auto &I : SemaRef.OpenCLDeclExtMap) { - Record.push_back(getDeclID(I.first)); + sortedOpenCLDeclExtMap[getDeclID(I.first)]=I.second; + } + for (const auto &I : sortedOpenCLDeclExtMap) { + Record.push_back(I.first); Record.push_back(static_cast<unsigned>(I.second.size())); for (auto Ext : I.second) AddString(Ext, Record);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits