diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index f22c0ab..d721536 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -104,6 +104,7 @@
   LLVMStyle.SplitTemplateClosingGreater = true;
   LLVMStyle.IndentCaseLabels = false;
   LLVMStyle.SpacesBeforeTrailingComments = 1;
+  LLVMStyle.ObjCSpaceBeforeProtocolList = true;
   return LLVMStyle;
 }
 
@@ -116,6 +117,7 @@
   GoogleStyle.SplitTemplateClosingGreater = false;
   GoogleStyle.IndentCaseLabels = true;
   GoogleStyle.SpacesBeforeTrailingComments = 2;
+  GoogleStyle.ObjCSpaceBeforeProtocolList = false;
   return GoogleStyle;
 }
 
@@ -974,7 +976,9 @@
       return Right.is(tok::hash);
     if (Right.is(tok::r_paren) || Right.is(tok::semi) || Right.is(tok::comma))
       return false;
-    if (Left.is(tok::kw_template) && Right.is(tok::less))
+    if (Right.is(tok::less) &&
+        (Left.is(tok::kw_template) ||
+         (CurrentLineType == LT_ObjCDecl && Style.ObjCSpaceBeforeProtocolList)))
       return true;
     if (Left.is(tok::arrow) || Right.is(tok::arrow))
       return false;
diff --git a/test/Index/comment-objc-decls.m b/test/Index/comment-objc-decls.m
index 9b9805f..ae3b0bb 100644
--- a/test/Index/comment-objc-decls.m
+++ b/test/Index/comment-objc-decls.m
@@ -73,7 +73,7 @@
 */
 @property (copy) id PropertyMyClass;
 @end
-// CHECK: <Declaration>@interface MyClass : NSObject&lt;MyProto&gt; {\n    id IvarMyClass;\n}\n@end</Declaration>
+// CHECK: <Declaration>@interface MyClass : NSObject &lt;MyProto&gt; {\n    id IvarMyClass;\n}\n@end</Declaration>
 // CHECK: <Declaration>id IvarMyClass</Declaration>
 // CHECK: <Declaration>- (id)MethodMyClass;</Declaration>
 // CHECK: <Declaration>+ (id)ClassMethodMyClass;</Declaration>
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index b55cad7..9d29880 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -1186,7 +1186,7 @@
 TEST_F(FormatTest, FormatObjCInterface) {
   // FIXME: Handle comments like in "@interface /* wait for it */ Foo", PR14875
   // FIXME: In google style, it's "+(id) init", not "+ (id)init".
-  verifyFormat("@interface Foo : NSObject<NSSomeDelegate> {\n"
+  verifyFormat("@interface Foo : NSObject <NSSomeDelegate> {\n"
                "@public\n"
                "  int field1;\n"
                "@protected\n"
@@ -1199,7 +1199,6 @@
                "+ (id)init;\n"
                "@end");
 
-  // FIXME: In LLVM style, there should be a space before '<' for protocols.
   verifyGoogleFormat("@interface Foo : NSObject<NSSomeDelegate> {\n"
                      " @public\n"
                      "  int field1;\n"
@@ -1228,10 +1227,14 @@
                "+ (id)init;\n"
                "@end");
 
-  verifyFormat("@interface Foo : Bar<Baz, Quux>\n"
+  verifyFormat("@interface Foo : Bar <Baz, Quux>\n"
                "+ (id)init;\n"
                "@end");
 
+  verifyGoogleFormat("@interface Foo : Bar<Baz, Quux>\n"
+                     "+ (id)init;\n"
+                     "@end");
+
   verifyFormat("@interface Foo (HackStuff)\n"
                "+ (id)init;\n"
                "@end");
@@ -1240,10 +1243,14 @@
                "+ (id)init;\n"
                "@end");
 
-  verifyFormat("@interface Foo (HackStuff)<MyProtocol>\n"
+  verifyFormat("@interface Foo (HackStuff) <MyProtocol>\n"
                "+ (id)init;\n"
                "@end");
 
+  verifyGoogleFormat("@interface Foo (HackStuff)<MyProtocol>\n"
+                     "+ (id)init;\n"
+                     "@end");
+
   verifyFormat("@interface Foo {\n"
                "  int _i;\n"
                "}\n"
@@ -1256,7 +1263,7 @@
                "+ (id)init;\n"
                "@end");
 
-  verifyFormat("@interface Foo : Bar<Baz, Quux> {\n"
+  verifyFormat("@interface Foo : Bar <Baz, Quux> {\n"
                "  int _i;\n"
                "}\n"
                "+ (id)init;\n"
@@ -1274,7 +1281,7 @@
                "+ (id)init;\n"
                "@end");
 
-  verifyFormat("@interface Foo (HackStuff)<MyProtocol> {\n"
+  verifyFormat("@interface Foo (HackStuff) <MyProtocol> {\n"
                "  int _i;\n"
                "}\n"
                "+ (id)init;\n"
@@ -1351,11 +1358,14 @@
                "- (NSUInteger)numberOfThings;\n"
                "@end");
 
-  // FIXME: In LLVM style, there should be a space before '<' for protocols.
-  verifyFormat("@protocol MyProtocol<NSObject>\n"
+  verifyFormat("@protocol MyProtocol <NSObject>\n"
                "- (NSUInteger)numberOfThings;\n"
                "@end");
 
+  verifyGoogleFormat("@protocol MyProtocol<NSObject>\n"
+                     "- (NSUInteger)numberOfThings;\n"
+                     "@end");
+
   verifyFormat("@protocol Foo;\n"
                "@protocol Bar;\n");
 
