diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/AST/Stmt.cpp | 9 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 11 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 2 |
3 files changed, 14 insertions, 8 deletions
diff --git a/clang/lib/AST/Stmt.cpp b/clang/lib/AST/Stmt.cpp index b03b3a68375..8e1a2b0bd42 100644 --- a/clang/lib/AST/Stmt.cpp +++ b/clang/lib/AST/Stmt.cpp @@ -311,9 +311,10 @@ int64_t Stmt::getID(const ASTContext &Context) const { CompoundStmt::CompoundStmt(ArrayRef<Stmt *> Stmts, SourceLocation LB, SourceLocation RB) - : Stmt(CompoundStmtClass), LBraceLoc(LB), RBraceLoc(RB) { + : Stmt(CompoundStmtClass), RBraceLoc(RB) { CompoundStmtBits.NumStmts = Stmts.size(); setStmts(Stmts); + CompoundStmtBits.LBraceLoc = LB; } void CompoundStmt::setStmts(ArrayRef<Stmt *> Stmts) { @@ -836,13 +837,14 @@ bool IfStmt::isObjCAvailabilityCheck() const { ForStmt::ForStmt(const ASTContext &C, Stmt *Init, Expr *Cond, VarDecl *condVar, Expr *Inc, Stmt *Body, SourceLocation FL, SourceLocation LP, SourceLocation RP) - : Stmt(ForStmtClass), ForLoc(FL), LParenLoc(LP), RParenLoc(RP) + : Stmt(ForStmtClass), LParenLoc(LP), RParenLoc(RP) { SubExprs[INIT] = Init; setConditionVariable(C, condVar); SubExprs[COND] = Cond; SubExprs[INC] = Inc; SubExprs[BODY] = Body; + ForStmtBits.ForLoc = FL; } VarDecl *ForStmt::getConditionVariable() const { @@ -871,6 +873,7 @@ SwitchStmt::SwitchStmt(const ASTContext &C, Stmt *init, VarDecl *Var, SubExprs[INIT] = init; SubExprs[COND] = cond; SubExprs[BODY] = nullptr; + SwitchStmtBits.SwitchLoc = SourceLocation{}; } VarDecl *SwitchStmt::getConditionVariable() const { @@ -904,7 +907,7 @@ WhileStmt::WhileStmt(const ASTContext &C, VarDecl *Var, Expr *cond, Stmt *body, setConditionVariable(C, Var); SubExprs[COND] = cond; SubExprs[BODY] = body; - WhileLoc = WL; + WhileStmtBits.WhileLoc = WL; } VarDecl *WhileStmt::getConditionVariable() const { diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index a80cd81c3a9..535eeea8154 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -154,7 +154,7 @@ void ASTStmtReader::VisitStmt(Stmt *S) { void ASTStmtReader::VisitNullStmt(NullStmt *S) { VisitStmt(S); S->setSemiLoc(ReadSourceLocation()); - S->HasLeadingEmptyMacro = Record.readInt(); + S->NullStmtBits.HasLeadingEmptyMacro = Record.readInt(); } void ASTStmtReader::VisitCompoundStmt(CompoundStmt *S) { @@ -164,7 +164,7 @@ void ASTStmtReader::VisitCompoundStmt(CompoundStmt *S) { while (NumStmts--) Stmts.push_back(Record.readSubStmt()); S->setStmts(Stmts); - S->LBraceLoc = ReadSourceLocation(); + S->CompoundStmtBits.LBraceLoc = ReadSourceLocation(); S->RBraceLoc = ReadSourceLocation(); } @@ -199,15 +199,18 @@ void ASTStmtReader::VisitLabelStmt(LabelStmt *S) { void ASTStmtReader::VisitAttributedStmt(AttributedStmt *S) { VisitStmt(S); + // NumAttrs in AttributedStmt is set when creating an empty + // AttributedStmt in AttributedStmt::CreateEmpty, since it is needed + // to allocate the right amount of space for the trailing Attr *. uint64_t NumAttrs = Record.readInt(); AttrVec Attrs; Record.readAttributes(Attrs); (void)NumAttrs; - assert(NumAttrs == S->NumAttrs); + assert(NumAttrs == S->AttributedStmtBits.NumAttrs); assert(NumAttrs == Attrs.size()); std::copy(Attrs.begin(), Attrs.end(), S->getAttrArrayPtr()); S->SubStmt = Record.readSubStmt(); - S->AttrLoc = ReadSourceLocation(); + S->AttributedStmtBits.AttrLoc = ReadSourceLocation(); } void ASTStmtReader::VisitIfStmt(IfStmt *S) { diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index 21051d866d2..fa5c3596853 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -73,7 +73,7 @@ void ASTStmtWriter::VisitStmt(Stmt *S) { void ASTStmtWriter::VisitNullStmt(NullStmt *S) { VisitStmt(S); Record.AddSourceLocation(S->getSemiLoc()); - Record.push_back(S->HasLeadingEmptyMacro); + Record.push_back(S->NullStmtBits.HasLeadingEmptyMacro); Code = serialization::STMT_NULL; } |

