summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/PCHReaderStmt.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-06-28 09:31:56 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2010-06-28 09:31:56 +0000
commitcd444d1af7e1a6a9722e005ef2a011962f5bf63f (patch)
tree0dab09703e5e04e925306a20c90c8c7017c25a59 /clang/lib/Frontend/PCHReaderStmt.cpp
parentb5288de67c8682f77c414ecfdd14af3692dde9e5 (diff)
downloadbcm5719-llvm-cd444d1af7e1a6a9722e005ef2a011962f5bf63f.tar.gz
bcm5719-llvm-cd444d1af7e1a6a9722e005ef2a011962f5bf63f.zip
Support DependentScopeDeclRefExpr for PCH.
llvm-svn: 106998
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 a2334d7330b..5f9ee3b25f8 100644
--- a/clang/lib/Frontend/PCHReaderStmt.cpp
+++ b/clang/lib/Frontend/PCHReaderStmt.cpp
@@ -147,6 +147,7 @@ namespace {
unsigned VisitCXXExprWithTemporaries(CXXExprWithTemporaries *E);
unsigned VisitCXXDependentScopeMemberExpr(CXXDependentScopeMemberExpr *E);
+ unsigned VisitDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E);
unsigned VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E);
unsigned VisitOverloadExpr(OverloadExpr *E);
@@ -1185,6 +1186,26 @@ PCHStmtReader::VisitCXXDependentScopeMemberExpr(CXXDependentScopeMemberExpr *E){
}
unsigned
+PCHStmtReader::VisitDependentScopeDeclRefExpr(DependentScopeDeclRefExpr *E) {
+ VisitExpr(E);
+ unsigned NumExprs = 0;
+
+ unsigned NumTemplateArgs = Record[Idx++];
+ assert((NumTemplateArgs != 0) == E->hasExplicitTemplateArgs() &&
+ "Read wrong record during creation ?");
+ if (E->hasExplicitTemplateArgs())
+ NumExprs
+ = ReadExplicitTemplateArgumentList(E->getExplicitTemplateArgs(),
+ NumTemplateArgs, StmtStack.end());
+
+ E->setDeclName(Reader.ReadDeclarationName(Record, Idx));
+ E->setLocation(Reader.ReadSourceLocation(Record, Idx));
+ E->setQualifierRange(Reader.ReadSourceRange(Record, Idx));
+ E->setQualifier(Reader.ReadNestedNameSpecifier(Record, Idx));
+ return NumExprs;
+}
+
+unsigned
PCHStmtReader::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E) {
VisitExpr(E);
assert(Record[Idx] == E->arg_size() && "Read wrong record during creation ?");
@@ -1635,6 +1656,11 @@ Stmt *PCHReader::ReadStmt(llvm::BitstreamCursor &Cursor) {
/*NumTemplateArgs=*/Record[PCHStmtReader::NumExprFields]);
break;
+ case pch::EXPR_CXX_DEPENDENT_SCOPE_DECL_REF:
+ S = DependentScopeDeclRefExpr::CreateEmpty(*Context,
+ /*NumTemplateArgs=*/Record[PCHStmtReader::NumExprFields]);
+ break;
+
case pch::EXPR_CXX_UNRESOLVED_CONSTRUCT:
S = CXXUnresolvedConstructExpr::CreateEmpty(*Context,
/*NumArgs=*/Record[PCHStmtReader::NumExprFields]);
OpenPOWER on IntegriCloud