forked from OSchip/llvm-project
Replace the std::map in the init list checker with a DenseMap to reduce malloc thrashing.
llvm-svn: 151254
This commit is contained in:
parent
d53aa39f46
commit
6b441d62e9
clang/lib/Sema
|
@ -173,7 +173,7 @@ class InitListChecker {
|
|||
bool hadError;
|
||||
bool VerifyOnly; // no diagnostics, no structure building
|
||||
bool AllowBraceElision;
|
||||
std::map<InitListExpr *, InitListExpr *> SyntacticToSemantic;
|
||||
llvm::DenseMap<InitListExpr *, InitListExpr *> SyntacticToSemantic;
|
||||
InitListExpr *FullyStructuredList;
|
||||
|
||||
void CheckImplicitInitList(const InitializedEntity &Entity,
|
||||
|
@ -1632,7 +1632,7 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity,
|
|||
|
||||
// Determine the structural initializer list that corresponds to the
|
||||
// current subobject.
|
||||
StructuredList = IsFirstDesignator? SyntacticToSemantic[IList]
|
||||
StructuredList = IsFirstDesignator? SyntacticToSemantic.lookup(IList)
|
||||
: getStructuredSubobjectInit(IList, Index, CurrentObjectType,
|
||||
StructuredList, StructuredIndex,
|
||||
SourceRange(D->getStartLocation(),
|
||||
|
@ -2046,7 +2046,7 @@ InitListChecker::getStructuredSubobjectInit(InitListExpr *IList, unsigned Index,
|
|||
return 0; // No structured list in verification-only mode.
|
||||
Expr *ExistingInit = 0;
|
||||
if (!StructuredList)
|
||||
ExistingInit = SyntacticToSemantic[IList];
|
||||
ExistingInit = SyntacticToSemantic.lookup(IList);
|
||||
else if (StructuredIndex < StructuredList->getNumInits())
|
||||
ExistingInit = StructuredList->getInit(StructuredIndex);
|
||||
|
||||
|
|
Loading…
Reference in New Issue