]> granicus.if.org Git - clang/commitdiff
RecordDecl serialization:
authorTed Kremenek <kremenek@apple.com>
Tue, 2 Sep 2008 20:42:52 +0000 (20:42 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 2 Sep 2008 20:42:52 +0000 (20:42 +0000)
- Don't serialize out the NextDeclarator field.  It is unused and deprecated.
- Serialize out the NextDecl pointer.

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

lib/AST/DeclSerialization.cpp

index 2ba891005a4df315da8990f0431474dfe14dbcd3..82a8fcd0f6209057d162215fd3aee855da37d98c 100644 (file)
@@ -449,11 +449,11 @@ void RecordDecl::EmitImpl(Serializer& S) const {
   ScopedDecl::EmitInRec(S);
   S.EmitBool(isDefinition());
   S.EmitBool(hasFlexibleArrayMember());
+  S.EmitPtr(NextDecl);
   S.EmitSInt(getNumMembers());
   if (getNumMembers() > 0) {
     assert (Members);
-    S.BatchEmitOwnedPtrs((unsigned) getNumMembers(),
-                         (Decl**) &Members[0],getNextDeclarator());
+    S.BatchEmitOwnedPtrs((unsigned) getNumMembers(), (Decl**) &Members[0]);
   }
   else
     ScopedDecl::EmitOutRec(S);
@@ -468,17 +468,14 @@ RecordDecl* RecordDecl::CreateImpl(Decl::Kind DK, Deserializer& D,
   decl->ScopedDecl::ReadInRec(D, C);
   decl->setDefinition(D.ReadBool());
   decl->setHasFlexibleArrayMember(D.ReadBool());
+  D.ReadPtr(decl->NextDecl); // Allow backpatching.
   decl->NumMembers = D.ReadSInt();
   
   if (decl->getNumMembers() > 0) {
-    Decl* next_declarator;
     decl->Members = new FieldDecl*[(unsigned) decl->getNumMembers()];
                               
     D.BatchReadOwnedPtrs((unsigned) decl->getNumMembers(),
-                         (Decl**) &decl->Members[0],
-                         next_declarator, C);
-    
-    decl->setNextDeclarator(cast_or_null<ScopedDecl>(next_declarator));                             
+                         (Decl**) &decl->Members[0], C);
   }
   else
     decl->ScopedDecl::ReadOutRec(D, C);