diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-04-17 19:21:43 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-04-17 19:21:43 +0000 |
commit | 84af7c27cdc615ff917a501d61256b4049383c97 (patch) | |
tree | 5dfd464d40995f9408d16f493c4a1e4686b89fc9 /lib/Frontend/PCHWriter.cpp | |
parent | 8705b4785a81a942d4633f1628bc0520b060b4e6 (diff) |
PCH support for blocks
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69373 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/PCHWriter.cpp')
-rw-r--r-- | lib/Frontend/PCHWriter.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp index 14e979f2bc..e71a60051a 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -403,7 +403,7 @@ void PCHDeclWriter::VisitFileScopeAsmDecl(FileScopeAsmDecl *D) { void PCHDeclWriter::VisitBlockDecl(BlockDecl *D) { VisitDecl(D); - // FIXME: emit block body + Writer.AddStmt(D->getBody()); Record.push_back(D->param_size()); for (FunctionDecl::param_iterator P = D->param_begin(), PEnd = D->param_end(); P != PEnd; ++P) @@ -496,6 +496,7 @@ namespace { void VisitChooseExpr(ChooseExpr *E); void VisitGNUNullExpr(GNUNullExpr *E); void VisitShuffleVectorExpr(ShuffleVectorExpr *E); + void VisitBlockExpr(BlockExpr *E); void VisitBlockDeclRefExpr(BlockDeclRefExpr *E); }; } @@ -940,6 +941,13 @@ void PCHStmtWriter::VisitShuffleVectorExpr(ShuffleVectorExpr *E) { Code = pch::EXPR_SHUFFLE_VECTOR; } +void PCHStmtWriter::VisitBlockExpr(BlockExpr *E) { + VisitExpr(E); + Writer.AddDeclRef(E->getBlockDecl(), Record); + Record.push_back(E->hasBlockDeclRefExprs()); + Code = pch::EXPR_BLOCK; +} + void PCHStmtWriter::VisitBlockDeclRefExpr(BlockDeclRefExpr *E) { VisitExpr(E); Writer.AddDeclRef(E->getDecl(), Record); |