Keep track in chained PCH of implicit members that were added after the definition was completed.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117240 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp
index f371514..0e70053 100644
--- a/lib/AST/DeclCXX.cpp
+++ b/lib/AST/DeclCXX.cpp
@@ -364,12 +364,11 @@
   }
   
   if (D->isImplicit()) {
-    // Notify the serializer that an implicit member changed the definition.
-    // A chained PCH will write the whole definition again.
-    // FIXME: Make a notification about the specific change (through a listener
-    // interface) so the changes that the serializer records are more
-    // fine grained.
-    data().Definition->setChangedSinceDeserialization(true);
+    // Notify that an implicit member was added after the definition
+    // was completed.
+    if (!isBeingDefined())
+      if (ASTMutationListener *L = getASTMutationListener())
+        L->AddedCXXImplicitMember(data().Definition, D);
 
     if (CXXConstructorDecl *Constructor = dyn_cast<CXXConstructorDecl>(D)) {
       // If this is the implicit default constructor, note that we have now