From e9b02d68f48030a6306c0bf6b37c17ee2f375ab1 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 21 Mar 2016 22:33:02 +0000 Subject: [PATCH] [modules] Store mangling numbers in a deterministic order so they don't cause the resulting .pcm files to be nondeterministic. llvm-svn: 263996 --- clang/include/clang/AST/ASTContext.h | 5 +++-- clang/lib/AST/ASTContext.cpp | 6 ++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/clang/include/clang/AST/ASTContext.h b/clang/include/clang/AST/ASTContext.h index fb5a64f5..2851c4d 100644 --- a/clang/include/clang/AST/ASTContext.h +++ b/clang/include/clang/AST/ASTContext.h @@ -36,6 +36,7 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/FoldingSet.h" #include "llvm/ADT/IntrusiveRefCntPtr.h" +#include "llvm/ADT/MapVector.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/TinyPtrVector.h" #include "llvm/Support/Allocator.h" @@ -393,8 +394,8 @@ private: /// \brief Side-table of mangling numbers for declarations which rarely /// need them (like static local vars). - llvm::DenseMap MangleNumbers; - llvm::DenseMap StaticLocalNumbers; + llvm::MapVector MangleNumbers; + llvm::MapVector StaticLocalNumbers; /// \brief Mapping that stores parameterIndex values for ParmVarDecls when /// that value exceeds the bitfield size of ParmVarDeclBits.ParameterIndex. diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index cd0eada..5fb94e1 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -8684,8 +8684,7 @@ void ASTContext::setManglingNumber(const NamedDecl *ND, unsigned Number) { } unsigned ASTContext::getManglingNumber(const NamedDecl *ND) const { - llvm::DenseMap::const_iterator I = - MangleNumbers.find(ND); + auto I = MangleNumbers.find(ND); return I != MangleNumbers.end() ? I->second : 1; } @@ -8695,8 +8694,7 @@ void ASTContext::setStaticLocalNumber(const VarDecl *VD, unsigned Number) { } unsigned ASTContext::getStaticLocalNumber(const VarDecl *VD) const { - llvm::DenseMap::const_iterator I = - StaticLocalNumbers.find(VD); + auto I = StaticLocalNumbers.find(VD); return I != StaticLocalNumbers.end() ? I->second : 1; } -- 2.7.4