Index: include/clang/Frontend/ASTConsumers.h =================================================================== --- include/clang/Frontend/ASTConsumers.h +++ include/clang/Frontend/ASTConsumers.h @@ -40,6 +40,13 @@ bool DumpDecls, bool Deserialize, bool DumpLookups); +// AST dumper: dumps the raw AST in human-readable form to the given output +// stream. +std::unique_ptr CreateASTDumper(std::unique_ptr OS, + StringRef FilterString, + bool DumpDecls, bool Deserialize, + bool DumpLookups); + // AST Decl node lister: prints qualified names of all filterable AST Decl // nodes. std::unique_ptr CreateASTDeclNodeLister(); Index: lib/Frontend/ASTConsumers.cpp =================================================================== --- lib/Frontend/ASTConsumers.cpp +++ lib/Frontend/ASTConsumers.cpp @@ -142,8 +142,18 @@ bool DumpDecls, bool Deserialize, bool DumpLookups) { + return CreateASTDumper(nullptr, FilterString, + DumpDecls, Deserialize, DumpLookups); +} + +std::unique_ptr +clang::CreateASTDumper(std::unique_ptr Out, + StringRef FilterString, + bool DumpDecls, + bool Deserialize, + bool DumpLookups) { assert((DumpDecls || Deserialize || DumpLookups) && "nothing to dump"); - return llvm::make_unique(nullptr, + return llvm::make_unique(std::move(Out), Deserialize ? ASTPrinter::DumpFull : DumpDecls ? ASTPrinter::Dump : ASTPrinter::None,