diff --git a/test/CXX/basic/basic.start/basic.start.main/p2.cpp b/test/CXX/basic/basic.start/basic.start.main/p2.cpp
index b3e171fbdb99cbd741d59406732f42bc7e50df1b..42e87e5431f2a5ba056416ca994d510f4224dc86 100644
--- a/test/CXX/basic/basic.start/basic.start.main/p2.cpp
+++ b/test/CXX/basic/basic.start/basic.start.main/p2.cpp
@@ -10,7 +10,6 @@
 // RUN: cp %s %t
 // RUN: %clang_cc1 -x c++ %s -std=c++11 -fsyntax-only -verify -DTEST9
 // RUN: not %clang_cc1 -x c++ %t -std=c++11 -fixit -DTEST9
-// REQUIRES: rewriter
 // RUN: %clang_cc1 -x c++ %t -std=c++11 -fsyntax-only -DTEST9
 
 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST10
diff --git a/test/CXX/temp/temp.spec/cxx1y-variable-template-no-body.cpp b/test/CXX/temp/temp.spec/cxx1y-variable-template-no-body.cpp
index 3b54a8c3a65ca54fbb4d796c320cf9a91b247667..7eb5e3744d189f1958a1c749f5452bdbfef11539 100644
--- a/test/CXX/temp/temp.spec/cxx1y-variable-template-no-body.cpp
+++ b/test/CXX/temp/temp.spec/cxx1y-variable-template-no-body.cpp
@@ -2,7 +2,6 @@
 // RUN: cp %s %t
 // RUN: not %clang_cc1 --std=c++1y -x c++ -fixit %t -DFIXING
 // RUN: %clang_cc1 --std=c++1y -x c++ %t -DFIXING
-// REQUIRES: rewriter
 
 template<typename T> 
 T pi = T(3.1415926535897932385); // expected-note {{template is declared here}}
diff --git a/test/CXX/temp/temp.spec/no-body.cpp b/test/CXX/temp/temp.spec/no-body.cpp
index aa2380d30bf9c5b064fd9cba0a9916050148219f..61d285b27ed28e0010abd8981d8568ae320c8360 100644
--- a/test/CXX/temp/temp.spec/no-body.cpp
+++ b/test/CXX/temp/temp.spec/no-body.cpp
@@ -2,7 +2,6 @@
 // RUN: cp %s %t
 // RUN: not %clang_cc1 -x c++ -fixit %t -DFIXING
 // RUN: %clang_cc1 -x c++ %t -DFIXING
-// REQUIRES: rewriter
 
 template<typename T> void f(T) { }
 template<typename T> void g(T) { }
diff --git a/test/Coverage/html-print.c b/test/Coverage/html-print.c
index 2bbe0ad4248d2063c73cd7cfb0eb24f717a157a6..a3f29c6f36f86ff7b34333d5c2cbf7eeb3710ae4 100644
--- a/test/Coverage/html-print.c
+++ b/test/Coverage/html-print.c
@@ -1,6 +1,3 @@
 // RUN: %clang_cc1 -emit-html -o %t %s
 
-// -emit-html requires rewriter.
-// REQUIRES: rewriter
-
 #include "c-language-features.inc"
diff --git a/test/Driver/crash-report.c b/test/Driver/crash-report.c
index caee7285bfe13b7d393e34ac9cf908117602b15b..da1ff950fb9a6ba23c00e14e3b0af4b52aef754a 100644
--- a/test/Driver/crash-report.c
+++ b/test/Driver/crash-report.c
@@ -10,9 +10,6 @@
 // RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
 // REQUIRES: crash-recovery
 
-// PR20321: diag invokes clang -E with -frewrite-includes.
-// REQUIRES: rewriter
-
 // because of the glob (*.c, *.sh)
 // REQUIRES: shell
 
