[cfe-commits] r42491 - /cfe/trunk/include/clang/AST/Decl.h

Fariborz Jahanian fjahanian at apple.com
Mon Oct 1 10:19:59 PDT 2007


Author: fjahanian
Date: Mon Oct  1 12:19:59 2007
New Revision: 42491

URL: http://llvm.org/viewvc/llvm-project?rev=42491&view=rev
Log:
Moved two bitfields back to top of class ObjcMethodDecl so they pack
with those in their base class. In response to clattner's 
September 30, 2007 12:54:49 AM PDT email.

Modified:
    cfe/trunk/include/clang/AST/Decl.h

Modified: cfe/trunk/include/clang/AST/Decl.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=42491&r1=42490&r2=42491&view=diff

==============================================================================
--- cfe/trunk/include/clang/AST/Decl.h (original)
+++ cfe/trunk/include/clang/AST/Decl.h Mon Oct  1 12:19:59 2007
@@ -57,31 +57,18 @@
     IDNS_Ordinary
   };
   
-  enum ImplementationControl { None, Required, Optional };
-  
 private:
   /// DeclKind - This indicates which class this is.
   Kind DeclKind   :  8;
   
   /// InvalidDecl - This indicates a semantic error occurred.
   unsigned int InvalidDecl :  1;
-
-  /// instance (true) or class (false) method.
-  bool IsInstance : 1;
-  /// @required/@optional
-  ImplementationControl DeclImplementation : 2;
   
 protected:
-  Decl(Kind DK) : DeclKind(DK), InvalidDecl(0), 
-  IsInstance(false), DeclImplementation(None) {
+  Decl(Kind DK) : DeclKind(DK), InvalidDecl(0) {
     if (Decl::CollectingStats()) addDeclKind(DK);
   }
   
-  Decl(Kind DK, bool isInstance, ImplementationControl implControl) 
-  : DeclKind(DK), InvalidDecl(0), 
-  IsInstance(isInstance), DeclImplementation(implControl) {
-    if (Decl::CollectingStats()) addDeclKind(DK);
-  }  
   virtual ~Decl();
   
 public:
@@ -93,10 +80,7 @@
   /// allows for graceful error recovery.
   void setInvalidDecl() { InvalidDecl = 1; }
   int isInvalidDecl() const { return InvalidDecl; }
-  bool isInstance() const { return IsInstance; }
-  ImplementationControl  getImplementationControl() const
-  { return DeclImplementation; }
-
+  
   IdentifierNamespace getIdentifierNamespace() const {
     switch (DeclKind) {
     default: assert(0 && "Unknown decl kind!");
@@ -696,7 +680,16 @@
 /// ObjcMethodDecl - An instance of this class is created to represent an instance
 /// or class method declaration.
 class ObjcMethodDecl : public Decl {
+public:
+  enum ImplementationControl { None, Required, Optional };
 private:
+  /// Bitfields must be first fields in this class so they pack with those
+  /// declared in class Decl.
+  /// instance (true) or class (false) method.
+  bool IsInstance : 1;
+  /// @required/@optional
+  ImplementationControl DeclImplementation : 2;
+  
   // A unigue name for this method.
   Selector SelName;
   
@@ -719,7 +712,8 @@
 		 AttributeList *M = 0, bool isInstance = true,
                  ImplementationControl impControl = None,
 		 Decl *PrevDecl = 0)
-    : Decl(ObjcMethod, isInstance, impControl), 
+    : Decl(ObjcMethod),
+      IsInstance(isInstance), DeclImplementation(impControl),
       SelName(SelInfo), MethodDeclType(T), 
       ParamInfo(paramInfo), NumMethodParams(numParams),
       MethodAttrs(M), Loc(L) {}
@@ -733,6 +727,11 @@
       MethodAttrs(M), IsInstance(isInstance) {}
 #endif
   virtual ~ObjcMethodDecl();
+  bool isInstance() const { return IsInstance; }
+  ImplementationControl  getImplementationControl() const {
+    return DeclImplementation; 
+  }
+  
   Selector getSelector() const { return SelName; }
   QualType getMethodType() const { return MethodDeclType; }
   unsigned getNumMethodParams() const { return NumMethodParams; }





More information about the cfe-commits mailing list