Recognize the UNAME_RELEASE environment variable to match Darwin's uname.
When this variable is set, "uname -r" will return its value instead of the
real OS version.  Make this affect LLVM's triple for consistency.
<rdar://problem/9919167>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137111 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Support/Unix/Host.inc b/lib/Support/Unix/Host.inc
index 5fd0e5e..0f3e31a 100644
--- a/lib/Support/Unix/Host.inc
+++ b/lib/Support/Unix/Host.inc
@@ -22,12 +22,18 @@
 #include <sys/utsname.h>
 #include <cctype>
 #include <string>
+#include <cstdlib> // ::getenv
 
 using namespace llvm;
 
 static std::string getOSVersion() {
   struct utsname info;
 
+  // Recognize UNAME_RELEASE environment variable to match Darwin uname.
+  const char *UnameOverride = ::getenv("UNAME_RELEASE");
+  if (UnameOverride && UnameOverride[0] != '\0')
+    return UnameOverride;
+
   if (uname(&info))
     return "";