diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-05-10 00:25:06 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-05-10 00:25:06 +0000 | 
| commit | cba86142a4afdbcaa494f176621297fb1d6deb49 (patch) | |
| tree | 338f44dc6f244fe23777701e4ece43e0f1ecf302 /clang/lib/Frontend/PCHWriterStmt.cpp | |
| parent | 89eaeba0f780709a1943faae9138f49b6761c620 (diff) | |
| download | bcm5719-llvm-cba86142a4afdbcaa494f176621297fb1d6deb49.tar.gz bcm5719-llvm-cba86142a4afdbcaa494f176621297fb1d6deb49.zip | |
pchify CXXTemporary, CXXBindTemporaryExpr, and 
CXXExprWithTemporaries.
llvm-svn: 103387
Diffstat (limited to 'clang/lib/Frontend/PCHWriterStmt.cpp')
| -rw-r--r-- | clang/lib/Frontend/PCHWriterStmt.cpp | 28 | 
1 files changed, 26 insertions, 2 deletions
| diff --git a/clang/lib/Frontend/PCHWriterStmt.cpp b/clang/lib/Frontend/PCHWriterStmt.cpp index e64ebbe8a31..8c566d00fb7 100644 --- a/clang/lib/Frontend/PCHWriterStmt.cpp +++ b/clang/lib/Frontend/PCHWriterStmt.cpp @@ -126,6 +126,9 @@ namespace {      void VisitCXXThisExpr(CXXThisExpr *E);      void VisitCXXThrowExpr(CXXThrowExpr *E);      void VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E); +    void VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E); +     +    void VisitCXXExprWithTemporaries(CXXExprWithTemporaries *E);    };  } @@ -954,6 +957,23 @@ void PCHStmtWriter::VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) {    Code = pch::EXPR_CXX_DEFAULT_ARG;  } +void PCHStmtWriter::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E) { +  VisitExpr(E); +  Writer.AddCXXTemporary(E->getTemporary(), Record); +  Writer.WriteSubStmt(E->getSubExpr()); +  Code = pch::EXPR_CXX_BIND_TEMPORARY; +} + +void PCHStmtWriter::VisitCXXExprWithTemporaries(CXXExprWithTemporaries *E) { +  VisitExpr(E); +  Record.push_back(E->getNumTemporaries()); +  for (unsigned i = 0, e = E->getNumTemporaries(); i != e; ++i) +    Writer.AddCXXTemporary(E->getTemporary(i), Record); +   +  Writer.WriteSubStmt(E->getSubExpr()); +  Code = pch::EXPR_CXX_EXPR_WITH_TEMPORARIES; +} +  //===----------------------------------------------------------------------===//  // PCHWriter Implementation @@ -1021,8 +1041,12 @@ void PCHWriter::FlushStmts() {      Writer.Code = pch::STMT_NULL_PTR;      Writer.Visit(S); -    assert(Writer.Code != pch::STMT_NULL_PTR && -           "Unhandled expression writing PCH file"); +#ifndef NDEBUG +    if (Writer.Code == pch::STMT_NULL_PTR) { +      S->dump(); +      assert(0 && "Unhandled expression writing PCH file"); +    } +#endif      Stream.EmitRecord(Writer.Code, Record);      assert(N == StmtsToEmit.size() && | 

