diff --git a/CMake/RunTests/CMakeLists.txt b/CMake/RunTests/CMakeLists.txt
deleted file mode 100644
index fe838ef..0000000
--- a/CMake/RunTests/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-# Project that runs the Clang regression tests for a given glob pattern. 
-#
-# There are several CMake cache variabes that must be set for this
-# project to work:
-#
-#   CLANG_TEST_RUNNER: The TestRunner.sh shell script, which is used to test
-#   Clang.
-#
-#   CLANG_TEST_GLOB_PATTERNS: Set to a GLOB pattern to identify the kind of
-#   tests, e.g., *.cpp for C++ tests.
-#
-#   LLVM_TOOLS_PATH: The directory where the Clang and LLVM tool
-#   executables (such as opt) are generated.
-#
-#   LLVM_SCRIPTS_PATH: The directory where the LLVM test scripts are
-#   located.
-cmake_minimum_required(VERSION 2.6)
-project(ClangTest)
-
-enable_testing()
-
-# Computes the normalized name of a test from its path name.
-macro(compute_test_name var filename)
-  get_filename_component(test_name ${filename} NAME_WE)
-  get_filename_component(test_path ${filename} PATH)
-  get_filename_component(test_lastpath ${test_path} NAME_WE)
-  set(${var} "${test_lastpath}-${test_name}")
-endmacro()
-
-# FIXME: This is a hack to make sure that there is a proper "clean" target.
-# There must be a better way.
-file(WRITE dummy.c "int dummy() { return 0; }")
-add_library(dummy dummy.c)
-set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "dummy.c")
-
-# Set the path appropriately
-set(PATH $ENV{PATH})
-set(PATH "${LLVM_TOOLS_PATH}:${LLVM_SCRIPTS_PATH}:${PATH}")
-
-# Find the test files
-string(REPLACE ":" ";" CLANG_TEST_GLOB_PATTERNS ${CLANG_TEST_GLOB_PATTERNS})
-separate_arguments(CLANG_TEST_GLOB_PATTERNS)
-file(GLOB_RECURSE tests ${CLANG_TEST_GLOB_PATTERNS})
-
-# Add individual tests for each file we found.
-foreach(test ${tests})
-  compute_test_name(testname ${test})
-  add_test(${testname} ${CLANG_TEST_RUNNER} ${test})
-  set_tests_properties(${testname} PROPERTIES
-    ENVIRONMENT "PATH=${PATH}")
-endforeach(test ${tests})
\ No newline at end of file
diff --git a/CMake/RunTests/dummy.c b/CMake/RunTests/dummy.c
deleted file mode 100644
index ddba74f..0000000
--- a/CMake/RunTests/dummy.c
+++ /dev/null
@@ -1 +0,0 @@
-int dummy() { return 0; }
\ No newline at end of file
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index cdf4571..ba5a025 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -2,40 +2,52 @@
   DOC "Clang's regression testing script")
 mark_as_advanced(CLANG_TEST_RUNNER)
 
-get_target_property(LLVM_TOOLS_PATH clang RUNTIME_OUTPUT_DIRECTORY)
+set(CLANG_TEST_DIRECTORIES
+  "Analysis"
+  "CodeGen"
+  "CodeGenCXX"
+  "CodeGenObjC"
+  "Coverage"
+  "Driver"
+  "FixIt"
+  "Frontend"
+  "Lexer"
+  "Misc"
+  "PCH"
+  "Parser"
+  "Preprocessor"
+  "Rewriter"
+  "Sema"
+  "SemaCXX"
+  "SemaObjC"
+  "SemaObjCXX"
+  "SemaTemplate")
 
