From e50038e4dc53caee1acc811362ac0b15e00ef5eb Mon Sep 17 00:00:00 2001 From: Vlad Tsyrklevich Date: Mon, 25 Feb 2019 19:53:13 +0000 Subject: [PATCH] Revert "Make static counters in ASTContext non-static." This reverts commit r354795, I suspect it is causing test failures on MSan sanitizer bots. llvm-svn: 354812 --- clang/include/clang/AST/ASTContext.h | 24 ++++++++++++------------ clang/lib/AST/ASTContext.cpp | 13 +++++++++++++ clang/lib/Sema/SemaDeclCXX.cpp | 24 ++++++++++++------------ 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/clang/include/clang/AST/ASTContext.h b/clang/include/clang/AST/ASTContext.h index 4e3280b..b8944a0 100644 --- a/clang/include/clang/AST/ASTContext.h +++ b/clang/include/clang/AST/ASTContext.h @@ -2809,46 +2809,46 @@ public: //===--------------------------------------------------------------------===// /// The number of implicitly-declared default constructors. - unsigned NumImplicitDefaultConstructors; + static unsigned NumImplicitDefaultConstructors; /// The number of implicitly-declared default constructors for /// which declarations were built. - unsigned NumImplicitDefaultConstructorsDeclared; + static unsigned NumImplicitDefaultConstructorsDeclared; /// The number of implicitly-declared copy constructors. - unsigned NumImplicitCopyConstructors; + static unsigned NumImplicitCopyConstructors; /// The number of implicitly-declared copy constructors for /// which declarations were built. - unsigned NumImplicitCopyConstructorsDeclared; + static unsigned NumImplicitCopyConstructorsDeclared; /// The number of implicitly-declared move constructors. - unsigned NumImplicitMoveConstructors; + static unsigned NumImplicitMoveConstructors; /// The number of implicitly-declared move constructors for /// which declarations were built. - unsigned NumImplicitMoveConstructorsDeclared; + static unsigned NumImplicitMoveConstructorsDeclared; /// The number of implicitly-declared copy assignment operators. - unsigned NumImplicitCopyAssignmentOperators; + static unsigned NumImplicitCopyAssignmentOperators; /// The number of implicitly-declared copy assignment operators for /// which declarations were built. - unsigned NumImplicitCopyAssignmentOperatorsDeclared; + static unsigned NumImplicitCopyAssignmentOperatorsDeclared; /// The number of implicitly-declared move assignment operators. - unsigned NumImplicitMoveAssignmentOperators; + static unsigned NumImplicitMoveAssignmentOperators; /// The number of implicitly-declared move assignment operators for /// which declarations were built. - unsigned NumImplicitMoveAssignmentOperatorsDeclared; + static unsigned NumImplicitMoveAssignmentOperatorsDeclared; /// The number of implicitly-declared destructors. - unsigned NumImplicitDestructors; + static unsigned NumImplicitDestructors; /// The number of implicitly-declared destructors for which /// declarations were built. - unsigned NumImplicitDestructorsDeclared; + static unsigned NumImplicitDestructorsDeclared; public: /// Initialize built-in types. diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index f968c62..46cdd9a 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -94,6 +94,19 @@ using namespace clang; +unsigned ASTContext::NumImplicitDefaultConstructors; +unsigned ASTContext::NumImplicitDefaultConstructorsDeclared; +unsigned ASTContext::NumImplicitCopyConstructors; +unsigned ASTContext::NumImplicitCopyConstructorsDeclared; +unsigned ASTContext::NumImplicitMoveConstructors; +unsigned ASTContext::NumImplicitMoveConstructorsDeclared; +unsigned ASTContext::NumImplicitCopyAssignmentOperators; +unsigned ASTContext::NumImplicitCopyAssignmentOperatorsDeclared; +unsigned ASTContext::NumImplicitMoveAssignmentOperators; +unsigned ASTContext::NumImplicitMoveAssignmentOperatorsDeclared; +unsigned ASTContext::NumImplicitDestructors; +unsigned ASTContext::NumImplicitDestructorsDeclared; + enum FloatingRank { Float16Rank, HalfRank, FloatRank, DoubleRank, LongDoubleRank, Float128Rank }; diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 55e176f..7457d1c 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -7971,14 +7971,14 @@ void Sema::ActOnFinishCXXMemberSpecification( /// definition of the class is complete. void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) { if (ClassDecl->needsImplicitDefaultConstructor()) { - ++getASTContext().NumImplicitDefaultConstructors; + ++ASTContext::NumImplicitDefaultConstructors; if (ClassDecl->hasInheritedConstructor()) DeclareImplicitDefaultConstructor(ClassDecl); } if (ClassDecl->needsImplicitCopyConstructor()) { - ++getASTContext().NumImplicitCopyConstructors; + ++ASTContext::NumImplicitCopyConstructors; // If the properties or semantics of the copy constructor couldn't be // determined while the class was being declared, force a declaration @@ -8000,7 +8000,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) { } if (getLangOpts().CPlusPlus11 && ClassDecl->needsImplicitMoveConstructor()) { - ++getASTContext().NumImplicitMoveConstructors; + ++ASTContext::NumImplicitMoveConstructors; if (ClassDecl->needsOverloadResolutionForMoveConstructor() || ClassDecl->hasInheritedConstructor()) @@ -8008,7 +8008,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) { } if (ClassDecl->needsImplicitCopyAssignment()) { - ++getASTContext().NumImplicitCopyAssignmentOperators; + ++ASTContext::NumImplicitCopyAssignmentOperators; // If we have a dynamic class, then the copy assignment operator may be // virtual, so we have to declare it immediately. This ensures that, e.g., @@ -8021,7 +8021,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) { } if (getLangOpts().CPlusPlus11 && ClassDecl->needsImplicitMoveAssignment()) { - ++getASTContext().NumImplicitMoveAssignmentOperators; + ++ASTContext::NumImplicitMoveAssignmentOperators; // Likewise for the move assignment operator. if (ClassDecl->isDynamicClass() || @@ -8031,7 +8031,7 @@ void Sema::AddImplicitlyDeclaredMembersToClass(CXXRecordDecl *ClassDecl) { } if (ClassDecl->needsImplicitDestructor()) { - ++getASTContext().NumImplicitDestructors; + ++ASTContext::NumImplicitDestructors; // If we have a dynamic class, then the destructor may be virtual, so we // have to declare the destructor immediately. This ensures that, e.g., it @@ -11013,7 +11013,7 @@ CXXConstructorDecl *Sema::DeclareImplicitDefaultConstructor( DefaultCon->setTrivial(ClassDecl->hasTrivialDefaultConstructor()); // Note that we have declared this constructor. - ++getASTContext().NumImplicitDefaultConstructorsDeclared; + ++ASTContext::NumImplicitDefaultConstructorsDeclared; Scope *S = getScopeForContext(ClassDecl); CheckImplicitSpecialMemberDeclaration(S, DefaultCon); @@ -11286,7 +11286,7 @@ CXXDestructorDecl *Sema::DeclareImplicitDestructor(CXXRecordDecl *ClassDecl) { ClassDecl->hasTrivialDestructorForCall()); // Note that we have declared this destructor. - ++getASTContext().NumImplicitDestructorsDeclared; + ++ASTContext::NumImplicitDestructorsDeclared; Scope *S = getScopeForContext(ClassDecl); CheckImplicitSpecialMemberDeclaration(S, Destructor); @@ -11896,7 +11896,7 @@ CXXMethodDecl *Sema::DeclareImplicitCopyAssignment(CXXRecordDecl *ClassDecl) { : ClassDecl->hasTrivialCopyAssignment()); // Note that we have added this copy-assignment operator. - ++getASTContext().NumImplicitCopyAssignmentOperatorsDeclared; + ++ASTContext::NumImplicitCopyAssignmentOperatorsDeclared; Scope *S = getScopeForContext(ClassDecl); CheckImplicitSpecialMemberDeclaration(S, CopyAssignment); @@ -12219,7 +12219,7 @@ CXXMethodDecl *Sema::DeclareImplicitMoveAssignment(CXXRecordDecl *ClassDecl) { : ClassDecl->hasTrivialMoveAssignment()); // Note that we have added this copy-assignment operator. - ++getASTContext().NumImplicitMoveAssignmentOperatorsDeclared; + ++ASTContext::NumImplicitMoveAssignmentOperatorsDeclared; Scope *S = getScopeForContext(ClassDecl); CheckImplicitSpecialMemberDeclaration(S, MoveAssignment); @@ -12602,7 +12602,7 @@ CXXConstructorDecl *Sema::DeclareImplicitCopyConstructor( : ClassDecl->hasTrivialCopyConstructorForCall())); // Note that we have declared this constructor. - ++getASTContext().NumImplicitCopyConstructorsDeclared; + ++ASTContext::NumImplicitCopyConstructorsDeclared; Scope *S = getScopeForContext(ClassDecl); CheckImplicitSpecialMemberDeclaration(S, CopyConstructor); @@ -12732,7 +12732,7 @@ CXXConstructorDecl *Sema::DeclareImplicitMoveConstructor( : ClassDecl->hasTrivialMoveConstructorForCall())); // Note that we have declared this constructor. - ++getASTContext().NumImplicitMoveConstructorsDeclared; + ++ASTContext::NumImplicitMoveConstructorsDeclared; Scope *S = getScopeForContext(ClassDecl); CheckImplicitSpecialMemberDeclaration(S, MoveConstructor); -- 2.7.4