diff options
Diffstat (limited to 'lib/Frontend/PCHWriterStmt.cpp')
-rw-r--r-- | lib/Frontend/PCHWriterStmt.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Frontend/PCHWriterStmt.cpp b/lib/Frontend/PCHWriterStmt.cpp index e042e77c6b..e64ebbe8a3 100644 --- a/lib/Frontend/PCHWriterStmt.cpp +++ b/lib/Frontend/PCHWriterStmt.cpp @@ -125,6 +125,7 @@ namespace { void VisitCXXTypeidExpr(CXXTypeidExpr *E); void VisitCXXThisExpr(CXXThisExpr *E); void VisitCXXThrowExpr(CXXThrowExpr *E); + void VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E); }; } @@ -934,11 +935,25 @@ void PCHStmtWriter::VisitCXXThisExpr(CXXThisExpr *E) { } void PCHStmtWriter::VisitCXXThrowExpr(CXXThrowExpr *E) { + VisitExpr(E); Writer.AddSourceLocation(E->getThrowLoc(), Record); Writer.WriteSubStmt(E->getSubExpr()); Code = pch::EXPR_CXX_THROW; } +void PCHStmtWriter::VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { + VisitExpr(E); + Writer.AddSourceLocation(E->getUsedLocation(), Record); + if (E->isExprStored()) { + Record.push_back(1); + Writer.WriteSubStmt(E->getExpr()); + } else { + Record.push_back(0); + } + + Code = pch::EXPR_CXX_DEFAULT_ARG; +} + //===----------------------------------------------------------------------===// // PCHWriter Implementation |