diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp
index ec8b02ffcadf8a5e2451c5248605fab8e3976384..61d2f7fb63feb5c589b8ca47aee2588b7d85a14e 100644
--- a/lib/Format/Format.cpp
+++ b/lib/Format/Format.cpp
@@ -282,7 +282,9 @@ private:
         return FirstLessLess < Other.FirstLessLess;
       if (BreakBeforeClosingBrace != Other.BreakBeforeClosingBrace)
         return BreakBeforeClosingBrace;
-      return BreakAfterComma;
+      if (BreakAfterComma != Other.BreakAfterComma)
+        return BreakAfterComma;
+      return false;
     }
   };
 
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 84ce0c1e06d3b7e8fc7575e13dbacb779d5e9664..668e8af76bc586a8b610933d2e5ecfb446e9aaae 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -681,6 +681,24 @@ TEST_F(FormatTest, ConstructorInitializers) {
                      "    : some_var_(var),  // 4 space indent\n"
                      "      some_other_var_(var + 1) {  // lined up\n"
                      "}");
+
+  // This test takes VERY long when memoization is broken.
+  verifyGoogleFormat(
+      "Constructor()\n"
+      "    : aaaa(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,"
+      " a, a, a,\n"
+      "           a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,"
+      " a, a, a,\n"
+      "           a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,"
+      " a, a, a,\n"
+      "           a, a, a, a, a, a, a, a, a, a, a)\n"
+      "      aaaa(a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,"
+      " a, a, a,\n"
+      "           a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,"
+      " a, a, a,\n"
+      "           a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a,"
+      " a, a, a,\n"
+      "           a, a, a, a, a, a, a, a, a, a, a) {}\n");
 }
 
 TEST_F(FormatTest, BreaksAsHighAsPossible) {