    }  
    PendingInstantiations.clear();
  }
-@@ -6468,6 +6478,9 @@
+@@ -6468,6 +6475,9 @@
  }
  
  ASTReader::~ASTReader() {

         if (ND->getDeclName() != This->Name) {
           assert(!This->Name.getCXXNameType().isNull() && 
                  "Name mismatch without a type");
@@ -5571,7 +5577,11 @@
     ValueDecl *D = cast<ValueDecl>(GetDecl(PendingInstantiations[Idx++]));
     SourceLocation Loc
       = SourceLocation::getFromRawEncoding(PendingInstantiations[Idx++]);

===================================================================
--- tools/clang/test/Modules/redecl-templates.mm	(revision 0)
+++ tools/clang/test/Modules/redecl-templates.mm	(revision 0)
@@ -0,0 +1,29 @@
+// template <typename T> int foo(T);
+// int usesfootoo() { return foo((float)1); }
+// template <typename T> int foo(T) { return 0; }
