Added serialization/deserialization of DeclStmts.
Reordered stmt serialization method implementations to be in alphabetical order.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43796 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index 95897fd..485876d 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -30,24 +30,43 @@
default:
assert (false && "Not implemented.");
return NULL;
+
+ case BinaryOperatorClass:
+ return BinaryOperator::directMaterialize(D);
case CompoundStmtClass:
return CompoundStmt::directMaterialize(D);
- case ReturnStmtClass:
- return ReturnStmt::directMaterialize(D);
-
- case BinaryOperatorClass:
- return BinaryOperator::directMaterialize(D);
-
case DeclRefExprClass:
return DeclRefExpr::directMaterialize(D);
+ case DeclStmtClass:
+ return DeclStmt::directMaterialize(D);
+
case IntegerLiteralClass:
- return IntegerLiteral::directMaterialize(D);
+ return IntegerLiteral::directMaterialize(D);
+
+ case ReturnStmtClass:
+ return ReturnStmt::directMaterialize(D);
}
}
+void BinaryOperator::directEmit(llvm::Serializer& S) const {
+ S.EmitInt(Opc);
+ S.Emit(OpLoc);;
+ S.Emit(getType());
+ S.EmitOwnedPtr(getLHS());
+ S.EmitOwnedPtr(getRHS());
+}
+
+BinaryOperator* BinaryOperator::directMaterialize(llvm::Deserializer& D) {
+ Opcode Opc = static_cast<Opcode>(D.ReadInt());
+ SourceLocation OpLoc = SourceLocation::ReadVal(D);
+ QualType Result = QualType::ReadVal(D);
+ Expr* LHS = D.ReadOwnedPtr<Expr>();
+ Expr* RHS = D.ReadOwnedPtr<Expr>();
+ return new BinaryOperator(LHS,RHS,Opc,Result,OpLoc);
+}
void CompoundStmt::directEmit(llvm::Serializer& S) const {
@@ -74,34 +93,9 @@
return stmt;
}
-
-void ReturnStmt::directEmit(llvm::Serializer& S) const {
- S.Emit(RetLoc);
- S.EmitOwnedPtr(RetExpr);
-}
-
-ReturnStmt* ReturnStmt::directMaterialize(llvm::Deserializer& D) {
- SourceLocation RetLoc = SourceLocation::ReadVal(D);
- Expr* RetExpr = D.ReadOwnedPtr<Expr>();
- return new ReturnStmt(RetLoc,RetExpr);
-}
-
-
-void BinaryOperator::directEmit(llvm::Serializer& S) const {
- S.EmitInt(Opc);
- S.Emit(OpLoc);;
- S.Emit(getType());
- S.EmitOwnedPtr(getLHS());
- S.EmitOwnedPtr(getRHS());
-}
-
-BinaryOperator* BinaryOperator::directMaterialize(llvm::Deserializer& D) {
- Opcode Opc = static_cast<Opcode>(D.ReadInt());
- SourceLocation OpLoc = SourceLocation::ReadVal(D);
- QualType Result = QualType::ReadVal(D);
- Expr* LHS = D.ReadOwnedPtr<Expr>();
- Expr* RHS = D.ReadOwnedPtr<Expr>();
- return new BinaryOperator(LHS,RHS,Opc,Result,OpLoc);
+void DeclStmt::directEmit(llvm::Serializer& S) const {
+ // FIXME: special handling for struct decls.
+ S.EmitOwnedPtr(getDecl());
}
void DeclRefExpr::directEmit(llvm::Serializer& S) const {
@@ -118,6 +112,12 @@
return dr;
}
+DeclStmt* DeclStmt::directMaterialize(llvm::Deserializer& D) {
+ ScopedDecl* decl = cast<ScopedDecl>(D.ReadOwnedPtr<Decl>());
+ return new DeclStmt(decl);
+}
+
+
void IntegerLiteral::directEmit(llvm::Serializer& S) const {
S.Emit(Loc);
S.Emit(getType());
@@ -136,4 +136,16 @@
return expr;
}
-
+
+
+void ReturnStmt::directEmit(llvm::Serializer& S) const {
+ S.Emit(RetLoc);
+ S.EmitOwnedPtr(RetExpr);
+}
+
+ReturnStmt* ReturnStmt::directMaterialize(llvm::Deserializer& D) {
+ SourceLocation RetLoc = SourceLocation::ReadVal(D);
+ Expr* RetExpr = D.ReadOwnedPtr<Expr>();
+ return new ReturnStmt(RetLoc,RetExpr);
+}
+