diff --git a/AST/StmtSerialization.cpp b/AST/StmtSerialization.cpp
index 437d8c6..86d52a4 100644
--- a/AST/StmtSerialization.cpp
+++ b/AST/StmtSerialization.cpp
@@ -56,6 +56,9 @@
     case CharacterLiteralClass:
       return CharacterLiteral::directMaterialize(D);
       
+    case CompoundAssignOperatorClass:
+      return CompoundAssignOperator::directMaterialize(D);
+      
     case CompoundStmtClass:
       return CompoundStmt::directMaterialize(D);
       
@@ -228,6 +231,26 @@
   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<Opcode>(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);
