    if (!Reader.getContext().getLangOpts().Modules)
      return;
    
-@@ -1731,7 +1738,16 @@
+@@ -1731,7 +1739,16 @@
      return (FuncX->getLinkage() == FuncY->getLinkage()) &&
        FuncX->getASTContext().hasSameType(FuncX->getType(), FuncY->getType());
    }

   }
 }
 
@@ -2125,9 +2170,16 @@
   // AST consumer might need to know about, queue it.
   // We don't pass it to the consumer immediately because we may be in recursive
   // loading, and some declarations may still be initializing.

         return FindExistingResult(Reader, D, *R.first);
     }
   }
@@ -1798,22 +1823,41 @@
 void ASTDeclReader::attachPreviousDecl(Decl *D, Decl *previous) {
   assert(D && previous);
   if (TagDecl *TD = dyn_cast<TagDecl>(D)) {
