summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTDumper.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-03-19 18:09:25 +0000
committerReid Kleckner <reid@kleckner.net>2015-03-19 18:09:25 +0000
commit5c682bc4b8c78da970bb4f6311381884a6c7bd40 (patch)
tree4b656e734462cab9b8ccc6d8f2aa23a474658db8 /clang/lib/AST/ASTDumper.cpp
parente4f77deaebadd8399bc3c7944304695d51a56365 (diff)
downloadbcm5719-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.cpp24
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);
OpenPOWER on IntegriCloud