[modules] Store mangling numbers in a deterministic order so they don't cause the resulting .pcm files to be nondeterministic.

llvm-svn: 263996
This commit is contained in:
Richard Smith 2016-03-21 22:33:02 +00:00
parent bd4dc69308
commit e9b02d68f4
2 changed files with 5 additions and 6 deletions

View File

@ -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<const NamedDecl *, unsigned> MangleNumbers;
llvm::DenseMap<const VarDecl *, unsigned> StaticLocalNumbers;
llvm::MapVector<const NamedDecl *, unsigned> MangleNumbers;
llvm::MapVector<const VarDecl *, unsigned> StaticLocalNumbers;
/// \brief Mapping that stores parameterIndex values for ParmVarDecls when
/// that value exceeds the bitfield size of ParmVarDeclBits.ParameterIndex.

View File

@ -8684,8 +8684,7 @@ void ASTContext::setManglingNumber(const NamedDecl *ND, unsigned Number) {
}
unsigned ASTContext::getManglingNumber(const NamedDecl *ND) const {
llvm::DenseMap<const NamedDecl *, unsigned>::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 VarDecl *, unsigned>::const_iterator I =
StaticLocalNumbers.find(VD);
auto I = StaticLocalNumbers.find(VD);
return I != StaticLocalNumbers.end() ? I->second : 1;
}