diff --git a/include/llvm/Support/MD5.h b/include/llvm/Support/MD5.h
index 38bdbae..b2b8c2d 100644
--- a/include/llvm/Support/MD5.h
+++ b/include/llvm/Support/MD5.h
@@ -49,9 +49,12 @@
 
   MD5();
 
-  /// \brief Updates the hash for arguments provided.
+  /// \brief Updates the hash for the byte stream provided.
   void update(ArrayRef<uint8_t> Data);
 
+  /// \brief Updates the hash for the StringRef provided.
+  void update(StringRef Str);
+
   /// \brief Finishes off the hash and puts the result in result.
   void final(MD5Result &result);
 
diff --git a/lib/Support/MD5.cpp b/lib/Support/MD5.cpp
index 8f18068..514466c 100644
--- a/lib/Support/MD5.cpp
+++ b/lib/Support/MD5.cpp
@@ -219,6 +219,14 @@
   memcpy(buffer, Ptr, Size);
 }
 
+/// Add the bytes in the StringRef \p Str to the hash.
+// Note that this isn't a string and so this won't include any trailing NULL
+// bytes.
+void MD5::update(StringRef Str) {
+  ArrayRef<uint8_t> SVal((const uint8_t *)Str.data(), Str.size());
+  update(SVal);
+}
+
 /// \brief Finish the hash and place the resulting hash into \p result.
 /// \param result is assumed to be a minimum of 16-bytes in size.
 void MD5::final(MD5Result &result) {
diff --git a/unittests/Support/MD5Test.cpp b/unittests/Support/MD5Test.cpp
index c5658ec..7c1331b 100644
--- a/unittests/Support/MD5Test.cpp
+++ b/unittests/Support/MD5Test.cpp
@@ -30,22 +30,31 @@
   EXPECT_EQ(Res, Final);
 }
 
+void TestMD5Sum(StringRef Input, StringRef Final) {
+  MD5 Hash;
+  Hash.update(Input);
+  MD5::MD5Result MD5Res;
+  Hash.final(MD5Res);
+  SmallString<32> Res;
+  MD5::stringifyResult(MD5Res, Res);
+  EXPECT_EQ(Res, Final);
+}
+
 TEST(MD5Test, MD5) {
   TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"", (size_t) 0),
              "d41d8cd98f00b204e9800998ecf8427e");
   TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"a", (size_t) 1),
              "0cc175b9c0f1b6a831c399e269772661");
-  TestMD5Sum(ArrayRef<uint8_t>(
-                 (const uint8_t *)"abcdefghijklmnopqrstuvwxyz",
-                 (size_t) 26),
+  TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"abcdefghijklmnopqrstuvwxyz",
+                               (size_t) 26),
              "c3fcd3d76192e4007dfb496cca67e13b");
   TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"\0", (size_t) 1),
              "93b885adfe0da089cdf634904fd59f71");
   TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"a\0", (size_t) 2),
              "4144e195f46de78a3623da7364d04f11");
-  TestMD5Sum(ArrayRef<uint8_t>(
-                 (const uint8_t *)"abcdefghijklmnopqrstuvwxyz\0",
-                 (size_t) 27),
+  TestMD5Sum(ArrayRef<uint8_t>((const uint8_t *)"abcdefghijklmnopqrstuvwxyz\0",
+                               (size_t) 27),
              "81948d1f1554f58cd1a56ebb01f808cb");
+  TestMD5Sum("abcdefghijklmnopqrstuvwxyz", "c3fcd3d76192e4007dfb496cca67e13b");
 }
 }
