diff --git a/include/llvm/Support/FileSystem.h b/include/llvm/Support/FileSystem.h
index 9497e4d..c1e11c0 100644
--- a/include/llvm/Support/FileSystem.h
+++ b/include/llvm/Support/FileSystem.h
@@ -162,7 +162,7 @@
   #endif
   friend bool equivalent(file_status A, file_status B);
   friend error_code status(const Twine &path, file_status &result);
-  friend error_code GetUniqueID(const Twine Path, uint64_t &Result);
+  friend error_code getUniqueID(const Twine Path, uint64_t &Result);
   file_type Type;
   perms Perms;
 public:
@@ -563,7 +563,11 @@
 ///          platform specific error_code.
 error_code identify_magic(const Twine &path, file_magic &result);
 
-error_code GetUniqueID(const Twine Path, uint64_t &Result);
+error_code getUniqueID(const Twine Path, uint64_t &Result);
+
+inline error_code GetUniqueID(const Twine Path, uint64_t &Result) {
+  return getUniqueID(Path, Result);
+}
 
 /// This class represents a memory mapped file. It is based on
 /// boost::iostreams::mapped_file.
diff --git a/lib/Support/Unix/PathV2.inc b/lib/Support/Unix/PathV2.inc
index a806083..9602daa 100644
--- a/lib/Support/Unix/PathV2.inc
+++ b/lib/Support/Unix/PathV2.inc
@@ -356,7 +356,7 @@
   return error_code::success();
 }
 
-error_code GetUniqueID(const Twine Path, uint64_t &Result) {
+error_code getUniqueID(const Twine Path, uint64_t &Result) {
   SmallString<128> Storage;
   StringRef P = Path.toNullTerminatedStringRef(Storage);
 
diff --git a/lib/Support/Windows/PathV2.inc b/lib/Support/Windows/PathV2.inc
index e6888f9..8815b0e 100644
--- a/lib/Support/Windows/PathV2.inc
+++ b/lib/Support/Windows/PathV2.inc
@@ -425,7 +425,7 @@
   return error_code::success();
 }
 
-error_code GetUniqueID(const Twine Path, uint64_t &Result) {
+error_code getUniqueID(const Twine Path, uint64_t &Result) {
   file_status Status;
   if (error_code E = status(Path, Status))
     return E;
diff --git a/unittests/Support/Path.cpp b/unittests/Support/Path.cpp
index 4f9d146..d5591ea 100644
--- a/unittests/Support/Path.cpp
+++ b/unittests/Support/Path.cpp
@@ -173,8 +173,8 @@
 
   // The same file should return an identical unique id.
   uint64_t F1, F2;
-  ASSERT_NO_ERROR(fs::GetUniqueID(Twine(TempPath), F1));
-  ASSERT_NO_ERROR(fs::GetUniqueID(Twine(TempPath), F2));
+  ASSERT_NO_ERROR(fs::getUniqueID(Twine(TempPath), F1));
+  ASSERT_NO_ERROR(fs::getUniqueID(Twine(TempPath), F2));
   ASSERT_EQ(F1, F2);
 
   // Different files should return different unique ids.
@@ -184,7 +184,7 @@
     fs::unique_file("%%-%%-%%-%%.temp", FileDescriptor2, TempPath2));
   
   uint64_t D;
-  ASSERT_NO_ERROR(fs::GetUniqueID(Twine(TempPath2), D));
+  ASSERT_NO_ERROR(fs::getUniqueID(Twine(TempPath2), D));
   ASSERT_NE(D, F1);
   ::close(FileDescriptor2);
 
@@ -194,7 +194,7 @@
   // same unique id.  We can test this by making a hard link.
   ASSERT_NO_ERROR(fs::create_hard_link(Twine(TempPath), Twine(TempPath2)));
   uint64_t D2;
-  ASSERT_NO_ERROR(fs::GetUniqueID(Twine(TempPath2), D2));
+  ASSERT_NO_ERROR(fs::getUniqueID(Twine(TempPath2), D2));
   ASSERT_EQ(D2, F1);
 
   ::close(FileDescriptor);
