diff -uNr llvm-3.9.0.src.orig/cmake/config-ix.cmake llvm-3.9.0.src/cmake/config-ix.cmake
--- llvm-3.9.0.src.orig/cmake/config-ix.cmake	2015-09-21 08:59:14.000000000 -0400
+++ llvm-3.9.0.src/cmake/config-ix.cmake	2015-09-21 09:42:08.000000000 -0400
@@ -323,6 +323,12 @@
 set(LLVM_HOST_TRIPLE "${LLVM_INFERRED_HOST_TRIPLE}" CACHE STRING
     "Host on which LLVM binaries will run")
 
+if( APPLE )
+get_host_osx_version(LLVM_INFERRED_OSX_VERSION)
+set(LLVM_HOST_OSX_VERSION "${LLVM_INFERRED_OSX_VERSION}" CACHE STRING
+    "Host version of Mac OS X")
+endif( APPLE )
+
 # Determine the native architecture.
 string(TOLOWER "${LLVM_TARGET_ARCH}" LLVM_NATIVE_ARCH)
 if( LLVM_NATIVE_ARCH STREQUAL "host" )
diff -uNr llvm-3.9.0.src.orig/cmake/modules/GetHostTriple.cmake llvm-3.9.0.src/cmake/modules/GetHostTriple.cmake
--- llvm-3.9.0.src.orig/cmake/modules/GetHostTriple.cmake	2015-07-04 14:35:51.000000000 -0400
+++ llvm-3.9.0.src/cmake/modules/GetHostTriple.cmake	2015-09-21 09:42:08.000000000 -0400
@@ -28,3 +28,15 @@
   set( ${var} ${value} PARENT_SCOPE )
   message(STATUS "Target triple: ${value}")
 endfunction( get_host_triple var )
+
+# Mac OS X only: get the host version
+function( get_host_osx_version var )
+  if( APPLE )
+    execute_process(COMMAND sw_vers -productVersion COMMAND cut -d. -f1-2
+      RESULT_VARIABLE TT_RV
+      OUTPUT_VARIABLE value
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
+    set( ${var} ${value} PARENT_SCOPE )
+    message(STATUS "Host OS X version: ${value}")
+  endif ( APPLE )
+endfunction( get_host_osx_version var )
diff -uNr llvm-3.9.0.src.orig/utils/lit/lit/TestRunner.py llvm-3.9.0.src/utils/lit/lit/TestRunner.py
--- llvm-3.9.0.src.orig/utils/lit/lit/TestRunner.py	2015-09-21 08:56:28.000000000 -0400
+++ llvm-3.9.0.src/utils/lit/lit/TestRunner.py	2015-09-21 09:42:08.000000000 -0400
@@ -484,11 +484,16 @@
                     return str(line_number - int(match.group(2)))
             ln = re.sub('%\(line *([\+-]) *(\d+)\)', replace_line_number, ln)
 
+            ln1 = ln.split(' ')[1];
             # Collapse lines with trailing '\\'.
             if script and script[-1][-1] == '\\':
                 script[-1] = script[-1][:-1] + ln
-            else:
+            # do not commit this patch
+            # exception: built-in shell commands and operators
+            elif ln[1] == '(' or ln[1] == '{' or ln[1] == '!' or ln[1] == '|' or ln1 == 'export' or ln1 == 'env' or ln1 == 'cd' or ln1 == 'pushd' or ln1 == 'set' or ln1 == 'test' or ln1 == 'umask' or ln1 == '%clang_profgen' or 'LLVM_PROFILE_FILE=' in ln1 or 'LLVM_PROFILE_VERBOSE_ERRORS=' in ln1:
                 script.append(ln)
+            else:
+                script.append('gtimeout 1m ' +ln)
         elif command_type == 'XFAIL':
             test.xfails.extend([s.strip() for s in ln.split(',')])
         elif command_type == 'REQUIRES':
