diff --git a/test/Analysis/additive-folding.cpp b/test/Analysis/additive-folding.cpp
index 6c84bf3..ddb32bd 100644
--- a/test/Analysis/additive-folding.cpp
+++ b/test/Analysis/additive-folding.cpp
@@ -141,7 +141,7 @@
 
 // Wraparound with mixed types. Note that the analyzer assumes
 // -fwrapv semantics.
-void mixedWraparoundSanityCheck(int a) {
+void mixedWraparoundBasicCheck(int a) {
   int max = INT_MAX;
   int min = INT_MIN;
 
@@ -197,7 +197,7 @@
 }
 
 
-void multiplicativeSanityTest(int x) {
+void multiplicativeBasicTest(int x) {
   // At one point we were ignoring the *4 completely -- the constraint manager
   // would see x < 8 and then declare the assertion to be known false.
   if (x*4 < 8)
diff --git a/test/Analysis/bitwise-ops.c b/test/Analysis/bitwise-ops.c
index fcd3d7d..d8d2c92 100644
--- a/test/Analysis/bitwise-ops.c
+++ b/test/Analysis/bitwise-ops.c
@@ -4,7 +4,7 @@
 #define CHECK(expr) if (!(expr)) return; clang_analyzer_eval(expr)
 
 void testPersistentConstraints(int x, int y) {
-  // Sanity check
+  // Basic check
   CHECK(x); // expected-warning{{TRUE}}
   CHECK(x & 1); // expected-warning{{TRUE}}
   
diff --git a/test/Analysis/comparison-implicit-casts.cpp b/test/Analysis/comparison-implicit-casts.cpp
index fe5254c..dac2860 100644
--- a/test/Analysis/comparison-implicit-casts.cpp
+++ b/test/Analysis/comparison-implicit-casts.cpp
@@ -18,7 +18,7 @@
 void PR12206(int x) {
   size_t comparisonSize = sizeof(1 == 1);
 
-  // Sanity check. This test is useless if size_t isn't bigger than bool.
+  // This test is useless if size_t isn't bigger than bool.
   clang_analyzer_eval(sizeof(size_t) > comparisonSize); // expected-warning{{TRUE}}
 
   // Build a SymIntExpr, dependent on x.
@@ -75,7 +75,7 @@
 void PR12206_strlen(const char *x) {
   size_t comparisonSize = sizeof(1 == 1);
 
-  // Sanity check. This test is useless if size_t isn't bigger than bool.
+  // This test is useless if size_t isn't bigger than bool.
   clang_analyzer_eval(sizeof(size_t) > comparisonSize); // expected-warning{{TRUE}}
 
   // Create a value that requires more bits to store than a comparison result.
diff --git a/test/Analysis/ctor.mm b/test/Analysis/ctor.mm
index 08f06e7..1eafabb 100644
--- a/test/Analysis/ctor.mm
+++ b/test/Analysis/ctor.mm
@@ -93,7 +93,7 @@
 
     clang_analyzer_eval(obj.get() == 3); // expected-warning{{TRUE}}
 
-    // Sanity check for devirtualization.
+    // Correctness check for devirtualization.
     A *base = &obj;
     clang_analyzer_eval(base->get() == 3); // expected-warning{{TRUE}}
   }
diff --git a/test/Analysis/derived-to-base.cpp b/test/Analysis/derived-to-base.cpp
index b9851fd..ef30f97 100644
--- a/test/Analysis/derived-to-base.cpp
+++ b/test/Analysis/derived-to-base.cpp
@@ -353,7 +353,7 @@
 
   void test(Derived d) {
     d.foo(); // don't crash
-    d.bar(); // sanity check
+    d.bar(); // basic correctness check
 
     Base &b = d;
     b.foo(); // don't crash
diff --git a/test/Analysis/dtor.cpp b/test/Analysis/dtor.cpp
index 1c62517..2e984fc 100644
--- a/test/Analysis/dtor.cpp
+++ b/test/Analysis/dtor.cpp
@@ -214,7 +214,7 @@
       C obj;
       clang_analyzer_eval(obj.get() == 3); // expected-warning{{TRUE}}
 
-      // Sanity check for devirtualization.
+      // Correctness check for devirtualization.
       A *base = &obj;
       clang_analyzer_eval(base->get() == 3); // expected-warning{{TRUE}}
 
diff --git a/test/Analysis/expr-inspection.cpp b/test/Analysis/expr-inspection.cpp
index 0bf824c..bf8ce5f 100644
--- a/test/Analysis/expr-inspection.cpp
+++ b/test/Analysis/expr-inspection.cpp
@@ -5,7 +5,7 @@
 void clang_analyzer_denote(int x, const char *str);
 void clang_analyzer_express(int x);
 
-// Invalid declarations to test sanity checks.
+// Invalid declarations to test basic correctness checks.
 void clang_analyzer_denote();
 void clang_analyzer_denote(int x);
 void clang_analyzer_express();
diff --git a/test/Analysis/malloc-sizeof.cpp b/test/Analysis/malloc-sizeof.cpp
index 30227a9..77ddf34 100644
--- a/test/Analysis/malloc-sizeof.cpp
+++ b/test/Analysis/malloc-sizeof.cpp
@@ -11,7 +11,7 @@
 struct B {};
 
 void foo(unsigned int unsignedInt, unsigned int readSize) {
-  // Sanity check the checker is working as expected.
+  // Verify the checker is working as expected.
   A* a = static_cast<A*>(malloc(sizeof(int))); // expected-warning {{Result of 'malloc' is converted to a pointer of type 'struct A', which is incompatible with sizeof operand type 'int'}}
   free(a);
 }
diff --git a/test/Analysis/plist-html-macros.c b/test/Analysis/plist-html-macros.c
index 0ac79be..3563450 100644
--- a/test/Analysis/plist-html-macros.c
+++ b/test/Analysis/plist-html-macros.c
@@ -1,5 +1,5 @@
 // RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
-// (sanity check)
+// (basic correctness check)
 
 // RUN: rm -rf %t.dir
 // RUN: mkdir -p %t.dir
diff --git a/test/Analysis/reference.cpp b/test/Analysis/reference.cpp
index 9f3082a..37113f0 100644
--- a/test/Analysis/reference.cpp
+++ b/test/Analysis/reference.cpp
@@ -24,14 +24,14 @@
   return '0';
 }
 
-// just a sanity test, the same behavior as t1()
+// just a basic correctness test, the same behavior as t1()
 char t2 () {
   *ptr() = 'c';
   return '0';
 }
 
 // Each of the tests below is repeated with pointers as well as references.
-// This is mostly a sanity check, but then again, both should work!
+// This is mostly a basic correctness check, but then again, both should work!
 char t3 () {
   char& r = ref();
   r = 'c'; // no-warning
diff --git a/test/Analysis/retain-release.m b/test/Analysis/retain-release.m
index 6563662..c749084 100644
--- a/test/Analysis/retain-release.m
+++ b/test/Analysis/retain-release.m
@@ -2271,7 +2271,7 @@
 }
 
 void useAfterRelease() {
-  // Sanity check that the previous example would have warned with CFRelease.
+  // Verify that the previous example would have warned with CFRelease.
   extern CFTypeRef CFCreateSomething();
   CFTypeRef obj = CFCreateSomething();
   CFRelease(obj);
diff --git a/test/CodeGen/attr-nodebug.c b/test/CodeGen/attr-nodebug.c
index 8ffe336..177cb81 100644
--- a/test/CodeGen/attr-nodebug.c
+++ b/test/CodeGen/attr-nodebug.c
@@ -19,7 +19,7 @@
 // CHECK-NOT:   dbg
 // CHECK:       }
 
-// For sanity, check those things do occur normally.
+// Verify those things do occur normally.
 // CHECK-LABEL: @t2
 // CHECK:       call{{.*}}llvm.dbg
 // CHECK:       !dbg
diff --git a/test/CodeGenObjCXX/arc-attrs.mm b/test/CodeGenObjCXX/arc-attrs.mm
index f6da542..167dcd5 100644
--- a/test/CodeGenObjCXX/arc-attrs.mm
+++ b/test/CodeGenObjCXX/arc-attrs.mm
@@ -4,8 +4,8 @@
 id makeObject2() __attribute__((ns_returns_retained));
 void releaseObject(__attribute__((ns_consumed)) id);
 
-// CHECK-LABEL: define{{.*}} void @_Z10sanityTestv
-void sanityTest() {
+// CHECK-LABEL: define{{.*}} void @_Z20basicCorrectnessTestv
+void basicCorrectnessTest() {
   // CHECK: [[X:%.*]] = alloca i8*, align 8
   // CHECK-NEXT: [[OBJ1:%.*]] = call i8* @_Z11makeObject1v()
   // CHECK-NEXT: store i8* [[OBJ1]], i8** [[X]], align 8
@@ -26,7 +26,7 @@
 T makeObjectT2() __attribute__((ns_returns_retained));
 
 template <typename T>
-void releaseObjectT(__attribute__((ns_consumed)) T);  
+void releaseObjectT(__attribute__((ns_consumed)) T);
 
 // CHECK-LABEL: define{{.*}} void @_Z12templateTestv
 void templateTest() {
diff --git a/test/CodeGenObjCXX/arc.mm b/test/CodeGenObjCXX/arc.mm
index abf4cbe..9b3fe9f 100644
--- a/test/CodeGenObjCXX/arc.mm
+++ b/test/CodeGenObjCXX/arc.mm
@@ -293,7 +293,7 @@
 // CHECK-NEXT: ret i8*
 
 // rdar://13617051
-// Just a basic sanity-check that IR-gen still works after instantiating
+// Just a basic correctness check that IR-gen still works after instantiating
 // a non-dependent message send that requires writeback.
 @interface Test40
 + (void) foo:(id *)errorPtr;
diff --git a/test/Driver/arm-target-as-march-mcpu.s b/test/Driver/arm-target-as-march-mcpu.s
index 31c027b..186b3a4 100644
--- a/test/Driver/arm-target-as-march-mcpu.s
+++ b/test/Driver/arm-target-as-march-mcpu.s
@@ -6,7 +6,7 @@
 /// Note that the cortex-a8 is armv7-a, the cortex-a32 is armv8-a
 /// and clang's default Arm architecture is armv4t.
 
-/// Sanity check how the options behave when passed to the compiler
+/// Basic correctness check for how the options behave when passed to the compiler
 // RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a %s 2>&1 | \
 // RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
 // RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a+crc %s 2>&1 | \
diff --git a/test/Driver/clang-g-opts.c b/test/Driver/clang-g-opts.c
index 60c9779..bb129e7 100644
--- a/test/Driver/clang-g-opts.c
+++ b/test/Driver/clang-g-opts.c
@@ -10,7 +10,7 @@
 // RUN: %clang -### -S %s -g -target x86_64-pc-freebsd10.0 2>&1 \
 // RUN:             | FileCheck --check-prefix=CHECK-WITH-G-DWARF2 %s
 
-// 'g0' is the default. Just sanity-test that it does nothing
+// 'g0' is the default. Just basic correctness check that it does nothing
 // RUN: %clang -### -S %s -g0    2>&1 | FileCheck --check-prefix=CHECK-WITHOUT-G %s
 
 // And check that the last of -g or -g0 wins.
diff --git a/test/Modules/framework-name.m b/test/Modules/framework-name.m
index 5b5d4c6..ebd9de0 100644
--- a/test/Modules/framework-name.m
+++ b/test/Modules/framework-name.m
@@ -5,8 +5,8 @@
 // RUN: ln -s %S/Inputs/NameInDirInferred.framework %t/NameInImportInferred.framework
 // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t.mcp -fimplicit-module-maps -I %S/Inputs -F %S/Inputs -F %t -Wauto-import -verify %s
 
-// Sanity check that we won't somehow find non-canonical module names or
-// modules where we shouldn't search the framework.
+// Verify that we won't somehow find non-canonical module names or modules where
+// we shouldn't search the framework.
 // RUN: echo '@import NameInModMap;' | not %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t.mcp -F %S/Inputs -F %t -Wauto-import -x objective-c - 2>&1 | FileCheck %s
 // RUN: echo '@import NameInDir;' | not %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t.mcp -F %S/Inputs -F %t -Wauto-import -x objective-c - 2>&1 | FileCheck %s
 // RUN: echo '@import NameInImport;' | not %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t.mcp -F %S/Inputs -F %t -Wauto-import -x objective-c - 2>&1 | FileCheck %s
diff --git a/test/Modules/target-features.m b/test/Modules/target-features.m
index b259796..bbf889b 100644
--- a/test/Modules/target-features.m
+++ b/test/Modules/target-features.m
@@ -5,8 +5,8 @@
 
 // RUN: rm -rf %t
 
-// Sanity check one of the compilations.
-// RUN: %clang_cc1 -triple aarch64-unknown-unknown -fmodules -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs -fsyntax-only %s -verify -DSANITY_CHECK
+// Basic check on one of the compilations.
+// RUN: %clang_cc1 -triple aarch64-unknown-unknown -fmodules -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs -fsyntax-only %s -verify -DBASIC_CHECK
 // expected-no-diagnostics
 
 // Check all the targets:
@@ -23,7 +23,7 @@
 // RUN: not %clang_cc1 -triple riscv64-unknown-unknown -fmodules -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs -fsyntax-only  %s 2> %t.riscv64
 // RUN: FileCheck %s -check-prefix=RISCV64 < %t.riscv64
 
-#ifndef SANITY_CHECK
+#ifndef BASIC_CHECK
 @import TargetFeatures;
 // AARCH32-NOT: module 'TargetFeatures' requires
 // AARCH64-NOT: module 'TargetFeatures' requires
@@ -55,7 +55,7 @@
 // RISCV32: module 'TargetFeatures.arm.aarch64' requires feature
 // RISCV64: module 'TargetFeatures.arm.aarch64' requires feature
 
-#ifndef SANITY_CHECK
+#ifndef BASIC_CHECK
 @import TargetFeatures.x86;
 // AARCH32:  module 'TargetFeatures.x86' requires feature 'x86'
 // AARCH64:  module 'TargetFeatures.x86' requires feature 'x86'
diff --git a/test/Modules/va_list.m b/test/Modules/va_list.m
index aa140fb..dd8f895 100644
--- a/test/Modules/va_list.m
+++ b/test/Modules/va_list.m
@@ -4,7 +4,7 @@
 // RUN:     -fmodules-ignore-macro=PREFIX -DPREFIX -I %S/Inputs/va_list \
 // RUN:     -x objective-c-header %s -o %t.pch -emit-pch
 
-// Include the pch, as a sanity check.
+// Include the pch, as a basic correctness check.
 // RUN: %clang_cc1 -triple x86_64-apple-macosx10 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t \
 // RUN:     -fmodules-ignore-macro=PREFIX -I %S/Inputs/va_list -include-pch %t.pch \
 // RUN:     -x objective-c %s -fsyntax-only
diff --git a/test/PCH/cxx11-statement-attributes.cpp b/test/PCH/cxx11-statement-attributes.cpp
index b5dfc6c..c3d59ab 100644
--- a/test/PCH/cxx11-statement-attributes.cpp
+++ b/test/PCH/cxx11-statement-attributes.cpp
@@ -1,4 +1,4 @@
-// Sanity check.
+// Basic correctness check.
 // RUN: %clang_cc1 -include %S/Inputs/cxx11-statement-attributes.h -std=c++11 -Wimplicit-fallthrough -fsyntax-only %s -o - -verify
 // RUN: %clang_cc1 -include %S/Inputs/cxx11-statement-attributes.h -std=c++1z -Wimplicit-fallthrough -fsyntax-only %s -o - -verify
 // Run the same tests, this time with the attributes loaded from the PCH file.
diff --git a/test/Rewriter/instancetype-test.mm b/test/Rewriter/instancetype-test.mm
index 4a7f961..1c4a923 100644
--- a/test/Rewriter/instancetype-test.mm
+++ b/test/Rewriter/instancetype-test.mm
@@ -37,7 +37,7 @@
 - (void)methodOnSubclass2;
 @end
 
-// Sanity check: the basic initialization pattern.
+// Check the basic initialization pattern.
 void test_instancetype_alloc_init_simple() {
   Root *r1 = [[Root alloc] init];
   Subclass1 *sc1 = [[Subclass1 alloc] init];
diff --git a/test/Rewriter/rewrite-foreach-in-block.mm b/test/Rewriter/rewrite-foreach-in-block.mm
index 14d9d3a..8506701 100644
--- a/test/Rewriter/rewrite-foreach-in-block.mm
+++ b/test/Rewriter/rewrite-foreach-in-block.mm
@@ -20,12 +20,12 @@
 - (void)M {
     I* ace;
     self.c = ^() {
-          // sanity test for the changes.
+          // Basic correctness check for the changes.
 	  [ace ARR];
           for (I *privilege in [ace ARR]) { }
     };
     self.c = ^() {
-          // sanity test for the changes.
+          // Basic correctness test for the changes.
 	  [ace ARR];
     };
 }
diff --git a/test/Sema/dllexport.c b/test/Sema/dllexport.c
index 2e0fe0c..6735999 100644
--- a/test/Sema/dllexport.c
+++ b/test/Sema/dllexport.c
@@ -73,7 +73,7 @@
 //===----------------------------------------------------------------------===//
 
 // Export function declaration. Check different placements.
-__attribute__((dllexport)) void decl1A(); // Sanity check with __attribute__
+__attribute__((dllexport)) void decl1A(); // Basic check with __attribute__
 __declspec(dllexport)      void decl1B();
 
 void __attribute__((dllexport)) decl2A();
diff --git a/test/Sema/dllimport.c b/test/Sema/dllimport.c
index 4646232..5f9cc74 100644
--- a/test/Sema/dllimport.c
+++ b/test/Sema/dllimport.c
@@ -149,7 +149,7 @@
 //===----------------------------------------------------------------------===//
 
 // Import function declaration. Check different placements.
-__attribute__((dllimport)) void decl1A(); // Sanity check with __attribute__
+__attribute__((dllimport)) void decl1A(); // Basic check with __attribute__
 __declspec(dllimport)      void decl1B();
 
 void __attribute__((dllimport)) decl2A();
diff --git a/test/Sema/predef.c b/test/Sema/predef.c
index 6db683e..49776b0 100644
--- a/test/Sema/predef.c
+++ b/test/Sema/predef.c
@@ -12,7 +12,7 @@
   __func__[0] = 'a';  // expected-error {{variable is not assignable}}
 }
 
-// rdar://6097892 - GCC permits this insanity.
+// rdar://6097892 - GCC permits this.
 const char *b = __func__;  // expected-warning {{predefined identifier is only valid}}
 const char *c = __FUNCTION__; // expected-warning {{predefined identifier is only valid}}
 const char *d = __PRETTY_FUNCTION__; // expected-warning {{predefined identifier is only valid}}
diff --git a/test/SemaCXX/coroutines-exp-namespace.cpp b/test/SemaCXX/coroutines-exp-namespace.cpp
index cb32ac2..1a1537a 100644
--- a/test/SemaCXX/coroutines-exp-namespace.cpp
+++ b/test/SemaCXX/coroutines-exp-namespace.cpp
@@ -1119,7 +1119,7 @@
     static_assert(!TC.MatchesArgs<TestType *>, "");
   }
 
-  CoroMemberTag test_sanity(int *) const {
+  CoroMemberTag test_asserts(int *) const {
     auto TC = co_yield 0;
     static_assert(TC.MatchesArgs<const TestType &>, ""); // expected-error {{static_assert failed}}
     static_assert(TC.MatchesArgs<const TestType &>, ""); // expected-error {{static_assert failed}}
@@ -1211,7 +1211,7 @@
 template <class... Args>
 struct DepTestType {
 
-  CoroMemberTag test_sanity(int *) const {
+  CoroMemberTag test_asserts(int *) const {
     auto TC = co_yield 0;
     static_assert(TC.template MatchesArgs<const DepTestType &>, ""); // expected-error {{static_assert failed}}
     static_assert(TC.template MatchesArgs<>, "");                    // expected-error {{static_assert failed}}
diff --git a/test/SemaCXX/coroutines.cpp b/test/SemaCXX/coroutines.cpp
index 26415be..e175e3f 100644
--- a/test/SemaCXX/coroutines.cpp
+++ b/test/SemaCXX/coroutines.cpp
@@ -1111,7 +1111,7 @@
     static_assert(!TC.MatchesArgs<TestType *>, "");
   }
 
-  CoroMemberTag test_sanity(int *) const {
+  CoroMemberTag test_asserts(int *) const {
     auto TC = co_yield 0;
     static_assert(TC.MatchesArgs<const TestType &>, ""); // expected-error {{static_assert failed}}
     static_assert(TC.MatchesArgs<const TestType &>, ""); // expected-error {{static_assert failed}}
@@ -1203,7 +1203,7 @@
 template <class... Args>
 struct DepTestType {
 
-  CoroMemberTag test_sanity(int *) const {
+  CoroMemberTag test_asserts(int *) const {
     auto TC = co_yield 0;
     static_assert(TC.template MatchesArgs<const DepTestType &>, ""); // expected-error {{static_assert failed}}
     static_assert(TC.template MatchesArgs<>, ""); // expected-error {{static_assert failed}}
diff --git a/test/SemaCXX/dllexport.cpp b/test/SemaCXX/dllexport.cpp
index 97ce9de..b4af680 100644
--- a/test/SemaCXX/dllexport.cpp
+++ b/test/SemaCXX/dllexport.cpp
@@ -181,7 +181,7 @@
 //===----------------------------------------------------------------------===//
 
 // Export function declaration. Check different placements.
-__attribute__((dllexport)) void decl1A(); // Sanity check with __attribute__
+__attribute__((dllexport)) void decl1A(); // Correctness check with __attribute__
 __declspec(dllexport)      void decl1B();
 
 void __attribute__((dllexport)) decl2A();
diff --git a/test/SemaCXX/dllimport.cpp b/test/SemaCXX/dllimport.cpp
index 7792943..642cdd0 100644
--- a/test/SemaCXX/dllimport.cpp
+++ b/test/SemaCXX/dllimport.cpp
@@ -267,7 +267,7 @@
 //===----------------------------------------------------------------------===//
 
 // Import function declaration. Check different placements.
-__attribute__((dllimport)) void decl1A(); // Sanity check with __attribute__
+__attribute__((dllimport)) void decl1A(); // Validation check with __attribute__
 __declspec(dllimport)      void decl1B();
 
 void __attribute__((dllimport)) decl2A();
diff --git a/test/SemaCXX/warn-thread-safety-analysis.cpp b/test/SemaCXX/warn-thread-safety-analysis.cpp
index a3c07cd..a37cd1a 100644
--- a/test/SemaCXX/warn-thread-safety-analysis.cpp
+++ b/test/SemaCXX/warn-thread-safety-analysis.cpp
@@ -2552,7 +2552,7 @@
 }
 
 
-// Sanity check -- lock the mutex directly, but use attributes that call getMu()
+// Lock the mutex directly, but use attributes that call getMu()
 // Also lock the mutex using getFooMu, which calls a lock_returned function.
 void test3(Bar* b1, Bar* b2) {
   b1->mu_.Lock();
@@ -4830,7 +4830,7 @@
 
 
 // This mainly duplicates earlier tests, but just to make sure...
-class PtGuardedBySanityTest {
+class PtGuardedByCorrectnessTest {
   Mutex  mu1;
   Mutex  mu2;
   int*   a GUARDED_BY(mu1) PT_GUARDED_BY(mu2);
diff --git a/test/SemaObjC/arc-repeated-weak.mm b/test/SemaObjC/arc-repeated-weak.mm
index 9038859..e9b4d1a 100644
--- a/test/SemaObjC/arc-repeated-weak.mm
+++ b/test/SemaObjC/arc-repeated-weak.mm
@@ -19,7 +19,7 @@
 extern bool condition();
 #define nil ((id)0)
 
-void sanity(Test *a) {
+void basicCorrectnessTest(Test *a) {
   use(a.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this function but may be unpredictably set to nil; assign to a strong variable to keep the object alive}}
   use(a.weakProp); // expected-note{{also accessed here}}
 
@@ -295,7 +295,7 @@
 @end
 
 @implementation Test (Methods)
-- (void)sanity {
+- (void)basicCorrectnessTest {
   use(self.weakProp); // expected-warning{{weak property 'weakProp' is accessed multiple times in this method but may be unpredictably set to nil; assign to a strong variable to keep the object alive}}
   use(self.weakProp); // expected-note{{also accessed here}}
 }
diff --git a/test/SemaObjC/conversion.m b/test/SemaObjC/conversion.m
index 743f744..de616e4 100644
--- a/test/SemaObjC/conversion.m
+++ b/test/SemaObjC/conversion.m
@@ -10,7 +10,7 @@
   f.otherStuff = !f.stuff; // no-warning
   BOOL b = !f.stuff; // no-warning
 
-  // True positive to sanity check warning is working.
+  // True positive to verify warning is working.
   x = y; // expected-warning {{implicit conversion loses integer precision: 'int' to 'char'}}
 }
 
diff --git a/test/SemaObjC/instancetype.m b/test/SemaObjC/instancetype.m
index 7811d3e..59a6724 100644
--- a/test/SemaObjC/instancetype.m
+++ b/test/SemaObjC/instancetype.m
@@ -36,7 +36,7 @@
 - (void)methodOnSubclass2;
 @end
 
-// Sanity check: the basic initialization pattern.
+// Check the basic initialization pattern.
 void test_instancetype_alloc_init_simple() {
   Root *r1 = [[Root alloc] init];
   Subclass1 *sc1 = [[Subclass1 alloc] init];
diff --git a/test/SemaObjC/warn-retain-cycle.m b/test/SemaObjC/warn-retain-cycle.m
index f27f1f8..7d40e26 100644
--- a/test/SemaObjC/warn-retain-cycle.m
+++ b/test/SemaObjC/warn-retain-cycle.m
@@ -119,7 +119,7 @@
   }];
 }
 - (void) test_positive {
-  // Sanity check that we are really whitelisting 'addOperationWithBlock:' and not doing
+  // Check that we are really allowlisting 'addOperationWithBlock:' and not doing
   // something funny.
   [myOperationQueue addSomethingElse:^() { // expected-note {{block will be retained by an object strongly retained by the captured object}}
     if (count > 20) {
diff --git a/test/SemaObjCXX/instancetype.mm b/test/SemaObjCXX/instancetype.mm
index 3030d04..b80eb8f 100644
--- a/test/SemaObjCXX/instancetype.mm
+++ b/test/SemaObjCXX/instancetype.mm
@@ -36,7 +36,7 @@
 - (void)methodOnSubclass2;
 @end
 
-// Sanity check: the basic initialization pattern.
+// Verify the basic initialization pattern.
 void test_instancetype_alloc_init_simple() {
   Root *r1 = [[Root alloc] init];
   Subclass1 *sc1 = [[Subclass1 alloc] init];
diff --git a/unittests/AST/ASTImporterFixtures.h b/unittests/AST/ASTImporterFixtures.h
index a63a98b..f309a50 100644
--- a/unittests/AST/ASTImporterFixtures.h
+++ b/unittests/AST/ASTImporterFixtures.h
@@ -268,7 +268,7 @@
     if (!ToImport)
       return testing::AssertionFailure() << "Node type mismatch!";
 
-    // Sanity check: the node being imported should match in the same way as
+    // The node being imported should match in the same way as
     // the result node.
     internal::BindableMatcher<NodeType> WrapperMatcher(VerificationMatcher);
     EXPECT_TRUE(Verifier.match(ToImport, WrapperMatcher));
diff --git a/unittests/Analysis/CFGDominatorTree.cpp b/unittests/Analysis/CFGDominatorTree.cpp
index 8cbd72c..db99c13 100644
--- a/unittests/Analysis/CFGDominatorTree.cpp
+++ b/unittests/Analysis/CFGDominatorTree.cpp
@@ -33,7 +33,7 @@
 
   CFG *cfg = Result.getCFG();
 
-  // Sanity checks.
+  // Basic correctness checks.
   EXPECT_EQ(cfg->size(), 4u);
 
   CFGBlock *ExitBlock = *cfg->begin();
@@ -122,7 +122,7 @@
 
   CFG *cfg = Result.getCFG();
 
-  // Sanity checks.
+  // Basic correctness checks.
   EXPECT_EQ(cfg->size(), 6u);
 
   CFGBlock *ExitBlock = *cfg->begin();
diff --git a/unittests/Sema/ExternalSemaSourceTest.cpp b/unittests/Sema/ExternalSemaSourceTest.cpp
index 2a86f94..b7679fe 100644
--- a/unittests/Sema/ExternalSemaSourceTest.cpp
+++ b/unittests/Sema/ExternalSemaSourceTest.cpp
@@ -220,7 +220,7 @@
 };
 
 // Make sure that the DiagnosticWatcher is not miscounting.
-TEST(ExternalSemaSource, SanityCheck) {
+TEST(ExternalSemaSource, DiagCheck) {
   auto Installer = std::make_unique<ExternalSemaSourceInstaller>();
   DiagnosticWatcher Watcher("AAB", "BBB");
   Installer->PushWatcher(&Watcher);
diff --git a/unittests/Tooling/Syntax/TokensTest.cpp b/unittests/Tooling/Syntax/TokensTest.cpp
index 1768529..e7cb257 100644
--- a/unittests/Tooling/Syntax/TokensTest.cpp
+++ b/unittests/Tooling/Syntax/TokensTest.cpp
@@ -633,7 +633,7 @@
     a1 a2 a3 b1 b2
   )cpp");
 
-  // Sanity check: expanded and spelled tokens are stored separately.
+  // Expanded and spelled tokens are stored separately.
   EXPECT_THAT(findExpanded("a1 a2"), Not(SameRange(findSpelled("a1 a2"))));
   // Searching for subranges of expanded tokens should give the corresponding
   // spelled ones.
@@ -751,7 +751,7 @@
 
   SourceRange R(findExpanded("C").front().location(),
                 findExpanded("F_washere").front().location());
-  // Sanity check: expanded and spelled tokens are stored separately.
+  // Expanded and spelled tokens are stored separately.
   EXPECT_THAT(Buffer.expandedTokens(R),
               SameRange(findExpanded("C D_washere E F_washere")));
   EXPECT_THAT(Buffer.expandedTokens(SourceRange()), testing::IsEmpty());
@@ -935,7 +935,7 @@
   recordTokens(R"cpp(
     a1 a2 a3 b1 b2
   )cpp");
-  // Sanity check: expanded and spelled tokens are stored separately.
+  // Expanded and spelled tokens are stored separately.
   EXPECT_THAT(findExpanded("a1 a2"), Not(SameRange(findSpelled("a1 a2"))));
   // Searching for subranges of expanded tokens should give the corresponding
   // spelled ones.