diff --git a/test/Format/lit.local.cfg b/test/Format/lit.local.cfg
deleted file mode 100644
index 5bbc711c656d673acbb29f687d0e43e7053fc704..0000000000000000000000000000000000000000
--- a/test/Format/lit.local.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-if config.root.clang_rewriter == 0:
-    config.unsupported = True
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes-bom.h b/test/Frontend/Inputs/rewrite-includes-bom.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes-bom.h
rename to test/Frontend/Inputs/rewrite-includes-bom.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes-messages.h b/test/Frontend/Inputs/rewrite-includes-messages.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes-messages.h
rename to test/Frontend/Inputs/rewrite-includes-messages.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes1.h b/test/Frontend/Inputs/rewrite-includes1.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes1.h
rename to test/Frontend/Inputs/rewrite-includes1.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes2.h b/test/Frontend/Inputs/rewrite-includes2.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes2.h
rename to test/Frontend/Inputs/rewrite-includes2.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes3.h b/test/Frontend/Inputs/rewrite-includes3.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes3.h
rename to test/Frontend/Inputs/rewrite-includes3.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes4.h b/test/Frontend/Inputs/rewrite-includes4.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes4.h
rename to test/Frontend/Inputs/rewrite-includes4.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes5.h b/test/Frontend/Inputs/rewrite-includes5.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes5.h
rename to test/Frontend/Inputs/rewrite-includes5.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes6.h b/test/Frontend/Inputs/rewrite-includes6.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes6.h
rename to test/Frontend/Inputs/rewrite-includes6.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes7.h b/test/Frontend/Inputs/rewrite-includes7.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes7.h
rename to test/Frontend/Inputs/rewrite-includes7.h
diff --git a/test/Frontend/Rewriter/Inputs/rewrite-includes8.h b/test/Frontend/Inputs/rewrite-includes8.h
similarity index 100%
rename from test/Frontend/Rewriter/Inputs/rewrite-includes8.h
rename to test/Frontend/Inputs/rewrite-includes8.h
diff --git a/test/Frontend/Rewriter/lit.local.cfg b/test/Frontend/Rewriter/lit.local.cfg
deleted file mode 100644
index 5bbc711c656d673acbb29f687d0e43e7053fc704..0000000000000000000000000000000000000000
--- a/test/Frontend/Rewriter/lit.local.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-if config.root.clang_rewriter == 0:
-    config.unsupported = True
diff --git a/test/Frontend/Rewriter/rewrite-includes-bom.c b/test/Frontend/rewrite-includes-bom.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-bom.c
rename to test/Frontend/rewrite-includes-bom.c
diff --git a/test/Frontend/Rewriter/rewrite-includes-cli-include.c b/test/Frontend/rewrite-includes-cli-include.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-cli-include.c
rename to test/Frontend/rewrite-includes-cli-include.c
diff --git a/test/Frontend/Rewriter/rewrite-includes-eof.c b/test/Frontend/rewrite-includes-eof.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-eof.c
rename to test/Frontend/rewrite-includes-eof.c
diff --git a/test/Frontend/Rewriter/rewrite-includes-header-cmd-line.c b/test/Frontend/rewrite-includes-header-cmd-line.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-header-cmd-line.c
rename to test/Frontend/rewrite-includes-header-cmd-line.c
diff --git a/test/Frontend/Rewriter/rewrite-includes-invalid-hasinclude.c b/test/Frontend/rewrite-includes-invalid-hasinclude.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-invalid-hasinclude.c
rename to test/Frontend/rewrite-includes-invalid-hasinclude.c
diff --git a/test/Frontend/Rewriter/rewrite-includes-messages.c b/test/Frontend/rewrite-includes-messages.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-messages.c
rename to test/Frontend/rewrite-includes-messages.c
diff --git a/test/Frontend/Rewriter/rewrite-includes-missing.c b/test/Frontend/rewrite-includes-missing.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-missing.c
rename to test/Frontend/rewrite-includes-missing.c
diff --git a/test/Frontend/Rewriter/rewrite-includes-modules.c b/test/Frontend/rewrite-includes-modules.c
similarity index 92%
rename from test/Frontend/Rewriter/rewrite-includes-modules.c
rename to test/Frontend/rewrite-includes-modules.c
index a766972e565a16a4389f51b6e84cd20de734563d..58d7809909da7b98918626402d2e7fdd04700546 100644
--- a/test/Frontend/Rewriter/rewrite-includes-modules.c
+++ b/test/Frontend/rewrite-includes-modules.c
@@ -1,5 +1,5 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c %s -F %S/../../Modules/Inputs -E -frewrite-includes -o - | FileCheck %s
+// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -x objective-c %s -F %S/../Modules/Inputs -E -frewrite-includes -o - | FileCheck %s
 
 int bar();
 #include <Module/Module.h>
