diff options
author | Anders Carlsson <andersca@mac.com> | 2009-08-12 00:21:52 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-08-12 00:21:52 +0000 |
commit | 0eca1b609a2a272b6af1a3ead48186c8a15ae9b4 (patch) | |
tree | 6a6b8162c2599802e886b789bd110de840818a73 | |
parent | f29d8f6e880509da73cef59273def5ba5ac7b3c2 (diff) |
Add some information about temporaries to the statement dumper.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78754 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AST/StmtDumper.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/AST/StmtDumper.cpp b/lib/AST/StmtDumper.cpp index bc096bf0d9..1087b0d6f2 100644 --- a/lib/AST/StmtDumper.cpp +++ b/lib/AST/StmtDumper.cpp @@ -137,6 +137,10 @@ namespace { void VisitCXXBoolLiteralExpr(CXXBoolLiteralExpr *Node); void VisitCXXThisExpr(CXXThisExpr *Node); void VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *Node); + void VisitCXXConstructExpr(CXXConstructExpr *Node); + void VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *Node); + void VisitCXXExprWithTemporaries(CXXExprWithTemporaries *Node); + void DumpCXXTemporary(CXXTemporary *Temporary); // ObjC void VisitObjCEncodeExpr(ObjCEncodeExpr *Node); @@ -451,6 +455,33 @@ void StmtDumper::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *Node) { Node->getTypeAsWritten().getAsString().c_str()); } +void StmtDumper::VisitCXXConstructExpr(CXXConstructExpr *Node) { + DumpExpr(Node); + if (Node->isElidable()) + fprintf(F, "elidable"); +} + +void StmtDumper::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *Node) { + DumpExpr(Node); + fprintf(F, " "); + DumpCXXTemporary(Node->getTemporary()); +} + +void StmtDumper::VisitCXXExprWithTemporaries(CXXExprWithTemporaries *Node) { + DumpExpr(Node); + ++IndentLevel; + for (unsigned i = 0, e = Node->getNumTemporaries(); i != e; ++i) { + fprintf(F, "\n"); + Indent(); + DumpCXXTemporary(Node->getTemporary(i)); + } + --IndentLevel; +} + +void StmtDumper::DumpCXXTemporary(CXXTemporary *Temporary) { + fprintf(F, "(CXXTemporary %p)", (void *)Temporary); +} + //===----------------------------------------------------------------------===// // Obj-C Expressions //===----------------------------------------------------------------------===// |