          if (ND->getDeclName() != This->Name) {
            assert(!This->Name.getCXXNameType().isNull() && 
                   "Name mismatch without a type");
-@@ -5571,7 +5577,11 @@
+@@ -5571,7 +5574,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,30 @@
+// template <typename T> int foo(T);
+// int usesfootoo() { return foo((float)1); }
+// template <typename T> int foo(T) { return 0; }

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