diff --git a/test/Frontend/Rewriter/rewrite-includes-warnings.c b/test/Frontend/rewrite-includes-warnings.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes-warnings.c
rename to test/Frontend/rewrite-includes-warnings.c
diff --git a/test/Frontend/Rewriter/rewrite-includes.c b/test/Frontend/rewrite-includes.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-includes.c
rename to test/Frontend/rewrite-includes.c
diff --git a/test/Frontend/Rewriter/rewrite-macros.c b/test/Frontend/rewrite-macros.c
similarity index 100%
rename from test/Frontend/Rewriter/rewrite-macros.c
rename to test/Frontend/rewrite-macros.c
diff --git a/test/Misc/emit-html-insert.c b/test/Misc/emit-html-insert.c
index fcd36525c4ae3bb797a226696d618b7378203570..289c28a5c6d72b2bd7ab64b30030c9a6de76542d 100644
--- a/test/Misc/emit-html-insert.c
+++ b/test/Misc/emit-html-insert.c
@@ -1,5 +1,4 @@
 // RUN: %clang_cc1 %s -emit-html -o - | grep ">&lt; 10; }"
-// REQUIRES: rewriter
 
 int a(int x) { return x
 < 10; }
diff --git a/test/Misc/emit-html.c b/test/Misc/emit-html.c
index f8042f42aed9e94913896a1286d036391f76a8aa..ec07a60a60668361bfcfde00fd7f177433a17208 100644
--- a/test/Misc/emit-html.c
+++ b/test/Misc/emit-html.c
@@ -1,5 +1,4 @@
 // RUN: %clang_cc1 %s -emit-html -o -
-// REQUIRES: rewriter
 
 // rdar://6562329
 #line 42 "foo.c"
diff --git a/test/Parser/brackets.c b/test/Parser/brackets.c
index 67ea423aeea884a28a810e562223859368d5a12f..2750d0e42ed81b3062288c4af4b2ceb93def1ec1 100644
--- a/test/Parser/brackets.c
+++ b/test/Parser/brackets.c
@@ -3,7 +3,6 @@
 // RUN: not %clang_cc1 -fixit %t -x c -DFIXIT
 // RUN: %clang_cc1 -fsyntax-only %t -x c -DFIXIT
 // RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s -strict-whitespace
