]> granicus.if.org Git - clang/commitdiff
StmtIterator: Put stmt and decl group pointer into a union.
authorBenjamin Kramer <benny.kra@googlemail.com>
Fri, 3 Jul 2015 15:12:36 +0000 (15:12 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Fri, 3 Jul 2015 15:12:36 +0000 (15:12 +0000)
Reduce the size of StmtIterator without changing behavior.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241356 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/StmtIterator.h
lib/AST/StmtIterator.cpp

index ec7329a4a013d19cd46c69b9239d0ed967f1cda3..a5a57af523d1bbaa25bb763d93ec7bd2867c7450 100644 (file)
@@ -32,8 +32,10 @@ protected:
   enum { StmtMode = 0x0, SizeOfTypeVAMode = 0x1, DeclGroupMode = 0x2,
          Flags = 0x3 };
   
-  Stmt **stmt;
-  Decl **DGI;
+  union {
+    Stmt **stmt;
+    Decl **DGI;
+  };
   uintptr_t RawVAPtr;
   Decl **DGE;
   
@@ -64,10 +66,10 @@ protected:
 
   Stmt*& GetDeclExpr() const;
 
-  StmtIteratorBase(Stmt **s) : stmt(s), DGI(nullptr), RawVAPtr(0) {}
+  StmtIteratorBase(Stmt **s) : stmt(s), RawVAPtr(0) {}
   StmtIteratorBase(const VariableArrayType *t);
   StmtIteratorBase(Decl **dgi, Decl **dge);
-  StmtIteratorBase() : stmt(nullptr), DGI(nullptr), RawVAPtr(0) {}
+  StmtIteratorBase() : stmt(nullptr), RawVAPtr(0) {}
 };
 
 
index 1ccba04d9f5bb133f38b94bb0fca3e0b1ff5db35..732756fbec9ab2a7aaae14d83f3fdce77699eb0d 100644 (file)
@@ -93,12 +93,12 @@ bool StmtIteratorBase::HandleDecl(Decl* D) {
 }
 
 StmtIteratorBase::StmtIteratorBase(Decl** dgi, Decl** dge)
-  : stmt(nullptr), DGI(dgi), RawVAPtr(DeclGroupMode), DGE(dge) {
+  : DGI(dgi), RawVAPtr(DeclGroupMode), DGE(dge) {
   NextDecl(false);
 }
 
 StmtIteratorBase::StmtIteratorBase(const VariableArrayType* t)
-  : stmt(nullptr), DGI(nullptr), RawVAPtr(SizeOfTypeVAMode) {
+  : DGI(nullptr), RawVAPtr(SizeOfTypeVAMode) {
   RawVAPtr |= reinterpret_cast<uintptr_t>(t);
 }