diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-12-14 00:03:17 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-12-14 00:03:17 +0000 |
commit | 993e3aa6b96adce7b48000b9ba4ff27266c87104 (patch) | |
tree | ed30c61c2b9049285621eba3e33ac172ac5b787e /lib/Serialization/ASTReaderStmt.cpp | |
parent | 6503e97e0f2d8032e9daeb4c8cfef00c409bd9f3 (diff) |
Remove custom handling of array copies in lambda by-value array capture and
copy constructors of classes with array members, instead using
ArrayInitLoopExpr to represent the initialization loop.
This exposed a bug in the static analyzer where it was unable to differentiate
between zero-initialized and unknown array values, which has also been fixed
here.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@289618 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Serialization/ASTReaderStmt.cpp')
-rw-r--r-- | lib/Serialization/ASTReaderStmt.cpp | 16 |
1 files changed, 1 insertions, 15 deletions
diff --git a/lib/Serialization/ASTReaderStmt.cpp b/lib/Serialization/ASTReaderStmt.cpp index 461bb9f8d4..dcadfdcc50 100644 --- a/lib/Serialization/ASTReaderStmt.cpp +++ b/lib/Serialization/ASTReaderStmt.cpp @@ -1287,7 +1287,6 @@ void ASTStmtReader::VisitLambdaExpr(LambdaExpr *E) { VisitExpr(E); unsigned NumCaptures = Record[Idx++]; assert(NumCaptures == E->NumCaptures);(void)NumCaptures; - unsigned NumArrayIndexVars = Record[Idx++]; E->IntroducerRange = ReadSourceRange(Record, Idx); E->CaptureDefault = static_cast<LambdaCaptureDefault>(Record[Idx++]); E->CaptureDefaultLoc = ReadSourceLocation(Record, Idx); @@ -1300,17 +1299,6 @@ void ASTStmtReader::VisitLambdaExpr(LambdaExpr *E) { CEnd = E->capture_init_end(); C != CEnd; ++C) *C = Reader.ReadSubExpr(); - - // Read array capture index variables. - if (NumArrayIndexVars > 0) { - unsigned *ArrayIndexStarts = E->getArrayIndexStarts(); - for (unsigned I = 0; I != NumCaptures + 1; ++I) - ArrayIndexStarts[I] = Record[Idx++]; - - VarDecl **ArrayIndexVars = E->getArrayIndexVars(); - for (unsigned I = 0; I != NumArrayIndexVars; ++I) - ArrayIndexVars[I] = ReadDeclAs<VarDecl>(Record, Idx); - } } void @@ -3875,9 +3863,7 @@ Stmt *ASTReader::ReadStmtFromStream(ModuleFile &F) { case EXPR_LAMBDA: { unsigned NumCaptures = Record[ASTStmtReader::NumExprFields]; - unsigned NumArrayIndexVars = Record[ASTStmtReader::NumExprFields + 1]; - S = LambdaExpr::CreateDeserialized(Context, NumCaptures, - NumArrayIndexVars); + S = LambdaExpr::CreateDeserialized(Context, NumCaptures); break; } } |