]> granicus.if.org Git - clang/commitdiff
Hoist truncation checking for ParmVarDeclBitfields::ParameterIndex into its own helpe...
authorTed Kremenek <kremenek@apple.com>
Thu, 6 Oct 2011 04:19:35 +0000 (04:19 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 6 Oct 2011 04:19:35 +0000 (04:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141272 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Decl.h

index a1d9bc5a4faf28b654c283c3dceddee91e7d7709..8bc35a06977dc41c1262f97c16d912d5f3591011 100644 (file)
@@ -728,6 +728,8 @@ private:
   friend class StmtIteratorBase;
   
 protected:
+  enum { NumParameterIndexBits = 8 };
+  
   class ParmVarDeclBitfields {
     friend class ParmVarDecl;
     friend class ASTDeclReader;
@@ -752,7 +754,7 @@ protected:
 
     /// The number of parameters preceding this parameter in the
     /// function parameter scope in which it was declared.
-    unsigned ParameterIndex : 8;
+    unsigned ParameterIndex : NumParameterIndexBits;
   };
 
   union {
@@ -1218,12 +1220,10 @@ public:
                              Expr *DefArg);
 
   virtual SourceRange getSourceRange() const;
-
+  
   void setObjCMethodScopeInfo(unsigned parameterIndex) {
     ParmVarDeclBits.IsObjCMethodParam = true;
-
-    ParmVarDeclBits.ParameterIndex = parameterIndex;
-    assert(ParmVarDeclBits.ParameterIndex == parameterIndex && "truncation!");
+    setParameterIndex(parameterIndex);
   }
 
   void setScopeInfo(unsigned scopeDepth, unsigned parameterIndex) {
@@ -1232,8 +1232,7 @@ public:
     ParmVarDeclBits.ScopeDepthOrObjCQuals = scopeDepth;
     assert(ParmVarDeclBits.ScopeDepthOrObjCQuals == scopeDepth && "truncation!");
 
-    ParmVarDeclBits.ParameterIndex = parameterIndex;
-    assert(ParmVarDeclBits.ParameterIndex == parameterIndex && "truncation!");
+    setParameterIndex(parameterIndex);
   }
 
   bool isObjCMethodParameter() const {
@@ -1364,6 +1363,13 @@ public:
   static bool classof(const Decl *D) { return classofKind(D->getKind()); }
   static bool classof(const ParmVarDecl *D) { return true; }
   static bool classofKind(Kind K) { return K == ParmVar; }
+  
+private:
+  void setParameterIndex(unsigned parameterIndex) {
+    ParmVarDeclBits.ParameterIndex = parameterIndex;
+    assert(ParmVarDeclBits.ParameterIndex == parameterIndex && "truncation!");
+  }
+
 };
 
 /// FunctionDecl - An instance of this class is created to represent a