 +   class AB: public virtual AA<char> {};
 +   */
 +
-+   // template <typename T> int fwddeclThenDefinedInLeftRight(T);
-+
-+   // int usesfwddeclThenDefinedInLeftRightToo() {
-+   //    return fwddeclThenDefinedInLeftRight((float)1); }
-+
-+   // template <typename T> int fwddeclThenDefinedInLeftRight(T) { return 0; }
++  //template <typename T> int fwddeclThenDefinedInLeftRight(T);
++
++  // int usesfwddeclThenDefinedInLeftRightToo() {
++  //   return fwddeclThenDefinedInLeftRight((float)1); 
++  // }
++
++  // template <typename T> int fwddeclThenDefinedInLeftRight(T) { return 0; }
 +
 +  template <typename T> int definedInLeft(T);
 +
-+   // template <typename T> int definedInLeftSpecializedInRight(T);
-+   // template <> int definedInLeftSpecializedInRight<char>(char) { return 1; }
-+   // int usesdefinedInLeftSpecializedInRightChar() {
-+   //    return definedInLeftSpecializedInRight((char)0); }
++  // template <typename T> int definedInLeftSpecializedInRight(T);
++  // template <> int definedInLeftSpecializedInRight<char>(char) { return 1; }
++  // int usesdefinedInLeftSpecializedInRightChar() {
++  //   return definedInLeftSpecializedInRight((char)0); 
++  // }
 +//}
 Index: tools/clang/test/Modules/Inputs/redecl_templates_left.h
 ===================================================================

   }
 }
 
@@ -1846,9 +1889,11 @@
                                                    cast<NamespaceDecl>(Latest));
   } else {
     RedeclarableTemplateDecl *TD = cast<RedeclarableTemplateDecl>(D);

   }
 }
 
@@ -2125,9 +2171,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.
