[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