diff --git a/clang/tools/clang-check/ClangCheck.cpp b/clang/tools/clang-check/ClangCheck.cpp --- a/clang/tools/clang-check/ClangCheck.cpp +++ b/clang/tools/clang-check/ClangCheck.cpp @@ -88,6 +88,9 @@ static cl::opt SyntaxTreeDump("syntax-tree-dump", cl::desc("dump the syntax tree"), cl::cat(ClangCheckCategory)); +static cl::opt TokensDump("tokens-dump", + cl::desc("dump the preprocessed tokens"), + cl::cat(ClangCheckCategory)); namespace { @@ -148,6 +151,8 @@ void HandleTranslationUnit(clang::ASTContext &AST) override { clang::syntax::TokenBuffer TB = std::move(Collector).consume(); + if (TokensDump) + llvm::outs() << TB.dumpForTests(); clang::syntax::Arena A(AST.getSourceManager(), AST.getLangOpts(), TB); llvm::outs() << clang::syntax::buildSyntaxTree(A, AST)->dump( AST.getSourceManager()); @@ -217,7 +222,7 @@ FrontendFactory = newFrontendActionFactory(); else if (Fixit) FrontendFactory = newFrontendActionFactory(); - else if (SyntaxTreeDump) + else if (SyntaxTreeDump || TokensDump) FrontendFactory = newFrontendActionFactory(); else FrontendFactory = newFrontendActionFactory(&CheckFactory);