reproducible-pch
authorLLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org>
Wed, 7 Aug 2019 13:11:36 +0000 (14:11 +0100)
committerGianfranco Costamagna <locutusofborg@debian.org>
Wed, 7 Aug 2019 13:11:36 +0000 (14:11 +0100)
Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
Bug-Debian: https://bugs.debian.org/877359
Forwarded: no

Gbp-Pq: Name reproducible-pch.diff

clang/lib/Serialization/ASTWriter.cpp

index 37adcb70640d40f0846f83671f44e8c4751102d2..9124ab4af22b603211b35530e2ace6a8e2e55330 100644 (file)
@@ -4279,9 +4279,13 @@ void ASTWriter::WriteOpenCLExtensionTypes(Sema &SemaRef) {
     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 @@ void ASTWriter::WriteOpenCLExtensionDecls(Sema &SemaRef) {
     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);