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