Index: lib/Sema/SemaDeclCXX.cpp
===================================================================
--- lib/Sema/SemaDeclCXX.cpp	(revision 214301)
+++ lib/Sema/SemaDeclCXX.cpp	(working copy)
@@ -5945,9 +5945,9 @@
       if (!MD->isVirtual())
         continue;
       // If the method we are checking overrides a method from its base
-      // don't warn about the other overloaded methods.
+      // don't warn about it.
       if (!Data.S->IsOverload(Data.Method, MD, false))
-        return true;
+        continue;
       // Collect the overload only if its hidden.
       if (!CheckMostOverridenMethods(MD, Data.OverridenAndUsingBaseMethods))
         overloadedMethods.push_back(MD);
Index: test/SemaCXX/warn-overloaded-virtual.cpp
===================================================================
--- test/SemaCXX/warn-overloaded-virtual.cpp	(revision 214301)
+++ test/SemaCXX/warn-overloaded-virtual.cpp	(working copy)
@@ -1,7 +1,8 @@
 // RUN: %clang_cc1 -fsyntax-only -Woverloaded-virtual -verify %s
 
 struct B1 {
-  virtual void foo(int); // expected-note {{declared here}}
+  virtual void foo(int); // expected-note {{declared here}} \
+                         // expected-note {{hidden overloaded virtual function 'B1::foo' declared here: different number of parameters (1 vs 0)}}
   virtual void foo(); // expected-note {{declared here}}
 };
 
@@ -10,7 +11,8 @@
 };
 
 struct S2 : public B1 {
-  void foo(); // expected-note {{declared here}}
+  void foo(); // expected-note {{declared here}} \
+              // expected-warning {{hides overloaded virtual function}}
 };
 
 struct B2 {
@@ -138,3 +140,14 @@
     // expected-warning@-1{{hides overloaded virtual functions}}
   };
 }
+
+namespace {
+struct base {
+  virtual void foo(int) {}
+  virtual void foo(char) {}  // expected-note {{hidden overloaded virtual function '(anonymous namespace)::base::foo' declared here: type mismatch at 1st parameter ('char' vs 'int')}}
+};
+
+struct derived : public base {
+  void foo(int) {}  // expected-warning {{'(anonymous namespace)::derived::foo' hides overloaded virtual function}}
+};
+}
