forked from OSchip/llvm-project
Revised serialization of CaseStmt to emit all of the owned pointers (its
subexpressions) all together in one block at the end. llvm-svn: 43862
This commit is contained in:
parent
89704afa43
commit
a34b057762
|
@ -190,17 +190,14 @@ CallExpr* CallExpr::directMaterialize(Deserializer& D) {
|
|||
void CaseStmt::directEmit(Serializer& S) const {
|
||||
S.Emit(CaseLoc);
|
||||
S.EmitPtr(getNextSwitchCase());
|
||||
S.BatchEmitOwnedPtrs(getLHS(),getRHS(),getSubStmt());
|
||||
S.BatchEmitOwnedPtrs((unsigned) END_EXPR,&SubExprs[0]);
|
||||
}
|
||||
|
||||
CaseStmt* CaseStmt::directMaterialize(Deserializer& D) {
|
||||
SourceLocation CaseLoc = SourceLocation::ReadVal(D);
|
||||
Expr *LHS, *RHS;
|
||||
Stmt* SubStmt;
|
||||
D.BatchReadOwnedPtrs(LHS,RHS,SubStmt);
|
||||
|
||||
CaseStmt* stmt = new CaseStmt(LHS,RHS,SubStmt,CaseLoc);
|
||||
stmt->setNextSwitchCase(D.ReadPtr<SwitchCase>());
|
||||
CaseStmt* stmt = new CaseStmt(NULL,NULL,NULL,CaseLoc);
|
||||
D.ReadPtr(stmt->NextSwitchCase);
|
||||
D.BatchReadOwnedPtrs((unsigned) END_EXPR,&stmt->SubExprs[0]);
|
||||
return stmt;
|
||||
}
|
||||
|
||||
|
|
|
@ -231,10 +231,11 @@ public:
|
|||
|
||||
// SwitchCase is the base class for CaseStmt and DefaultStmt,
|
||||
class SwitchCase : public Stmt {
|
||||
protected:
|
||||
// A pointer to the following CaseStmt or DefaultStmt class,
|
||||
// used by SwitchStmt.
|
||||
SwitchCase *NextSwitchCase;
|
||||
protected:
|
||||
|
||||
SwitchCase(StmtClass SC) : Stmt(SC), NextSwitchCase(0) {}
|
||||
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue