Improve XML output for class/struct/union declarations, from Martin Vejnar!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116103 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/DeclXML.cpp b/lib/Frontend/DeclXML.cpp
index 3b600ff..c688ed0 100644
--- a/lib/Frontend/DeclXML.cpp
+++ b/lib/Frontend/DeclXML.cpp
@@ -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) {