Index: test/SemaTemplate/explicit-specialization-nested-class-templates.cpp
===================================================================
--- test/SemaTemplate/explicit-specialization-nested-class-templates.cpp	(revision 0)
+++ test/SemaTemplate/explicit-specialization-nested-class-templates.cpp	(revision 0)
@@ -0,0 +1,34 @@
+// RUN: %clang_cc1 %s -fsyntax-only -verify
+
+namespace template_class_spec_perClassDecl_nested
+{
+template <typename T1> struct A {
+    template <typename T2> struct B {
+        template <typename T3> struct C {
+            static void foo();
+        };
+    };
+};
+
+template <> struct A<int> {
+    template <typename T2> struct B {
+        template <typename T3> struct C {
+            static void foo();
+        };
+    };
+};
+
+template <> template <typename T3> struct A<int>::B<int>::C {
+    static void foo();
+};
+
+template <> template <> struct A<int>::B<int>::C<int> {
+    static void foo();
+};
+
+template <> template<> template <typename T2> struct A<bool>::B<bool>::C {
+    static void foo();
+};
+
+}
+
Index: lib/Sema/SemaTemplate.cpp
===================================================================
--- lib/Sema/SemaTemplate.cpp	(revision 132392)
+++ lib/Sema/SemaTemplate.cpp	(working copy)
@@ -1650,7 +1650,7 @@
         if (Spec->getSpecializationKind() != TSK_ExplicitSpecialization)
           NeedEmptyTemplateHeader = true;
         else
-          break;
+          continue;
       } else if (Record->getTemplateSpecializationKind()) {
         if (Record->getTemplateSpecializationKind() 
                                                 != TSK_ExplicitSpecialization &&
