diff options
author | Chris Lattner <sabre@nondot.org> | 2010-05-09 05:36:05 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-05-09 05:36:05 +0000 |
commit | b7e7f722a25ece99834a6d9e447b2e89e7c5a56a (patch) | |
tree | c2dc3d80a4fd04a1fb56ec84f6fa5a7a6a4d1302 /clang/lib/Frontend | |
parent | 82828a31f67e1eba976dbcfada8d4f26a127845c (diff) | |
download | bcm5719-llvm-b7e7f722a25ece99834a6d9e447b2e89e7c5a56a.tar.gz bcm5719-llvm-b7e7f722a25ece99834a6d9e447b2e89e7c5a56a.zip |
pchify CXXMemberCallExpr correctly. Before it would serialize
and deserialize as a CallExpr which is close, but ends up
deserializing with the wrong stmt class.
llvm-svn: 103371
Diffstat (limited to 'clang/lib/Frontend')
-rw-r--r-- | clang/lib/Frontend/PCHReaderStmt.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Frontend/PCHWriterStmt.cpp | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHReaderStmt.cpp b/clang/lib/Frontend/PCHReaderStmt.cpp index ef6b77026d7..394a894e4e4 100644 --- a/clang/lib/Frontend/PCHReaderStmt.cpp +++ b/clang/lib/Frontend/PCHReaderStmt.cpp @@ -1304,6 +1304,10 @@ Stmt *PCHReader::ReadStmt(llvm::BitstreamCursor &Cursor) { case pch::EXPR_CXX_OPERATOR_CALL: S = new (Context) CXXOperatorCallExpr(*Context, Empty); break; + + case pch::EXPR_CXX_MEMBER_CALL: + S = new (Context) CXXMemberCallExpr(*Context, Empty); + break; case pch::EXPR_CXX_CONSTRUCT: S = new (Context) CXXConstructExpr(Empty, *Context, diff --git a/clang/lib/Frontend/PCHWriterStmt.cpp b/clang/lib/Frontend/PCHWriterStmt.cpp index a1993d37f2d..3c2022ea998 100644 --- a/clang/lib/Frontend/PCHWriterStmt.cpp +++ b/clang/lib/Frontend/PCHWriterStmt.cpp @@ -112,6 +112,7 @@ namespace { // C++ Statements void VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E); + void VisitCXXMemberCallExpr(CXXMemberCallExpr *E); void VisitCXXConstructExpr(CXXConstructExpr *E); void VisitCXXNamedCastExpr(CXXNamedCastExpr *E); void VisitCXXStaticCastExpr(CXXStaticCastExpr *E); @@ -848,6 +849,11 @@ void PCHStmtWriter::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *E) { Code = pch::EXPR_CXX_OPERATOR_CALL; } +void PCHStmtWriter::VisitCXXMemberCallExpr(CXXMemberCallExpr *E) { + VisitCallExpr(E); + Code = pch::EXPR_CXX_MEMBER_CALL; +} + void PCHStmtWriter::VisitCXXConstructExpr(CXXConstructExpr *E) { VisitExpr(E); Writer.AddDeclRef(E->getConstructor(), Record); |