-// REQUIRES: rewriter
 
 void test1() {
   int a[] = {0,1,1,2,3};
diff --git a/test/Parser/brackets.cpp b/test/Parser/brackets.cpp
index 128b514b1585fc4757b40c732dcc55a44ff5675c..f418c11d3ac304157518bcd58e560c543497045d 100644
--- a/test/Parser/brackets.cpp
+++ b/test/Parser/brackets.cpp
@@ -3,7 +3,6 @@
 // RUN: not %clang_cc1 -fixit %t -x c++ -DFIXIT
 // RUN: %clang_cc1 -fsyntax-only %t -x c++ -DFIXIT
 // RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s -strict-whitespace
-// REQUIRES: rewriter
 
 void test1() {
   int a[] = {0,1,1,2,3};
diff --git a/test/Parser/colon-colon-parentheses.cpp b/test/Parser/colon-colon-parentheses.cpp
index dc9aa7a0c9eddb8ee534b8db17b2e45abf925905..55948fdb0051cdf3521e8383129e8d1f4a43244c 100644
--- a/test/Parser/colon-colon-parentheses.cpp
+++ b/test/Parser/colon-colon-parentheses.cpp
@@ -2,7 +2,6 @@
 // RUN: cp %s %t
 // RUN: not %clang_cc1 -x c++ -fixit %t
 // RUN: %clang_cc1 -x c++ %t
-// REQUIRES: rewriter
 
 struct S { static int a,b,c;};
 int S::(a);  // expected-error{{unexpected parenthesis after '::'}}
diff --git a/test/Parser/cxx-extra-semi.cpp b/test/Parser/cxx-extra-semi.cpp
index 1bc0a82b2d7792426905e65e3f70c21bc53aeb3f..2aa18dfcc0e4e76920fa04a9af7d661645f0eba6 100644
--- a/test/Parser/cxx-extra-semi.cpp
+++ b/test/Parser/cxx-extra-semi.cpp
@@ -4,7 +4,6 @@
 // RUN: cp %s %t
 // RUN: %clang_cc1 -x c++ -Wextra-semi -fixit %t
 // RUN: %clang_cc1 -x c++ -Wextra-semi -Werror %t
-// REQUIRES: rewriter
 
 class A {
   void A1();
diff --git a/test/Parser/nested-namespaces-recovery.cpp b/test/Parser/nested-namespaces-recovery.cpp
index f751180c96de760265587b17fe24e38fd7d0f2bb..d45938bb3e674af02e00e14a92fff4fc43c1fd2c 100644
--- a/test/Parser/nested-namespaces-recovery.cpp
+++ b/test/Parser/nested-namespaces-recovery.cpp
@@ -2,7 +2,6 @@
 // RUN: %clang_cc1 -fsyntax-only -verify %s
 // RUN: not %clang_cc1 -x c++ -fixit %t
 // RUN: %clang_cc1 -x c++ %t
-// REQUIRES: rewriter
 
 namespace foo1::foo2::foo3 { // expected-error {{nested namespace definition must define each namespace separately}}
   int foo(int x) { return x; }
diff --git a/test/Preprocessor/ignore-pragmas.c b/test/Preprocessor/ignore-pragmas.c
index 3226d536f84969c0343e20f2069afff0dc018c6b..e2f9ef3dfa346538ebd2c02be962878f4b95e0d8 100644
--- a/test/Preprocessor/ignore-pragmas.c
+++ b/test/Preprocessor/ignore-pragmas.c
@@ -3,7 +3,6 @@
 // RUN: %clang -M -Wall %s -Xclang -verify
 // RUN: %clang -E -frewrite-includes %s -Wall -Xclang -verify
 // RUN: %clang -E -dD -dM %s -Wall -Xclang -verify
-// REQUIRES: rewriter
 // expected-no-diagnostics
 
 #pragma GCC visibility push (default)
diff --git a/test/Sema/format-strings-fixit-ssize_t.c b/test/Sema/format-strings-fixit-ssize_t.c
index 6e8e49bf97e752dd64cf6c17948bb67cb94d7a77..5208a294a4802a4843a86fbf760198c26b808dfb 100644
--- a/test/Sema/format-strings-fixit-ssize_t.c
+++ b/test/Sema/format-strings-fixit-ssize_t.c
@@ -2,7 +2,6 @@
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -pedantic -Wall -fixit %t
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -pedantic -Wall -Werror %t
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -E -o - %t | FileCheck %s
-// REQUIRES: rewriter
 
 /* This is a test of the various code modification hints that are
    provided as part of warning or extension diagnostics. All of the
diff --git a/test/Sema/format-strings-fixit.c b/test/Sema/format-strings-fixit.c
index 098c7e05cad9761687b339d2ad8954604b775172..b982eb45e5f930aea025d598fbdbc39a594dd2af 100644
--- a/test/Sema/format-strings-fixit.c
+++ b/test/Sema/format-strings-fixit.c
@@ -2,7 +2,6 @@
 // RUN: %clang_cc1 -pedantic -Wall -fixit %t
 // RUN: %clang_cc1 -fsyntax-only -pedantic -Wall -Werror %t
 // RUN: %clang_cc1 -E -o - %t | FileCheck %s
-// REQUIRES: rewriter
 
 /* This is a test of the various code modification hints that are
    provided as part of warning or extension diagnostics. All of the
diff --git a/test/Sema/format-strings-no-fixit.c b/test/Sema/format-strings-no-fixit.c
index 7371fde735cf8cf2130565f8d860f31a2df59529..701e945f69021a00d51907f44a3f4da4e5edf79b 100644
--- a/test/Sema/format-strings-no-fixit.c
+++ b/test/Sema/format-strings-no-fixit.c
@@ -1,7 +1,6 @@
 // RUN: cp %s %t
 // RUN: %clang_cc1 -fsyntax-only -fixit %t
 // RUN: %clang_cc1 -E -o - %t | FileCheck %s
-// REQUIRES: rewriter
 
 /* This is a test of the various code modification hints that are
    provided as part of warning or extension diagnostics. Only
diff --git a/test/Sema/warn-documentation-almost-trailing.c b/test/Sema/warn-documentation-almost-trailing.c
index e3dee2977a9ba08cf3c6a083c0d162ed211c16e8..9ff71a3bce3646715e2d90d222f029c8f365caf9 100644
--- a/test/Sema/warn-documentation-almost-trailing.c
+++ b/test/Sema/warn-documentation-almost-trailing.c
@@ -3,7 +3,6 @@
 // RUN: cp %s %t
 // RUN: %clang_cc1 -fsyntax-only -Wdocumentation -fixit %t
 // RUN: %clang_cc1 -fsyntax-only -Wdocumentation -Werror %t
-// REQUIRES: rewriter
 
 struct a {
   int x; //< comment // expected-warning {{not a Doxygen trailing comment}}
diff --git a/test/Sema/warn-strncat-size.c b/test/Sema/warn-strncat-size.c
index 0b74b21d583c32b0a09c79cd5a734c93ee84f12e..dcc3367e94993693e90352ea50e9c63639bf4865 100644
--- a/test/Sema/warn-strncat-size.c
+++ b/test/Sema/warn-strncat-size.c
@@ -2,7 +2,6 @@
 // RUN: %clang_cc1 -DUSE_BUILTINS -Wstrncat-size -verify -fsyntax-only %s
 // RUN: %clang_cc1 -fsyntax-only -Wstrncat-size -fixit -x c %s
 // RUN: %clang_cc1 -DUSE_BUILTINS -fsyntax-only -Wstrncat-size -fixit -x c %s
-// REQUIRES: rewriter
 
 typedef __SIZE_TYPE__ size_t;
 size_t strlen (const char *s);
diff --git a/test/SemaCXX/delete.cpp b/test/SemaCXX/delete.cpp
index 6afdaf1d3aae8645e344d6a2328809ac87bb8089..5824facc507b156a714d798ed5c1614c248791ed 100644
--- a/test/SemaCXX/delete.cpp
+++ b/test/SemaCXX/delete.cpp
@@ -2,7 +2,6 @@
 // RUN: cp %s %t
 // RUN: %clang_cc1 -fixit -x c++ %t
 // RUN: %clang_cc1 -E -o - %t | FileCheck %s
-// REQUIRES: rewriter
 
 void f(int a[10][20]) {
   // CHECK: delete[] a;
diff --git a/test/SemaObjC/cocoa-api-usage.m b/test/SemaObjC/cocoa-api-usage.m
index 9e287bf825ab0e9980b1fbd8e6098ceb27a4523c..bed7ecde06011f082a2d98bf89cc28643fb1ab96 100644
--- a/test/SemaObjC/cocoa-api-usage.m
+++ b/test/SemaObjC/cocoa-api-usage.m
@@ -3,7 +3,6 @@
 // RUN: cp %s %t.m
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc %t.m -fixit -Wobjc-cocoa-api
 // RUN: diff %s.fixed %t.m
-// REQUIRES: rewriter
 
 typedef signed char BOOL;
 #define nil ((void*) 0)
diff --git a/test/SemaObjC/cocoa-api-usage.m.fixed b/test/SemaObjC/cocoa-api-usage.m.fixed
index a27e4ee6db1363764722b65d83a2944fdd776663..f472cf1a3043348c28c42d44f14bd59349cd827b 100644
--- a/test/SemaObjC/cocoa-api-usage.m.fixed
+++ b/test/SemaObjC/cocoa-api-usage.m.fixed
@@ -3,7 +3,6 @@
 // RUN: cp %s %t.m
 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-arc %t.m -fixit -Wobjc-cocoa-api
 // RUN: diff %s.fixed %t.m
-// REQUIRES: rewriter
 
 typedef signed char BOOL;
 #define nil ((void*) 0)
diff --git a/test/lit.cfg b/test/lit.cfg
index bbc5c99cdf2f3d8a7eaadc0f924e00083ccd0ed2..b5c5628a5806b1451c72d2aeb23d3c1f19c57234 100644
--- a/test/lit.cfg
+++ b/test/lit.cfg
@@ -335,9 +335,6 @@ for pattern in [r"\bFileCheck\b",
 # Set available features we allow tests to conditionalize on.
 #
 # Enabled/disabled features
-if config.clang_rewriter != 0:
-    config.available_features.add("rewriter")
-
 if config.clang_staticanalyzer != 0:
     config.available_features.add("staticanalyzer")