For friend class decls, always use TK_Reference so we'll try to look up existing class decls first.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71481 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp
index f684649..e1e81ec 100644
--- a/lib/Parse/ParseDeclCXX.cpp
+++ b/lib/Parse/ParseDeclCXX.cpp
@@ -455,7 +455,7 @@
   Action::TagKind TK;
   if (Tok.is(tok::l_brace) || (getLang().CPlusPlus && Tok.is(tok::colon)))
     TK = Action::TK_Definition;
-  else if (Tok.is(tok::semi))
+  else if (Tok.is(tok::semi) && !DS.isFriendSpecified())
     TK = Action::TK_Declaration;
   else
     TK = Action::TK_Reference;
diff --git a/test/Parser/cxx-friend.cpp b/test/Parser/cxx-friend.cpp
index 5bfaf2f..ea30ddc 100644
--- a/test/Parser/cxx-friend.cpp
+++ b/test/Parser/cxx-friend.cpp
@@ -3,3 +3,15 @@
 class C {
   friend class D;
 };
+
+class A {
+public:
+	void f();
+};
+
+class B {
+  // 'A' here should refer to the declaration above.  
+  friend class A;
+
+ void f(A *a) { a->f(); }
+};