r192131 - Remove -ast-dump-xml.

Rafael EspĂ­ndola rafael.espindola at gmail.com
Mon Oct 7 14:03:44 PDT 2013


11 files changed, 1106 deletions(-)

Awesome!

On 7 October 2013 16:56, Richard Smith <richard-llvm at metafoo.co.uk> wrote:
> Author: rsmith
> Date: Mon Oct  7 15:56:34 2013
> New Revision: 192131
>
> URL: http://llvm.org/viewvc/llvm-project?rev=192131&view=rev
> Log:
> Remove -ast-dump-xml.
>
> Removed:
>     cfe/trunk/lib/AST/DumpXML.cpp
> Modified:
>     cfe/trunk/include/clang/AST/DeclBase.h
>     cfe/trunk/include/clang/Driver/CC1Options.td
>     cfe/trunk/include/clang/Frontend/ASTConsumers.h
>     cfe/trunk/include/clang/Frontend/FrontendActions.h
>     cfe/trunk/include/clang/Frontend/FrontendOptions.h
>     cfe/trunk/lib/AST/CMakeLists.txt
>     cfe/trunk/lib/Frontend/ASTConsumers.cpp
>     cfe/trunk/lib/Frontend/CompilerInvocation.cpp
>     cfe/trunk/lib/Frontend/FrontendActions.cpp
>     cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp
>
> Modified: cfe/trunk/include/clang/AST/DeclBase.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclBase.h?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/DeclBase.h (original)
> +++ cfe/trunk/include/clang/AST/DeclBase.h Mon Oct  7 15:56:34 2013
> @@ -937,9 +937,6 @@ public:
>    // Same as dump(), but forces color printing.
>    LLVM_ATTRIBUTE_USED void dumpColor() const;
>    void dump(raw_ostream &Out) const;
> -  // Debuggers don't usually respect default arguments.
> -  LLVM_ATTRIBUTE_USED void dumpXML() const;
> -  void dumpXML(raw_ostream &OS) const;
>
>  private:
>    void setAttrsImpl(const AttrVec& Attrs, ASTContext &Ctx);
>
> Modified: cfe/trunk/include/clang/Driver/CC1Options.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Driver/CC1Options.td (original)
> +++ cfe/trunk/include/clang/Driver/CC1Options.td Mon Oct  7 15:56:34 2013
> @@ -336,8 +336,6 @@ def ast_list : Flag<["-"], "ast-list">,
>    HelpText<"Build ASTs and print the list of declaration node qualified names">;
>  def ast_dump : Flag<["-"], "ast-dump">,
>    HelpText<"Build ASTs and then debug dump them">;
> -def ast_dump_xml : Flag<["-"], "ast-dump-xml">,
> -  HelpText<"Build ASTs and then debug dump them in a verbose XML format">;
>  def ast_view : Flag<["-"], "ast-view">,
>    HelpText<"Build ASTs and view them with GraphViz">;
>  def print_decl_contexts : Flag<["-"], "print-decl-contexts">,
>
> Modified: cfe/trunk/include/clang/Frontend/ASTConsumers.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/ASTConsumers.h?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Frontend/ASTConsumers.h (original)
> +++ cfe/trunk/include/clang/Frontend/ASTConsumers.h Mon Oct  7 15:56:34 2013
> @@ -40,10 +40,6 @@ ASTConsumer *CreateASTDumper(StringRef F
>  // nodes.
>  ASTConsumer *CreateASTDeclNodeLister();
>
> -// AST XML-dumper: dumps out the AST to stderr in a very detailed XML
> -// format; this is intended for particularly intense debugging.
> -ASTConsumer *CreateASTDumperXML(raw_ostream &OS);
> -
>  // Graphical AST viewer: for each function definition, creates a graph of
>  // the AST and displays it with the graph viewer "dotty".  Also outputs
>  // function declarations to stderr.
>
> Modified: cfe/trunk/include/clang/Frontend/FrontendActions.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendActions.h?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Frontend/FrontendActions.h (original)
> +++ cfe/trunk/include/clang/Frontend/FrontendActions.h Mon Oct  7 15:56:34 2013
> @@ -56,12 +56,6 @@ protected:
>                                           StringRef InFile);
>  };
>
> -class ASTDumpXMLAction : public ASTFrontendAction {
> -protected:
> -  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
> -                                         StringRef InFile);
> -};
> -
>  class ASTViewAction : public ASTFrontendAction {
>  protected:
>    virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
>
> Modified: cfe/trunk/include/clang/Frontend/FrontendOptions.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendOptions.h?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Frontend/FrontendOptions.h (original)
> +++ cfe/trunk/include/clang/Frontend/FrontendOptions.h Mon Oct  7 15:56:34 2013
> @@ -26,7 +26,6 @@ namespace frontend {
>    enum ActionKind {
>      ASTDeclList,            ///< Parse ASTs and list Decl nodes.
>      ASTDump,                ///< Parse ASTs and dump them.
> -    ASTDumpXML,             ///< Parse ASTs and dump them in XML.
>      ASTPrint,               ///< Parse ASTs and print them.
>      ASTView,                ///< Parse ASTs and view them in Graphviz.
>      DumpRawTokens,          ///< Dump out raw tokens.
>
> Modified: cfe/trunk/lib/AST/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/CMakeLists.txt?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/CMakeLists.txt (original)
> +++ cfe/trunk/lib/AST/CMakeLists.txt Mon Oct  7 15:56:34 2013
> @@ -26,7 +26,6 @@ add_clang_library(clangAST
>    DeclOpenMP.cpp
>    DeclPrinter.cpp
>    DeclTemplate.cpp
> -  DumpXML.cpp
>    Expr.cpp
>    ExprClassification.cpp
>    ExprConstant.cpp
>
> Removed: cfe/trunk/lib/AST/DumpXML.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DumpXML.cpp?rev=192130&view=auto
> ==============================================================================
> --- cfe/trunk/lib/AST/DumpXML.cpp (original)
> +++ cfe/trunk/lib/AST/DumpXML.cpp (removed)
> @@ -1,1054 +0,0 @@
> -//===--- DumpXML.cpp - Detailed XML dumping -------------------------------===//
> -//
> -//                     The LLVM Compiler Infrastructure
> -//
> -// This file is distributed under the University of Illinois Open Source
> -// License. See LICENSE.TXT for details.
> -//
> -//===----------------------------------------------------------------------===//
> -//
> -//  This file defines the Decl::dumpXML() method, a debugging tool to
> -//  print a detailed graph of an AST in an unspecified XML format.
> -//
> -//  There is no guarantee of stability for this format.
> -//
> -//===----------------------------------------------------------------------===//
> -
> -// Only pay for this in code size in assertions-enabled builds.
> -
> -#include "clang/AST/ASTContext.h"
> -#include "clang/AST/Attr.h"
> -#include "clang/AST/Decl.h"
> -#include "clang/AST/DeclCXX.h"
> -#include "clang/AST/DeclFriend.h"
> -#include "clang/AST/DeclObjC.h"
> -#include "clang/AST/DeclTemplate.h"
> -#include "clang/AST/DeclVisitor.h"
> -#include "clang/AST/Expr.h"
> -#include "clang/AST/ExprCXX.h"
> -#include "clang/AST/ExprObjC.h"
> -#include "clang/AST/NestedNameSpecifier.h"
> -#include "clang/AST/Stmt.h"
> -#include "clang/AST/StmtCXX.h"
> -#include "clang/AST/StmtObjC.h"
> -#include "clang/AST/StmtVisitor.h"
> -#include "clang/AST/TemplateBase.h"
> -#include "clang/AST/TemplateName.h"
> -#include "clang/AST/Type.h"
> -#include "clang/AST/TypeLoc.h"
> -#include "clang/AST/TypeLocVisitor.h"
> -#include "clang/AST/TypeVisitor.h"
> -#include "llvm/ADT/SmallString.h"
> -
> -using namespace clang;
> -
> -#ifndef NDEBUG
> -
> -namespace {
> -
> -enum NodeState {
> -  NS_Attrs, NS_LazyChildren, NS_Children
> -};
> -
> -struct Node {
> -  StringRef Name;
> -  NodeState State;
> -  Node(StringRef name) : Name(name), State(NS_Attrs) {}
> -
> -  bool isDoneWithAttrs() const { return State != NS_Attrs; }
> -};
> -
> -template <class Impl> struct XMLDeclVisitor {
> -#define DISPATCH(NAME, CLASS) \
> -  static_cast<Impl*>(this)->NAME(static_cast<CLASS*>(D))
> -
> -  void dispatch(Decl *D) {
> -    if (D->isUsed())
> -      static_cast<Impl*>(this)->set("used", "1");
> -    switch (D->getKind()) {
> -#define DECL(DERIVED, BASE) \
> -      case Decl::DERIVED: \
> -        DISPATCH(dispatch##DERIVED##DeclAttrs, DERIVED##Decl); \
> -        static_cast<Impl*>(this)->completeAttrs(); \
> -        DISPATCH(dispatch##DERIVED##DeclChildren, DERIVED##Decl); \
> -        DISPATCH(dispatch##DERIVED##DeclAsContext, DERIVED##Decl); \
> -        break;
> -#define ABSTRACT_DECL(DECL)
> -#include "clang/AST/DeclNodes.inc"
> -    }
> -  }
> -
> -#define DECL(DERIVED, BASE) \
> -  void dispatch##DERIVED##DeclAttrs(DERIVED##Decl *D) { \
> -    DISPATCH(dispatch##BASE##Attrs, BASE); \
> -    DISPATCH(visit##DERIVED##DeclAttrs, DERIVED##Decl); \
> -  } \
> -  void visit##DERIVED##DeclAttrs(DERIVED##Decl *D) {} \
> -  void dispatch##DERIVED##DeclChildren(DERIVED##Decl *D) { \
> -    DISPATCH(dispatch##BASE##Children, BASE); \
> -    DISPATCH(visit##DERIVED##DeclChildren, DERIVED##Decl); \
> -  } \
> -  void visit##DERIVED##DeclChildren(DERIVED##Decl *D) {} \
> -  void dispatch##DERIVED##DeclAsContext(DERIVED##Decl *D) { \
> -    DISPATCH(dispatch##BASE##AsContext, BASE); \
> -    DISPATCH(visit##DERIVED##DeclAsContext, DERIVED##Decl); \
> -  } \
> -  void visit##DERIVED##DeclAsContext(DERIVED##Decl *D) {}
> -#include "clang/AST/DeclNodes.inc"
> -
> -  void dispatchDeclAttrs(Decl *D) {
> -    DISPATCH(visitDeclAttrs, Decl);
> -  }
> -  void visitDeclAttrs(Decl *D) {}
> -
> -  void dispatchDeclChildren(Decl *D) {
> -    DISPATCH(visitDeclChildren, Decl);
> -  }
> -  void visitDeclChildren(Decl *D) {}
> -
> -  void dispatchDeclAsContext(Decl *D) {
> -    DISPATCH(visitDeclAsContext, Decl);
> -  }
> -  void visitDeclAsContext(Decl *D) {}
> -
> -#undef DISPATCH
> -};
> -
> -template <class Impl> struct XMLTypeVisitor {
> -#define DISPATCH(NAME, CLASS) \
> -  static_cast<Impl*>(this)->NAME(static_cast<CLASS*>(T))
> -
> -  void dispatch(Type *T) {
> -    switch (T->getTypeClass()) {
> -#define TYPE(DERIVED, BASE) \
> -      case Type::DERIVED: \
> -        DISPATCH(dispatch##DERIVED##TypeAttrs, DERIVED##Type); \
> -        static_cast<Impl*>(this)->completeAttrs(); \
> -        DISPATCH(dispatch##DERIVED##TypeChildren, DERIVED##Type); \
> -        break;
> -#define ABSTRACT_TYPE(DERIVED, BASE)
> -#include "clang/AST/TypeNodes.def"
> -    }
> -  }
> -
> -#define TYPE(DERIVED, BASE) \
> -  void dispatch##DERIVED##TypeAttrs(DERIVED##Type *T) { \
> -    DISPATCH(dispatch##BASE##Attrs, BASE); \
> -    DISPATCH(visit##DERIVED##TypeAttrs, DERIVED##Type); \
> -  } \
> -  void visit##DERIVED##TypeAttrs(DERIVED##Type *T) {} \
> -  void dispatch##DERIVED##TypeChildren(DERIVED##Type *T) { \
> -    DISPATCH(dispatch##BASE##Children, BASE); \
> -    DISPATCH(visit##DERIVED##TypeChildren, DERIVED##Type); \
> -  } \
> -  void visit##DERIVED##TypeChildren(DERIVED##Type *T) {}
> -#include "clang/AST/TypeNodes.def"
> -
> -  void dispatchTypeAttrs(Type *T) {
> -    DISPATCH(visitTypeAttrs, Type);
> -  }
> -  void visitTypeAttrs(Type *T) {}
> -
> -  void dispatchTypeChildren(Type *T) {
> -    DISPATCH(visitTypeChildren, Type);
> -  }
> -  void visitTypeChildren(Type *T) {}
> -
> -#undef DISPATCH
> -};
> -
> -static StringRef getTypeKindName(Type *T) {
> -  switch (T->getTypeClass()) {
> -#define TYPE(DERIVED, BASE) case Type::DERIVED: return #DERIVED "Type";
> -#define ABSTRACT_TYPE(DERIVED, BASE)
> -#include "clang/AST/TypeNodes.def"
> -  }
> -
> -  llvm_unreachable("unknown type kind!");
> -}
> -
> -struct XMLDumper : public XMLDeclVisitor<XMLDumper>,
> -                   public XMLTypeVisitor<XMLDumper> {
> -  raw_ostream &out;
> -  ASTContext &Context;
> -  SmallVector<Node, 16> Stack;
> -  unsigned Indent;
> -  explicit XMLDumper(raw_ostream &OS, ASTContext &context)
> -    : out(OS), Context(context), Indent(0) {}
> -
> -  void indent() {
> -    for (unsigned I = Indent; I; --I)
> -      out << ' ';
> -  }
> -
> -  /// Push a new node on the stack.
> -  void push(StringRef name) {
> -    if (!Stack.empty()) {
> -      assert(Stack.back().isDoneWithAttrs());
> -      if (Stack.back().State == NS_LazyChildren) {
> -        Stack.back().State = NS_Children;
> -        out << ">\n";
> -      }
> -      Indent++;
> -      indent();
> -    }
> -    Stack.push_back(Node(name));
> -    out << '<' << name;
> -  }
> -
> -  /// Set the given attribute to the given value.
> -  void set(StringRef attr, StringRef value) {
> -    assert(!Stack.empty() && !Stack.back().isDoneWithAttrs());
> -    out << ' ' << attr << '=' << '"' << value << '"'; // TODO: quotation
> -  }
> -
> -  /// Finish attributes.
> -  void completeAttrs() {
> -    assert(!Stack.empty() && !Stack.back().isDoneWithAttrs());
> -    Stack.back().State = NS_LazyChildren;
> -  }
> -
> -  /// Pop a node.
> -  void pop() {
> -    assert(!Stack.empty() && Stack.back().isDoneWithAttrs());
> -    if (Stack.back().State == NS_LazyChildren) {
> -      out << "/>\n";
> -    } else {
> -      indent();
> -      out << "</" << Stack.back().Name << ">\n";
> -    }
> -    if (Stack.size() > 1) Indent--;
> -    Stack.pop_back();
> -  }
> -
> -  //---- General utilities -------------------------------------------//
> -
> -  void setPointer(StringRef prop, const void *p) {
> -    SmallString<10> buffer;
> -    llvm::raw_svector_ostream os(buffer);
> -    os << p;
> -    os.flush();
> -    set(prop, buffer);
> -  }
> -
> -  void setPointer(void *p) {
> -    setPointer("ptr", p);
> -  }
> -
> -  void setInteger(StringRef prop, const llvm::APSInt &v) {
> -    set(prop, v.toString(10));
> -  }
> -
> -  void setInteger(StringRef prop, unsigned n) {
> -    SmallString<10> buffer;
> -    llvm::raw_svector_ostream os(buffer);
> -    os << n;
> -    os.flush();
> -    set(prop, buffer);
> -  }
> -
> -  void setFlag(StringRef prop, bool flag) {
> -    if (flag) set(prop, "true");
> -  }
> -
> -  void setName(DeclarationName Name) {
> -    if (!Name)
> -      return set("name", "");
> -
> -    // Common case.
> -    if (Name.isIdentifier())
> -      return set("name", Name.getAsIdentifierInfo()->getName());
> -
> -    set("name", Name.getAsString());
> -  }
> -
> -  class TemporaryContainer {
> -    XMLDumper &Dumper;
> -  public:
> -    TemporaryContainer(XMLDumper &dumper, StringRef name)
> -      : Dumper(dumper) {
> -      Dumper.push(name);
> -      Dumper.completeAttrs();
> -    }
> -
> -    ~TemporaryContainer() {
> -      Dumper.pop();
> -    }
> -  };
> -
> -  void visitTemplateParameters(TemplateParameterList *L) {
> -    push("template_parameters");
> -    completeAttrs();
> -    for (TemplateParameterList::iterator
> -           I = L->begin(), E = L->end(); I != E; ++I)
> -      dispatch(*I);
> -    pop();
> -  }
> -
> -  void visitTemplateArguments(const TemplateArgumentList &L) {
> -    push("template_arguments");
> -    completeAttrs();
> -    for (unsigned I = 0, E = L.size(); I != E; ++I)
> -      dispatch(L[I]);
> -    pop();
> -  }
> -
> -  /// Visits a reference to the given declaration.
> -  void visitDeclRef(Decl *D) {
> -    push(D->getDeclKindName());
> -    setPointer("ref", D);
> -    completeAttrs();
> -    pop();
> -  }
> -  void visitDeclRef(StringRef Name, Decl *D) {
> -    TemporaryContainer C(*this, Name);
> -    if (D) visitDeclRef(D);
> -  }
> -
> -  void dispatch(const TemplateArgument &A) {
> -    switch (A.getKind()) {
> -    case TemplateArgument::Null: {
> -      TemporaryContainer C(*this, "null");
> -      break;
> -    }
> -    case TemplateArgument::Type: {
> -      dispatch(A.getAsType());
> -      break;
> -    }
> -    case TemplateArgument::Template:
> -    case TemplateArgument::TemplateExpansion:
> -    case TemplateArgument::NullPtr:
> -      // FIXME: Implement!
> -      break;
> -
> -    case TemplateArgument::Declaration: {
> -      visitDeclRef(A.getAsDecl());
> -      break;
> -    }
> -    case TemplateArgument::Integral: {
> -      push("integer");
> -      setInteger("value", A.getAsIntegral());
> -      completeAttrs();
> -      pop();
> -      break;
> -    }
> -    case TemplateArgument::Expression: {
> -      dispatch(A.getAsExpr());
> -      break;
> -    }
> -    case TemplateArgument::Pack: {
> -      for (TemplateArgument::pack_iterator P = A.pack_begin(),
> -                                        PEnd = A.pack_end();
> -           P != PEnd; ++P)
> -        dispatch(*P);
> -      break;
> -    }
> -    }
> -  }
> -
> -  void dispatch(const TemplateArgumentLoc &A) {
> -    dispatch(A.getArgument());
> -  }
> -
> -  //---- Declarations ------------------------------------------------//
> -  // Calls are made in this order:
> -  //   # Enter a new node.
> -  //   push("FieldDecl")
> -  //
> -  //   # In this phase, attributes are set on the node.
> -  //   visitDeclAttrs(D)
> -  //   visitNamedDeclAttrs(D)
> -  //   ...
> -  //   visitFieldDeclAttrs(D)
> -  //
> -  //   # No more attributes after this point.
> -  //   completeAttrs()
> -  //
> -  //   # Create "header" child nodes, i.e. those which logically
> -  //   # belong to the declaration itself.
> -  //   visitDeclChildren(D)
> -  //   visitNamedDeclChildren(D)
> -  //   ...
> -  //   visitFieldDeclChildren(D)
> -  //
> -  //   # Create nodes for the lexical children.
> -  //   visitDeclAsContext(D)
> -  //   visitNamedDeclAsContext(D)
> -  //   ...
> -  //   visitFieldDeclAsContext(D)
> -  //
> -  //   # Finish the node.
> -  //   pop();
> -  void dispatch(Decl *D) {
> -    push(D->getDeclKindName());
> -    XMLDeclVisitor<XMLDumper>::dispatch(D);
> -    pop();
> -  }
> -  void visitDeclAttrs(Decl *D) {
> -    setPointer(D);
> -  }
> -
> -  /// Visit all the lexical decls in the given context.
> -  void visitDeclContext(DeclContext *DC) {
> -    for (DeclContext::decl_iterator
> -           I = DC->decls_begin(), E = DC->decls_end(); I != E; ++I)
> -      dispatch(*I);
> -
> -    // FIXME: point out visible declarations not in lexical context?
> -  }
> -
> -  /// Set the "access" attribute on the current node according to the
> -  /// given specifier.
> -  void setAccess(AccessSpecifier AS) {
> -    switch (AS) {
> -    case AS_public: return set("access", "public");
> -    case AS_protected: return set("access", "protected");
> -    case AS_private: return set("access", "private");
> -    case AS_none: llvm_unreachable("explicit forbidden access");
> -    }
> -  }
> -
> -  template <class T> void visitRedeclarableAttrs(T *D) {
> -    if (T *Prev = D->getPreviousDecl())
> -      setPointer("previous", Prev);
> -  }
> -
> -
> -  // TranslationUnitDecl
> -  void visitTranslationUnitDeclAsContext(TranslationUnitDecl *D) {
> -    visitDeclContext(D);
> -  }
> -
> -  // LinkageSpecDecl
> -  void visitLinkageSpecDeclAttrs(LinkageSpecDecl *D) {
> -    StringRef lang = "";
> -    switch (D->getLanguage()) {
> -    case LinkageSpecDecl::lang_c: lang = "C"; break;
> -    case LinkageSpecDecl::lang_cxx: lang = "C++"; break;
> -    }
> -    set("lang", lang);
> -  }
> -  void visitLinkageSpecDeclAsContext(LinkageSpecDecl *D) {
> -    visitDeclContext(D);
> -  }
> -
> -  // NamespaceDecl
> -  void visitNamespaceDeclAttrs(NamespaceDecl *D) {
> -    setFlag("inline", D->isInline());
> -    if (!D->isOriginalNamespace())
> -      setPointer("original", D->getOriginalNamespace());
> -  }
> -  void visitNamespaceDeclAsContext(NamespaceDecl *D) {
> -    visitDeclContext(D);
> -  }
> -
> -  // NamedDecl
> -  void visitNamedDeclAttrs(NamedDecl *D) {
> -    setName(D->getDeclName());
> -  }
> -
> -  // ValueDecl
> -  void visitValueDeclChildren(ValueDecl *D) {
> -    dispatch(D->getType());
> -  }
> -
> -  // DeclaratorDecl
> -  void visitDeclaratorDeclChildren(DeclaratorDecl *D) {
> -    //dispatch(D->getTypeSourceInfo()->getTypeLoc());
> -  }
> -
> -  // VarDecl
> -  void visitVarDeclAttrs(VarDecl *D) {
> -    visitRedeclarableAttrs(D);
> -    if (D->getStorageClass() != SC_None)
> -      set("storage",
> -          VarDecl::getStorageClassSpecifierString(D->getStorageClass()));
> -    StringRef initStyle = "";
> -    switch (D->getInitStyle()) {
> -    case VarDecl::CInit: initStyle = "c"; break;
> -    case VarDecl::CallInit: initStyle = "call"; break;
> -    case VarDecl::ListInit: initStyle = "list"; break;
> -    }
> -    set("initstyle", initStyle);
> -    setFlag("nrvo", D->isNRVOVariable());
> -    // TODO: instantiation, etc.
> -  }
> -  void visitVarDeclChildren(VarDecl *D) {
> -    if (D->hasInit()) dispatch(D->getInit());
> -  }
> -
> -  // ParmVarDecl?
> -
> -  // FunctionDecl
> -  void visitFunctionDeclAttrs(FunctionDecl *D) {
> -    visitRedeclarableAttrs(D);
> -    setFlag("pure", D->isPure());
> -    setFlag("trivial", D->isTrivial());
> -    setFlag("returnzero", D->hasImplicitReturnZero());
> -    setFlag("prototype", D->hasWrittenPrototype());
> -    setFlag("deleted", D->isDeletedAsWritten());
> -    if (D->getStorageClass() != SC_None)
> -      set("storage",
> -          VarDecl::getStorageClassSpecifierString(D->getStorageClass()));
> -    setFlag("inline", D->isInlineSpecified());
> -    if (const AsmLabelAttr *ALA = D->getAttr<AsmLabelAttr>())
> -      set("asmlabel", ALA->getLabel());
> -    // TODO: instantiation, etc.
> -  }
> -  void visitFunctionDeclChildren(FunctionDecl *D) {
> -    for (FunctionDecl::param_iterator
> -           I = D->param_begin(), E = D->param_end(); I != E; ++I)
> -      dispatch(*I);
> -    for (ArrayRef<NamedDecl *>::iterator I = D->getDeclsInPrototypeScope().begin(),
> -                                         E = D->getDeclsInPrototypeScope().end();
> -         I != E; ++I)
> -      dispatch(*I);
> -    if (D->doesThisDeclarationHaveABody())
> -      dispatch(D->getBody());
> -  }
> -
> -  // CXXMethodDecl ?
> -  // CXXConstructorDecl ?
> -  // CXXDestructorDecl ?
> -  // CXXConversionDecl ?
> -
> -  void dispatch(CXXCtorInitializer *Init) {
> -    // TODO
> -  }
> -
> -  // FieldDecl
> -  void visitFieldDeclAttrs(FieldDecl *D) {
> -    setFlag("mutable", D->isMutable());
> -  }
> -  void visitFieldDeclChildren(FieldDecl *D) {
> -    if (D->isBitField()) {
> -      TemporaryContainer C(*this, "bitwidth");
> -      dispatch(D->getBitWidth());
> -    }
> -    // TODO: C++0x member initializer
> -  }
> -
> -  // EnumConstantDecl
> -  void visitEnumConstantDeclChildren(EnumConstantDecl *D) {
> -    // value in any case?
> -    if (D->getInitExpr()) dispatch(D->getInitExpr());
> -  }
> -
> -  // IndirectFieldDecl
> -  void visitIndirectFieldDeclChildren(IndirectFieldDecl *D) {
> -    for (IndirectFieldDecl::chain_iterator
> -           I = D->chain_begin(), E = D->chain_end(); I != E; ++I) {
> -      NamedDecl *VD = const_cast<NamedDecl*>(*I);
> -      push(isa<VarDecl>(VD) ? "variable" : "field");
> -      setPointer("ptr", VD);
> -      completeAttrs();
> -      pop();
> -    }
> -  }
> -
> -  // TypeDecl
> -  void visitTypeDeclAttrs(TypeDecl *D) {
> -    setPointer("typeptr", D->getTypeForDecl());
> -  }
> -
> -  // TypedefDecl
> -  void visitTypedefDeclAttrs(TypedefDecl *D) {
> -    visitRedeclarableAttrs<TypedefNameDecl>(D);
> -  }
> -  void visitTypedefDeclChildren(TypedefDecl *D) {
> -    dispatch(D->getTypeSourceInfo()->getTypeLoc());
> -  }
> -
> -  // TypeAliasDecl
> -  void visitTypeAliasDeclAttrs(TypeAliasDecl *D) {
> -    visitRedeclarableAttrs<TypedefNameDecl>(D);
> -  }
> -  void visitTypeAliasDeclChildren(TypeAliasDecl *D) {
> -    dispatch(D->getTypeSourceInfo()->getTypeLoc());
> -  }
> -
> -  // TagDecl
> -  void visitTagDeclAttrs(TagDecl *D) {
> -    visitRedeclarableAttrs(D);
> -  }
> -  void visitTagDeclAsContext(TagDecl *D) {
> -    visitDeclContext(D);
> -  }
> -
> -  // EnumDecl
> -  void visitEnumDeclAttrs(EnumDecl *D) {
> -    setFlag("scoped", D->isScoped());
> -    setFlag("fixed", D->isFixed());
> -  }
> -  void visitEnumDeclChildren(EnumDecl *D) {
> -    {
> -      TemporaryContainer C(*this, "promotion_type");
> -      dispatch(D->getPromotionType());
> -    }
> -    {
> -      TemporaryContainer C(*this, "integer_type");
> -      dispatch(D->getIntegerType());
> -    }
> -  }
> -
> -  // RecordDecl ?
> -
> -  void visitCXXRecordDeclChildren(CXXRecordDecl *D) {
> -    if (!D->isThisDeclarationADefinition()) return;
> -
> -    for (CXXRecordDecl::base_class_iterator
> -           I = D->bases_begin(), E = D->bases_end(); I != E; ++I) {
> -      push("base");
> -      setAccess(I->getAccessSpecifier());
> -      completeAttrs();
> -      dispatch(I->getTypeSourceInfo()->getTypeLoc());
> -      pop();
> -    }
> -  }
> -
> -  // ClassTemplateSpecializationDecl ?
> -
> -  // FileScopeAsmDecl ?
> -
> -  // BlockDecl
> -  void visitBlockDeclAttrs(BlockDecl *D) {
> -    setFlag("variadic", D->isVariadic());
> -  }
> -  void visitBlockDeclChildren(BlockDecl *D) {
> -    for (FunctionDecl::param_iterator
> -           I = D->param_begin(), E = D->param_end(); I != E; ++I)
> -      dispatch(*I);
> -    dispatch(D->getBody());
> -  }
> -
> -  // AccessSpecDecl
> -  void visitAccessSpecDeclAttrs(AccessSpecDecl *D) {
> -    setAccess(D->getAccess());
> -  }
> -
> -  // TemplateDecl
> -  void visitTemplateDeclChildren(TemplateDecl *D) {
> -    visitTemplateParameters(D->getTemplateParameters());
> -    if (D->getTemplatedDecl())
> -      dispatch(D->getTemplatedDecl());
> -  }
> -
> -  // FunctionTemplateDecl
> -  void visitFunctionTemplateDeclAttrs(FunctionTemplateDecl *D) {
> -    visitRedeclarableAttrs(D);
> -  }
> -  void visitFunctionTemplateDeclChildren(FunctionTemplateDecl *D) {
> -    // Mention all the specializations which don't have explicit
> -    // declarations elsewhere.
> -    for (FunctionTemplateDecl::spec_iterator
> -           I = D->spec_begin(), E = D->spec_end(); I != E; ++I) {
> -      FunctionTemplateSpecializationInfo *Info
> -        = I->getTemplateSpecializationInfo();
> -
> -      bool Unknown = false;
> -      switch (Info->getTemplateSpecializationKind()) {
> -      case TSK_ImplicitInstantiation: Unknown = false; break;
> -      case TSK_Undeclared: Unknown = true; break;
> -
> -      // These will be covered at their respective sites.
> -      case TSK_ExplicitSpecialization: continue;
> -      case TSK_ExplicitInstantiationDeclaration: continue;
> -      case TSK_ExplicitInstantiationDefinition: continue;
> -      }
> -
> -      TemporaryContainer C(*this,
> -                           Unknown ? "uninstantiated" : "instantiation");
> -      visitTemplateArguments(*Info->TemplateArguments);
> -      dispatch(Info->Function);
> -    }
> -  }
> -
> -  // ClasTemplateDecl
> -  void visitClassTemplateDeclAttrs(ClassTemplateDecl *D) {
> -    visitRedeclarableAttrs(D);
> -  }
> -  void visitClassTemplateDeclChildren(ClassTemplateDecl *D) {
> -    // Mention all the specializations which don't have explicit
> -    // declarations elsewhere.
> -    for (ClassTemplateDecl::spec_iterator
> -           I = D->spec_begin(), E = D->spec_end(); I != E; ++I) {
> -
> -      bool Unknown = false;
> -      switch (I->getTemplateSpecializationKind()) {
> -      case TSK_ImplicitInstantiation: Unknown = false; break;
> -      case TSK_Undeclared: Unknown = true; break;
> -
> -      // These will be covered at their respective sites.
> -      case TSK_ExplicitSpecialization: continue;
> -      case TSK_ExplicitInstantiationDeclaration: continue;
> -      case TSK_ExplicitInstantiationDefinition: continue;
> -      }
> -
> -      TemporaryContainer C(*this,
> -                           Unknown ? "uninstantiated" : "instantiation");
> -      visitTemplateArguments(I->getTemplateArgs());
> -      dispatch(*I);
> -    }
> -  }
> -
> -  // TemplateTypeParmDecl
> -  void visitTemplateTypeParmDeclAttrs(TemplateTypeParmDecl *D) {
> -    setInteger("depth", D->getDepth());
> -    setInteger("index", D->getIndex());
> -  }
> -  void visitTemplateTypeParmDeclChildren(TemplateTypeParmDecl *D) {
> -    if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())
> -      dispatch(D->getDefaultArgumentInfo()->getTypeLoc());
> -    // parameter pack?
> -  }
> -
> -  // NonTypeTemplateParmDecl
> -  void visitNonTypeTemplateParmDeclAttrs(NonTypeTemplateParmDecl *D) {
> -    setInteger("depth", D->getDepth());
> -    setInteger("index", D->getIndex());
> -  }
> -  void visitNonTypeTemplateParmDeclChildren(NonTypeTemplateParmDecl *D) {
> -    if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())
> -      dispatch(D->getDefaultArgument());
> -    // parameter pack?
> -  }
> -
> -  // TemplateTemplateParmDecl
> -  void visitTemplateTemplateParmDeclAttrs(TemplateTemplateParmDecl *D) {
> -    setInteger("depth", D->getDepth());
> -    setInteger("index", D->getIndex());
> -  }
> -  void visitTemplateTemplateParmDeclChildren(TemplateTemplateParmDecl *D) {
> -    if (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())
> -      dispatch(D->getDefaultArgument());
> -    // parameter pack?
> -  }
> -
> -  // FriendDecl
> -  void visitFriendDeclChildren(FriendDecl *D) {
> -    if (TypeSourceInfo *T = D->getFriendType())
> -      dispatch(T->getTypeLoc());
> -    else
> -      dispatch(D->getFriendDecl());
> -  }
> -
> -  // UsingDirectiveDecl ?
> -  // UsingDecl ?
> -  // UsingShadowDecl ?
> -  // NamespaceAliasDecl ?
> -  // UnresolvedUsingValueDecl ?
> -  // UnresolvedUsingTypenameDecl ?
> -  // StaticAssertDecl ?
> -
> -  // ObjCImplDecl
> -  void visitObjCImplDeclChildren(ObjCImplDecl *D) {
> -    visitDeclRef(D->getClassInterface());
> -  }
> -  void visitObjCImplDeclAsContext(ObjCImplDecl *D) {
> -    visitDeclContext(D);
> -  }
> -
> -  void visitObjCInterfaceDeclAttrs(ObjCInterfaceDecl *D) {
> -    setPointer("typeptr", D->getTypeForDecl());
> -    setFlag("forward_decl", !D->isThisDeclarationADefinition());
> -    setFlag("implicit_interface", D->isImplicitInterfaceDecl());
> -  }
> -  void visitObjCInterfaceDeclChildren(ObjCInterfaceDecl *D) {
> -    visitDeclRef("super", D->getSuperClass());
> -    visitDeclRef("implementation", D->getImplementation());
> -    if (D->protocol_begin() != D->protocol_end()) {
> -      TemporaryContainer C(*this, "protocols");
> -      for (ObjCInterfaceDecl::protocol_iterator
> -             I = D->protocol_begin(), E = D->protocol_end(); I != E; ++I)
> -        visitDeclRef(*I);
> -    }
> -
> -    if (!D->visible_categories_empty()) {
> -      TemporaryContainer C(*this, "categories");
> -
> -      for (ObjCInterfaceDecl::visible_categories_iterator
> -               Cat = D->visible_categories_begin(),
> -             CatEnd = D->visible_categories_end();
> -           Cat != CatEnd; ++Cat) {
> -        visitDeclRef(*Cat);
> -      }
> -    }
> -  }
> -  void visitObjCInterfaceDeclAsContext(ObjCInterfaceDecl *D) {
> -    visitDeclContext(D);
> -  }
> -
> -  // ObjCCategoryDecl
> -  void visitObjCCategoryDeclAttrs(ObjCCategoryDecl *D) {
> -    setFlag("extension", D->IsClassExtension());
> -  }
> -  void visitObjCCategoryDeclChildren(ObjCCategoryDecl *D) {
> -    visitDeclRef("interface", D->getClassInterface());
> -    visitDeclRef("implementation", D->getImplementation());
> -    if (D->protocol_begin() != D->protocol_end()) {
> -      TemporaryContainer C(*this, "protocols");
> -      for (ObjCCategoryDecl::protocol_iterator
> -             I = D->protocol_begin(), E = D->protocol_end(); I != E; ++I)
> -        visitDeclRef(*I);
> -    }
> -  }
> -  void visitObjCCategoryDeclAsContext(ObjCCategoryDecl *D) {
> -    visitDeclContext(D);
> -  }
> -
> -  // ObjCCategoryImplDecl
> -  void visitObjCCategoryImplDeclAttrs(ObjCCategoryImplDecl *D) {
> -    set("identifier", D->getName());
> -  }
> -  void visitObjCCategoryImplDeclChildren(ObjCCategoryImplDecl *D) {
> -    visitDeclRef(D->getCategoryDecl());
> -  }
> -
> -  // ObjCImplementationDecl
> -  void visitObjCImplementationDeclAttrs(ObjCImplementationDecl *D) {
> -    set("identifier", D->getName());
> -  }
> -  void visitObjCImplementationDeclChildren(ObjCImplementationDecl *D) {
> -    visitDeclRef("super", D->getSuperClass());
> -    if (D->init_begin() != D->init_end()) {
> -      TemporaryContainer C(*this, "initializers");
> -      for (ObjCImplementationDecl::init_iterator
> -             I = D->init_begin(), E = D->init_end(); I != E; ++I)
> -        dispatch(*I);
> -    }
> -  }
> -
> -  // ObjCProtocolDecl
> -  void visitObjCProtocolDeclChildren(ObjCProtocolDecl *D) {
> -    if (!D->isThisDeclarationADefinition())
> -      return;
> -
> -    if (D->protocol_begin() != D->protocol_end()) {
> -      TemporaryContainer C(*this, "protocols");
> -      for (ObjCInterfaceDecl::protocol_iterator
> -             I = D->protocol_begin(), E = D->protocol_end(); I != E; ++I)
> -        visitDeclRef(*I);
> -    }
> -  }
> -  void visitObjCProtocolDeclAsContext(ObjCProtocolDecl *D) {
> -    if (!D->isThisDeclarationADefinition())
> -      return;
> -
> -    visitDeclContext(D);
> -  }
> -
> -  // ObjCMethodDecl
> -  void visitObjCMethodDeclAttrs(ObjCMethodDecl *D) {
> -    // decl qualifier?
> -    // implementation control?
> -
> -    setFlag("instance", D->isInstanceMethod());
> -    setFlag("variadic", D->isVariadic());
> -    setFlag("property_accessor", D->isPropertyAccessor());
> -    setFlag("defined", D->isDefined());
> -    setFlag("related_result_type", D->hasRelatedResultType());
> -  }
> -  void visitObjCMethodDeclChildren(ObjCMethodDecl *D) {
> -    dispatch(D->getResultType());
> -    for (ObjCMethodDecl::param_iterator
> -           I = D->param_begin(), E = D->param_end(); I != E; ++I)
> -      dispatch(*I);
> -    if (D->isThisDeclarationADefinition())
> -      dispatch(D->getBody());
> -  }
> -
> -  // ObjCIvarDecl
> -  void setAccessControl(StringRef prop, ObjCIvarDecl::AccessControl AC) {
> -    switch (AC) {
> -    case ObjCIvarDecl::None: return set(prop, "none");
> -    case ObjCIvarDecl::Private: return set(prop, "private");
> -    case ObjCIvarDecl::Protected: return set(prop, "protected");
> -    case ObjCIvarDecl::Public: return set(prop, "public");
> -    case ObjCIvarDecl::Package: return set(prop, "package");
> -    }
> -  }
> -  void visitObjCIvarDeclAttrs(ObjCIvarDecl *D) {
> -    setFlag("synthesize", D->getSynthesize());
> -    setAccessControl("access", D->getAccessControl());
> -  }
> -
> -  // ObjCCompatibleAliasDecl
> -  void visitObjCCompatibleAliasDeclChildren(ObjCCompatibleAliasDecl *D) {
> -    visitDeclRef(D->getClassInterface());
> -  }
> -
> -  // FIXME: ObjCPropertyDecl
> -  // FIXME: ObjCPropertyImplDecl
> -
> -  //---- Types -----------------------------------------------------//
> -  void dispatch(TypeLoc TL) {
> -    dispatch(TL.getType()); // for now
> -  }
> -
> -  void dispatch(QualType T) {
> -    if (T.hasLocalQualifiers()) {
> -      push("QualType");
> -      Qualifiers Qs = T.getLocalQualifiers();
> -      setFlag("const", Qs.hasConst());
> -      setFlag("volatile", Qs.hasVolatile());
> -      setFlag("restrict", Qs.hasRestrict());
> -      if (Qs.hasAddressSpace()) setInteger("addrspace", Qs.getAddressSpace());
> -      if (Qs.hasObjCGCAttr()) {
> -        switch (Qs.getObjCGCAttr()) {
> -        case Qualifiers::Weak: set("gc", "weak"); break;
> -        case Qualifiers::Strong: set("gc", "strong"); break;
> -        case Qualifiers::GCNone: llvm_unreachable("explicit none");
> -        }
> -      }
> -
> -      completeAttrs();
> -      dispatch(QualType(T.getTypePtr(), 0));
> -      pop();
> -      return;
> -    }
> -
> -    Type *Ty = const_cast<Type*>(T.getTypePtr());
> -    push(getTypeKindName(Ty));
> -    XMLTypeVisitor<XMLDumper>::dispatch(const_cast<Type*>(T.getTypePtr()));
> -    pop();
> -  }
> -
> -  void setCallingConv(CallingConv CC) {
> -    switch (CC) {
> -    case CC_C: return set("cc", "cdecl");
> -    case CC_X86FastCall: return set("cc", "x86_fastcall");
> -    case CC_X86StdCall: return set("cc", "x86_stdcall");
> -    case CC_X86ThisCall: return set("cc", "x86_thiscall");
> -    case CC_X86Pascal: return set("cc", "x86_pascal");
> -    case CC_X86_64Win64: return set("cc", "x86_64_win64");
> -    case CC_X86_64SysV: return set("cc", "x86_64_sysv");
> -    case CC_AAPCS: return set("cc", "aapcs");
> -    case CC_AAPCS_VFP: return set("cc", "aapcs_vfp");
> -    case CC_PnaclCall: return set("cc", "pnaclcall");
> -    case CC_IntelOclBicc: return set("cc", "intel_ocl_bicc");
> -    }
> -  }
> -
> -  void visitTypeAttrs(Type *D) {
> -    setPointer(D);
> -    setFlag("dependent", D->isDependentType());
> -    setFlag("variably_modified", D->isVariablyModifiedType());
> -
> -    setPointer("canonical", D->getCanonicalTypeInternal().getAsOpaquePtr());
> -  }
> -
> -  void visitPointerTypeChildren(PointerType *T) {
> -    dispatch(T->getPointeeType());
> -  }
> -  void visitReferenceTypeChildren(ReferenceType *T) {
> -    dispatch(T->getPointeeType());
> -  }
> -  void visitObjCObjectPointerTypeChildren(ObjCObjectPointerType *T) {
> -    dispatch(T->getPointeeType());
> -  }
> -  void visitBlockPointerTypeChildren(BlockPointerType *T) {
> -    dispatch(T->getPointeeType());
> -  }
> -
> -  // Types that just wrap declarations.
> -  void visitTagTypeChildren(TagType *T) {
> -    visitDeclRef(T->getDecl());
> -  }
> -  void visitTypedefTypeChildren(TypedefType *T) {
> -    visitDeclRef(T->getDecl());
> -  }
> -  void visitObjCInterfaceTypeChildren(ObjCInterfaceType *T) {
> -    visitDeclRef(T->getDecl());
> -  }
> -  void visitUnresolvedUsingTypeChildren(UnresolvedUsingType *T) {
> -    visitDeclRef(T->getDecl());
> -  }
> -  void visitInjectedClassNameTypeChildren(InjectedClassNameType *T) {
> -    visitDeclRef(T->getDecl());
> -  }
> -
> -  void visitFunctionTypeAttrs(FunctionType *T) {
> -    setFlag("noreturn", T->getNoReturnAttr());
> -    setCallingConv(T->getCallConv());
> -    if (T->getHasRegParm()) setInteger("regparm", T->getRegParmType());
> -  }
> -  void visitFunctionTypeChildren(FunctionType *T) {
> -    dispatch(T->getResultType());
> -  }
> -
> -  void visitFunctionProtoTypeAttrs(FunctionProtoType *T) {
> -    setFlag("const", T->isConst());
> -    setFlag("volatile", T->isVolatile());
> -    setFlag("restrict", T->isRestrict());
> -    switch (T->getExceptionSpecType()) {
> -    case EST_None: break;
> -    case EST_DynamicNone: set("exception_spec", "throw()"); break;
> -    case EST_Dynamic: set("exception_spec", "throw(T)"); break;
> -    case EST_MSAny: set("exception_spec", "throw(...)"); break;
> -    case EST_BasicNoexcept: set("exception_spec", "noexcept"); break;
> -    case EST_ComputedNoexcept: set("exception_spec", "noexcept(expr)"); break;
> -    case EST_Unevaluated: set("exception_spec", "unevaluated"); break;
> -    case EST_Uninstantiated: set("exception_spec", "uninstantiated"); break;
> -    }
> -  }
> -  void visitFunctionProtoTypeChildren(FunctionProtoType *T) {
> -    push("parameters");
> -    setFlag("variadic", T->isVariadic());
> -    completeAttrs();
> -    for (FunctionProtoType::arg_type_iterator
> -           I = T->arg_type_begin(), E = T->arg_type_end(); I != E; ++I)
> -      dispatch(*I);
> -    pop();
> -
> -    if (T->hasDynamicExceptionSpec()) {
> -      push("exception_specifiers");
> -      setFlag("any", T->getExceptionSpecType() == EST_MSAny);
> -      completeAttrs();
> -      for (FunctionProtoType::exception_iterator
> -             I = T->exception_begin(), E = T->exception_end(); I != E; ++I)
> -        dispatch(*I);
> -      pop();
> -    }
> -    // FIXME: noexcept specifier
> -  }
> -
> -  void visitTemplateSpecializationTypeChildren(TemplateSpecializationType *T) {
> -    if (const RecordType *RT = T->getAs<RecordType>())
> -      visitDeclRef(RT->getDecl());
> -
> -    // TODO: TemplateName
> -
> -    push("template_arguments");
> -    completeAttrs();
> -    for (unsigned I = 0, E = T->getNumArgs(); I != E; ++I)
> -      dispatch(T->getArg(I));
> -    pop();
> -  }
> -
> -  //---- Statements ------------------------------------------------//
> -  void dispatch(Stmt *S) {
> -    // FIXME: this is not really XML at all
> -    push("Stmt");
> -    out << ">\n";
> -    Stack.back().State = NS_Children; // explicitly become non-lazy
> -    S->dump(out, Context.getSourceManager());
> -    out << '\n';
> -    pop();
> -  }
> -};
> -}
> -
> -void Decl::dumpXML() const {
> -  dumpXML(llvm::errs());
> -}
> -
> -void Decl::dumpXML(raw_ostream &out) const {
> -  XMLDumper(out, getASTContext()).dispatch(const_cast<Decl*>(this));
> -}
> -
> -#else /* ifndef NDEBUG */
> -
> -void Decl::dumpXML() const {}
> -void Decl::dumpXML(raw_ostream &out) const {}
> -
> -#endif
>
> Modified: cfe/trunk/lib/Frontend/ASTConsumers.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTConsumers.cpp?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/ASTConsumers.cpp (original)
> +++ cfe/trunk/lib/Frontend/ASTConsumers.cpp Mon Oct  7 15:56:34 2013
> @@ -480,23 +480,3 @@ void DeclContextPrinter::PrintDeclContex
>  ASTConsumer *clang::CreateDeclContextPrinter() {
>    return new DeclContextPrinter();
>  }
> -
> -//===----------------------------------------------------------------------===//
> -/// ASTDumperXML - In-depth XML dumping.
> -
> -namespace {
> -class ASTDumpXML : public ASTConsumer {
> -  raw_ostream &OS;
> -
> -public:
> -  ASTDumpXML(raw_ostream &OS) : OS(OS) {}
> -
> -  void HandleTranslationUnit(ASTContext &C) {
> -    C.getTranslationUnitDecl()->dumpXML(OS);
> -  }
> -};
> -}
> -
> -ASTConsumer *clang::CreateASTDumperXML(raw_ostream &OS) {
> -  return new ASTDumpXML(OS);
> -}
>
> Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
> +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Mon Oct  7 15:56:34 2013
> @@ -648,8 +648,6 @@ static InputKind ParseFrontendArgs(Front
>        Opts.ProgramAction = frontend::ASTDeclList; break;
>      case OPT_ast_dump:
>        Opts.ProgramAction = frontend::ASTDump; break;
> -    case OPT_ast_dump_xml:
> -      Opts.ProgramAction = frontend::ASTDumpXML; break;
>      case OPT_ast_print:
>        Opts.ProgramAction = frontend::ASTPrint; break;
>      case OPT_ast_view:
> @@ -1540,7 +1538,6 @@ static void ParsePreprocessorOutputArgs(
>    switch (Action) {
>    case frontend::ASTDeclList:
>    case frontend::ASTDump:
> -  case frontend::ASTDumpXML:
>    case frontend::ASTPrint:
>    case frontend::ASTView:
>    case frontend::EmitAssembly:
>
> Modified: cfe/trunk/lib/Frontend/FrontendActions.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendActions.cpp?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/FrontendActions.cpp (original)
> +++ cfe/trunk/lib/Frontend/FrontendActions.cpp Mon Oct  7 15:56:34 2013
> @@ -63,17 +63,6 @@ ASTConsumer *ASTDeclListAction::CreateAS
>    return CreateASTDeclNodeLister();
>  }
>
> -ASTConsumer *ASTDumpXMLAction::CreateASTConsumer(CompilerInstance &CI,
> -                                                 StringRef InFile) {
> -  raw_ostream *OS;
> -  if (CI.getFrontendOpts().OutputFile.empty())
> -    OS = &llvm::outs();
> -  else
> -    OS = CI.createDefaultOutputFile(false, InFile);
> -  if (!OS) return 0;
> -  return CreateASTDumperXML(*OS);
> -}
> -
>  ASTConsumer *ASTViewAction::CreateASTConsumer(CompilerInstance &CI,
>                                                StringRef InFile) {
>    return CreateASTViewer();
>
> Modified: cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp?rev=192131&r1=192130&r2=192131&view=diff
> ==============================================================================
> --- cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp (original)
> +++ cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp Mon Oct  7 15:56:34 2013
> @@ -37,7 +37,6 @@ static FrontendAction *CreateFrontendBas
>    switch (CI.getFrontendOpts().ProgramAction) {
>    case ASTDeclList:            return new ASTDeclListAction();
>    case ASTDump:                return new ASTDumpAction();
> -  case ASTDumpXML:             return new ASTDumpXMLAction();
>    case ASTPrint:               return new ASTPrintAction();
>    case ASTView:                return new ASTViewAction();
>    case DumpRawTokens:          return new DumpRawTokensAction();
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list