Index: lib/Frontend/DeclXML.cpp
===================================================================
--- lib/Frontend/DeclXML.cpp	(revision 115142)
+++ lib/Frontend/DeclXML.cpp	(working copy)
@@ -38,21 +38,11 @@
   }
 
   void addSubNodes(RecordDecl* RD) {
-    for (RecordDecl::field_iterator i = RD->field_begin(),
-                                    e = RD->field_end(); i != e; ++i) {
-      Visit(*i);
-      Doc.toParent();
-    }
-
     for (RecordDecl::decl_iterator i = RD->decls_begin(),
                                    e = RD->decls_end(); i != e; ++i) {
-      Decl *d = *i;
-      if (isa<RecordDecl>(d)) {
-        RecordDecl* pRec = cast<RecordDecl>(d);
-        if (pRec->isDefinition()) {
-          Visit(pRec);
-          Doc.toParent();
-        }
+      if (!(*i)->isImplicit()) {
+        Visit(*i);
+        Doc.toParent();
       }
     }
   }
@@ -83,15 +73,7 @@
         Doc.addAttribute("is_virtual", base->isVirtual());
         Doc.toParent();
       }
-
-      for (CXXRecordDecl::method_iterator i = RD->method_begin(),
-             e = RD->method_end(); i != e; ++i) {
-        Visit(*i);
-        Doc.toParent();
-      }
-
     }
-
   }
 
   void addSubNodes(EnumDecl* ED) {
