From: Ted Kremenek Date: Thu, 8 Nov 2007 00:41:37 +0000 (+0000) Subject: Implemented serialization of CompoundAssignOperator. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=83efb151a0c1df8cb8fb25d6dbb6c0f12f07f60a;p=clang Implemented serialization of CompoundAssignOperator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43860 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp index 437d8c6e48..86d52a4f68 100644 --- a/AST/StmtSerialization.cpp +++ b/AST/StmtSerialization.cpp @@ -56,6 +56,9 @@ Stmt* Stmt::Materialize(Deserializer& D) { case CharacterLiteralClass: return CharacterLiteral::directMaterialize(D); + case CompoundAssignOperatorClass: + return CompoundAssignOperator::directMaterialize(D); + case CompoundStmtClass: return CompoundStmt::directMaterialize(D); @@ -228,6 +231,26 @@ CharacterLiteral* CharacterLiteral::directMaterialize(Deserializer& D) { return new CharacterLiteral(value,T,Loc); } +void CompoundAssignOperator::directEmit(Serializer& S) const { + S.Emit(getType()); + S.Emit(ComputationType); + S.Emit(getOperatorLoc()); + S.EmitInt(getOpcode()); + S.BatchEmitOwnedPtrs(getLHS(),getRHS()); +} + +CompoundAssignOperator* +CompoundAssignOperator::directMaterialize(Deserializer& D) { + QualType t = QualType::ReadVal(D); + QualType c = QualType::ReadVal(D); + SourceLocation L = SourceLocation::ReadVal(D); + Opcode Opc = static_cast(D.ReadInt()); + Expr* LHS, *RHS; + D.BatchReadOwnedPtrs(LHS,RHS); + + return new CompoundAssignOperator(LHS,RHS,Opc,t,c,L); +} + void CompoundStmt::directEmit(Serializer& S) const { S.Emit(LBracLoc); S.Emit(RBracLoc); diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index e62b16400b..b46da509b1 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -878,6 +878,9 @@ public: static bool classof(const Stmt *S) { return S->getStmtClass() == CompoundAssignOperatorClass; } + + virtual void directEmit(llvm::Serializer& S) const; + static CompoundAssignOperator* directMaterialize(llvm::Deserializer& D); }; /// ConditionalOperator - The ?: operator. Note that LHS may be null when the