From 5c682bc4b8c78da970bb4f6311381884a6c7bd40 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Thu, 19 Mar 2015 18:09:25 +0000 Subject: Add -ast-dump support for new and delete expressions to help figure out which operator got selected llvm-svn: 232740 --- clang/lib/AST/ASTDumper.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'clang/lib/AST/ASTDumper.cpp') diff --git a/clang/lib/AST/ASTDumper.cpp b/clang/lib/AST/ASTDumper.cpp index 3a9aee6bdd2..6aa0a2183d8 100644 --- a/clang/lib/AST/ASTDumper.cpp +++ b/clang/lib/AST/ASTDumper.cpp @@ -508,6 +508,8 @@ namespace { void VisitCXXFunctionalCastExpr(const CXXFunctionalCastExpr *Node); void VisitCXXConstructExpr(const CXXConstructExpr *Node); void VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *Node); + void VisitCXXNewExpr(const CXXNewExpr *Node); + void VisitCXXDeleteExpr(const CXXDeleteExpr *Node); void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Node); void VisitExprWithCleanups(const ExprWithCleanups *Node); void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *Node); @@ -1917,6 +1919,28 @@ void ASTDumper::VisitCXXBindTemporaryExpr(const CXXBindTemporaryExpr *Node) { dumpCXXTemporary(Node->getTemporary()); } +void ASTDumper::VisitCXXNewExpr(const CXXNewExpr *Node) { + VisitExpr(Node); + OS << ' '; + if (Node->isGlobalNew()) + OS << "global "; + if (Node->isArray()) + OS << "array "; + dumpBareDeclRef(Node->getOperatorNew()); + // We could dump the deallocation function used in case of error, but it's + // usually not that interesting. +} + +void ASTDumper::VisitCXXDeleteExpr(const CXXDeleteExpr *Node) { + VisitExpr(Node); + OS << ' '; + if (Node->isGlobalDelete()) + OS << "global "; + if (Node->isArrayForm()) + OS << "array "; + dumpBareDeclRef(Node->getOperatorDelete()); +} + void ASTDumper::VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *Node) { VisitExpr(Node); -- cgit v1.2.3