-macro(add_clang_test_suite language target)
-  set(PATTERNS)
-  foreach (extension ${ARGN})
-    set(PATTERNS "${PATTERNS}:${CMAKE_CURRENT_SOURCE_DIR}/*.${extension}")
+include(FindPythonInterp)
+if(PYTHONINTERP_FOUND)
+  get_target_property(LLVM_TOOLS_PATH clang RUNTIME_OUTPUT_DIRECTORY)
+  set(TESTING_EXTRA_PATHS
+      "${LLVM_TOOLS_PATH}/${CMAKE_CFG_INTDIR}:${LLVM_SOURCE_DIR}/test/Scripts")
+  set(all_testdirs)
+  foreach(testdir ${CLANG_TEST_DIRECTORIES})
+   add_custom_target(clang-test-${testdir} 
+      ${PYTHON_EXECUTABLE} 
+      ${LLVM_SOURCE_DIR}/tools/clang/utils/test/MultiTestRunner.py
+      -s
+      "--path=${TESTING_EXTRA_PATHS}"
+      ${CMAKE_CURRENT_SOURCE_DIR}/${testdir}/
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+      COMMENT "Running Clang regression tests in ${testdir}")
+
+    list(APPEND all_testdirs ${CMAKE_CURRENT_SOURCE_DIR}/${testdir}/)
   endforeach()
 
-  if (${language} STREQUAL "ALL")
-    set(TEST_COMMENT "Running Clang regression tests")
-  else()
-    set(TEST_COMMENT "Running Clang ${language} regression tests")
-  endif ()
-
-  add_custom_target(${target}
-    ${CMAKE_CTEST_COMMAND}
-    --build-and-test
-    ${LLVM_SOURCE_DIR}/tools/clang/CMake/RunTests
-    ${CMAKE_CURRENT_BINARY_DIR}/${target}
-    --build-generator ${CMAKE_GENERATOR}
-    --build-makeprogram ${CMAKE_MAKE_PROGRAM}
-    --build-project ClangTest
-    --build-target test
-    --build-options 
-    "-DCLANG_TEST_RUNNER=${CLANG_TEST_RUNNER}"
-    "-DCLANG_TEST_GLOB_PATTERNS=${PATTERNS}"
-    "-DLLVM_TOOLS_PATH=${LLVM_TOOLS_PATH}"
-    "-DLLVM_SCRIPTS_PATH=${LLVM_SOURCE_DIR}/test/Scripts"
-    COMMENT ${TEST_COMMENT})
-endmacro(add_clang_test_suite)
-
-add_clang_test_suite(C clang-test-c c)
-add_clang_test_suite(Objective-C clang-test-objc m)
-add_clang_test_suite(C++ clang-test-cxx cpp)
-add_clang_test_suite(Objective-C++ clang-test-objcxx mm)
-add_clang_test_suite(Assembler clang-test-asm S)
-add_clang_test_suite(ALL clang-test c m cpp mm S)
\ No newline at end of file
+  add_custom_target(clang-test
+    ${PYTHON_EXECUTABLE} 
+    ${LLVM_SOURCE_DIR}/tools/clang/utils/test/MultiTestRunner.py
+    "--path=${TESTING_EXTRA_PATHS}"
+    ${all_testdirs}
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    DEPENDS clang clang-cc
+    COMMENT "Running Clang regression tests")
+endif()  
diff --git a/utils/test/MultiTestRunner.py b/utils/test/MultiTestRunner.py
index 57650f9..5dde1bd 100755
--- a/utils/test/MultiTestRunner.py
+++ b/utils/test/MultiTestRunner.py
@@ -249,6 +249,10 @@
     parser.add_option("", "--debug-do-not-test", dest="debugDoNotTest",
                       help="DEBUG: Skip running actual test script",
                       action="store_true", default=False)
+    parser.add_option("", "--path", dest="path",
+                      help="Additional paths to add to testing environment",
+                      action="store", type=str, default=None)
+                      
     (opts, args) = parser.parse_args()
 
     if not args:
@@ -269,7 +273,10 @@
         random.shuffle(tests)
     if opts.maxTests is not None:
         tests = tests[:opts.maxTests]
-
+    if opts.path is not None:
+        os.environ["PATH"] = opts.path + ":" + os.environ["PATH"];
+        print "Current PATH is: ", os.environ["PATH"]
+    
     extra = ''
     if len(tests) != len(allTests):
         extra = ' of %d'%(len(allTests),)
