summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/PCHReaderStmt.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-06-28 09:32:03 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-06-28 09:32:03 +0000
commit99a226dde4004378ea3ebd92327dd7970451cb47 (patch)
treed4e07d4f870516c381752fbd3ce199f93ca358e4 /clang/lib/Frontend/PCHReaderStmt.cpp
parentcd444d1af7e1a6a9722e005ef2a011962f5bf63f (diff)
downloadbcm5719-llvm-99a226dde4004378ea3ebd92327dd7970451cb47.tar.gz
bcm5719-llvm-99a226dde4004378ea3ebd92327dd7970451cb47.zip
Support CXXPseudoDestructorExpr for PCH.
llvm-svn: 106999
Diffstat (limited to 'clang/lib/Frontend/PCHReaderStmt.cpp')
-rw-r--r--clang/lib/Frontend/PCHReaderStmt.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHReaderStmt.cpp b/clang/lib/Frontend/PCHReaderStmt.cpp
index 5f9ee3b25f8..5f27a7da9a3 100644
--- a/clang/lib/Frontend/PCHReaderStmt.cpp
+++ b/clang/lib/Frontend/PCHReaderStmt.cpp
@@ -143,6 +143,7 @@ namespace {
unsigned VisitCXXZeroInitValueExpr(CXXZeroInitValueExpr *E);
unsigned VisitCXXNewExpr(CXXNewExpr *E);
unsigned VisitCXXDeleteExpr(CXXDeleteExpr *E);
+ unsigned VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E);
unsigned VisitCXXExprWithTemporaries(CXXExprWithTemporaries *E);
@@ -1146,6 +1147,28 @@ unsigned PCHStmtReader::VisitCXXDeleteExpr(CXXDeleteExpr *E) {
return 1;
}
+unsigned
+PCHStmtReader::VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E) {
+ VisitExpr(E);
+
+ E->setBase(cast_or_null<Expr>(StmtStack.back()));
+ E->setArrow(Record[Idx++]);
+ E->setOperatorLoc(Reader.ReadSourceLocation(Record, Idx));
+ E->setQualifier(Reader.ReadNestedNameSpecifier(Record, Idx));
+ E->setQualifierRange(Reader.ReadSourceRange(Record, Idx));
+ E->setScopeTypeInfo(Reader.GetTypeSourceInfo(Record, Idx));
+ E->setColonColonLoc(Reader.ReadSourceLocation(Record, Idx));
+ E->setTildeLoc(Reader.ReadSourceLocation(Record, Idx));
+
+ IdentifierInfo *II = Reader.GetIdentifierInfo(Record, Idx);
+ if (II)
+ E->setDestroyedType(II, Reader.ReadSourceLocation(Record, Idx));
+ else
+ E->setDestroyedType(Reader.GetTypeSourceInfo(Record, Idx));
+
+ return 1;
+}
+
unsigned PCHStmtReader::VisitCXXExprWithTemporaries(CXXExprWithTemporaries *E) {
VisitExpr(E);
unsigned NumTemps = Record[Idx++];
@@ -1646,6 +1669,9 @@ Stmt *PCHReader::ReadStmt(llvm::BitstreamCursor &Cursor) {
case pch::EXPR_CXX_DELETE:
S = new (Context) CXXDeleteExpr(Empty);
break;
+ case pch::EXPR_CXX_PSEUDO_DESTRUCTOR:
+ S = new (Context) CXXPseudoDestructorExpr(Empty);
+ break;
case pch::EXPR_CXX_EXPR_WITH_TEMPORARIES:
S = new (Context) CXXExprWithTemporaries(Empty);
OpenPOWER on IntegriCloud