aboutsummaryrefslogtreecommitdiff
path: root/lib/AST
diff options
context:
space:
mode:
authorBen Langmuir <ben.langmuir@intel.com>2013-05-03 19:20:19 +0000
committerBen Langmuir <ben.langmuir@intel.com>2013-05-03 19:20:19 +0000
commitdc5be4f54d6415cb88b2f8a7c5bc9011e332b9b8 (patch)
treec0601b4fba10524868f196d5ee845dec53db48f6 /lib/AST
parent0f2fc5ff49cb9abd6c6972ffd6db066295672867 (diff)
Serialization for captured statements
Add serialization for captured statements and captured decls. Also add a const_capture_iterator to CapturedStmt. Test contributed by Wei Pan Differential Revision: http://llvm-reviews.chandlerc.com/D727 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181048 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST')
-rw-r--r--lib/AST/Decl.cpp9
-rw-r--r--lib/AST/Stmt.cpp4
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index 01fbc3b2e0..1f4248c8e5 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -3249,10 +3249,17 @@ MSPropertyDecl *MSPropertyDecl::CreateDeserialized(ASTContext &C,
CapturedDecl *CapturedDecl::Create(ASTContext &C, DeclContext *DC,
unsigned NumParams) {
- unsigned Size = sizeof(CapturedDecl) + NumParams *sizeof(ImplicitParamDecl*);
+ unsigned Size = sizeof(CapturedDecl) + NumParams * sizeof(ImplicitParamDecl*);
return new (C.Allocate(Size)) CapturedDecl(DC, NumParams);
}
+CapturedDecl *CapturedDecl::CreateDeserialized(ASTContext &C, unsigned ID,
+ unsigned NumParams) {
+ unsigned Size = sizeof(CapturedDecl) + NumParams * sizeof(ImplicitParamDecl*);
+ void *Mem = AllocateDeserializedDecl(C, ID, Size);
+ return new (Mem) CapturedDecl(0, NumParams);
+}
+
EnumConstantDecl *EnumConstantDecl::Create(ASTContext &C, EnumDecl *CD,
SourceLocation L,
IdentifierInfo *Id, QualType T,
diff --git a/lib/AST/Stmt.cpp b/lib/AST/Stmt.cpp
index 888a148b96..0db97d2967 100644
--- a/lib/AST/Stmt.cpp
+++ b/lib/AST/Stmt.cpp
@@ -1124,8 +1124,8 @@ Stmt::child_range CapturedStmt::children() {
}
bool CapturedStmt::capturesVariable(const VarDecl *Var) const {
- for (capture_iterator I = capture_begin(),
- E = capture_end(); I != E; ++I) {
+ for (const_capture_iterator I = capture_begin(),
+ E = capture_end(); I != E; ++I) {
if (I->capturesThis())
continue;