]> granicus.if.org Git - clang/commitdiff
Reduce sizeof(CXXConstructorDecl) by 4-8 bytes.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Jun 2016 02:01:28 +0000 (02:01 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 10 Jun 2016 02:01:28 +0000 (02:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272361 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/DeclCXX.h

index a5cf9ca9926cf317f08704d40e24c65c89dcd02b..755542c04a170732569a4483e1a6901e17e7307b 100644 (file)
@@ -2165,17 +2165,18 @@ public:
 /// \endcode
 class CXXConstructorDecl : public CXXMethodDecl {
   void anchor() override;
-  /// \brief Whether this constructor declaration has the \c explicit keyword
-  /// specified.
-  bool IsExplicitSpecified : 1;
 
   /// \name Support for base and member initializers.
   /// \{
   /// \brief The arguments used to initialize the base or member.
   LazyCXXCtorInitializersPtr CtorInitializers;
-  unsigned NumCtorInitializers;
+  unsigned NumCtorInitializers : 31;
   /// \}
 
+  /// \brief Whether this constructor declaration has the \c explicit keyword
+  /// specified.
+  unsigned IsExplicitSpecified : 1;
+
   CXXConstructorDecl(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
                      const DeclarationNameInfo &NameInfo,
                      QualType T, TypeSourceInfo *TInfo,
@@ -2183,8 +2184,8 @@ class CXXConstructorDecl : public CXXMethodDecl {
                      bool isImplicitlyDeclared, bool isConstexpr)
     : CXXMethodDecl(CXXConstructor, C, RD, StartLoc, NameInfo, T, TInfo,
                     SC_None, isInline, isConstexpr, SourceLocation()),
-      IsExplicitSpecified(isExplicitSpecified), CtorInitializers(nullptr),
-      NumCtorInitializers(0) {
+      CtorInitializers(nullptr), NumCtorInitializers(0),
+      IsExplicitSpecified(isExplicitSpecified) {
     setImplicit(isImplicitlyDeclared);
   }