diff options
author | Reid Kleckner <reid@kleckner.net> | 2015-03-19 18:09:25 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2015-03-19 18:09:25 +0000 |
commit | 5c682bc4b8c78da970bb4f6311381884a6c7bd40 (patch) | |
tree | 4b656e734462cab9b8ccc6d8f2aa23a474658db8 /clang/lib/AST/ASTDumper.cpp | |
parent | e4f77deaebadd8399bc3c7944304695d51a56365 (diff) | |
download | bcm5719-llvm-5c682bc4b8c78da970bb4f6311381884a6c7bd40.tar.gz bcm5719-llvm-5c682bc4b8c78da970bb4f6311381884a6c7bd40.zip |
Add -ast-dump support for new and delete expressions to help figure out which operator got selected
llvm-svn: 232740
Diffstat (limited to 'clang/lib/AST/ASTDumper.cpp')
-rw-r--r-- | clang/lib/AST/ASTDumper.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
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); |