 +// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodule-cache-path %t -emit-module -fmodule-name=redecl_templates_left %S/Inputs/module.map
 +// RUN: %clang_cc1 -fmodules -x objective-c++ -fmodule-cache-path %t -emit-module -fmodule-name=redecl_templates_right %S/Inputs/module.map
 +// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -w %s -emit-obj -o %t.obj
-+// RUN: echo 'int call(); int main(int,char*[]) { return call(); }' | %clang -x objective-c++ - -c -o %t_main.obj
++// RUN: echo 'int call(); int main(int,char*[]) { return call(); }' | %clang -x objective-c++ -fmodules -fmodule-cache-path %t - -c -o %t_main.obj
 +// RUN: %clang -lstdc++ %t_main.obj %t.obj
-+// XFAIL: *
 Index: tools/clang/test/Modules/Inputs/module.map
 ===================================================================
 --- tools/clang/test/Modules/Inputs/module.map	(revision 161655)

         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; }
