diff --git a/test/lit.cfg b/test/lit.cfg
index 35f38aa..f444b2f 100644
--- a/test/lit.cfg
+++ b/test/lit.cfg
@@ -2,6 +2,9 @@
 
 import os
 import platform
+import re
+import subprocess
+
 
 # Configuration file for the 'lit' test runner.
 
@@ -145,11 +148,22 @@
 # Note that when substituting %clang_cc1 also fill in the include directory of
 # the builtin headers. Those are part of even a freestanding environment, but
 # Clang relies on the driver to locate them.
-# FIXME: It might be nice to teach the frontend how to find its builtin headers
-# in some limited cases when the driver provides no hints.
+def getClangVersion(clang):
+    # FIXME: Rather than just getting the version, we should have clang print
+    # out its resource dir here in an easy to scrape form.
+    cmd = subprocess.Popen([clang, '-v'], stderr=subprocess.PIPE)
+
+    for line in cmd.stderr:
+        m = re.match( r'^clang version ([^ ]+) ', line)
+        if m is not None:
+            return m.group(1)
+
+    lit.fatal("Couldn't find the version of Clang ('%s')" % clang)
+
 clang_directory = os.path.dirname(os.path.realpath(config.clang))
 clang_builtin_includes = os.path.join(os.path.dirname(clang_directory),
-                                      'lib', 'clang', '3.0', 'include')
+                                      'lib', 'clang',
+                                      getClangVersion(config.clang), 'include')
 config.substitutions.append( ('%clang_cc1',
                               '%s -cc1 -internal-nosysroot-isystem %s'
                               % (config.clang, clang_builtin_includes)) )
@@ -187,10 +201,6 @@
     config.available_features.add('shell')
 
 # Registered Targets
-import subprocess
-import re
-import os
-
 def getRegisteredTargets(tool):
     set_of_targets = set()
 
