diff --git a/clang/test/Preprocessor/macro-reserved.c b/clang/test/Preprocessor/macro-reserved.c
index f7bec04..94245c0 100644
--- a/clang/test/Preprocessor/macro-reserved.c
+++ b/clang/test/Preprocessor/macro-reserved.c
@@ -14,7 +14,7 @@
 #undef _HAVE_X
 #undef X__Y
 
-// whitelisted definitions
+// allowlisted definitions
 #define while while
 #define const
 #define static
diff --git a/clang/test/Preprocessor/macro-reserved.cpp b/clang/test/Preprocessor/macro-reserved.cpp
index f06d75c..c4f5ee9 100644
--- a/clang/test/Preprocessor/macro-reserved.cpp
+++ b/clang/test/Preprocessor/macro-reserved.cpp
@@ -15,7 +15,7 @@
 #undef __cplusplus
 #define __cplusplus
 
-// whitelisted definitions
+// allowlisted definitions
 #define while while
 #define const
 #define static
diff --git a/clang/test/Sema/conversion.c b/clang/test/Sema/conversion.c
index ba4adbd..02131e4 100644
--- a/clang/test/Sema/conversion.c
+++ b/clang/test/Sema/conversion.c
@@ -294,7 +294,7 @@
 }
 
 void test14(long l) {
-  // Fine because of the boolean whitelist.
+  // Fine because of the boolean allowlist.
   char c;
   c = (l == 4);
   c = ((l <= 4) && (l >= 0));
diff --git a/clang/test/SemaCXX/reinterpret-cast.cpp b/clang/test/SemaCXX/reinterpret-cast.cpp
index f427af1..1b84df1 100644
--- a/clang/test/SemaCXX/reinterpret-cast.cpp
+++ b/clang/test/SemaCXX/reinterpret-cast.cpp
@@ -221,7 +221,7 @@
   (void)*reinterpret_cast<void*>(&f); // expected-warning {{ISO C++ does not allow}}
 }
 
-void reinterpret_cast_whitelist () {
+void reinterpret_cast_allowlist () {
   // the dynamic type of the object
   int a;
   float b;
diff --git a/clang/test/SemaObjC/warn-retain-cycle.m b/clang/test/SemaObjC/warn-retain-cycle.m
index 7d40e26..eadd227 100644
--- a/clang/test/SemaObjC/warn-retain-cycle.m
+++ b/clang/test/SemaObjC/warn-retain-cycle.m
@@ -111,7 +111,7 @@
 void doSomething(unsigned v);
 @implementation Test3
 - (void) test {
-  // 'addOperationWithBlock:' is specifically whitelisted.
+  // 'addOperationWithBlock:' is specifically allowlisted.
   [myOperationQueue addOperationWithBlock:^() { // no-warning
     if (count > 20) {
       doSomething(count);
diff --git a/clang/unittests/Driver/SanitizerArgsTest.cpp b/clang/unittests/Driver/SanitizerArgsTest.cpp
index 2539330..8eecd53 100644
--- a/clang/unittests/Driver/SanitizerArgsTest.cpp
+++ b/clang/unittests/Driver/SanitizerArgsTest.cpp
@@ -114,7 +114,7 @@
 }
 
 TEST_F(SanitizerArgsTest, XRayLists) {
-  const std::string XRayWhitelist = "/source/xray_whitelist.txt";
+  const std::string XRayAllowlist = "/source/xray_allowlist.txt";
   const std::string XRayIgnorelist = "/source/xray_ignorelist.txt";
   const std::string XRayAttrList = "/source/xray_attr_list.txt";
 
@@ -122,16 +122,16 @@
       /*ExtraArgs=*/
       {
           "-fxray-instrument",
-          "-fxray-always-instrument=" + XRayWhitelist,
+          "-fxray-always-instrument=" + XRayAllowlist,
           "-fxray-never-instrument=" + XRayIgnorelist,
           "-fxray-attr-list=" + XRayAttrList,
       },
-      /*ExtraFiles=*/{XRayWhitelist, XRayIgnorelist, XRayAttrList});
+      /*ExtraFiles=*/{XRayAllowlist, XRayIgnorelist, XRayAttrList});
 
   // Ignorelists exist in the filesystem, so they should be added to the
   // compilation command, produced by the driver.
   EXPECT_THAT(Command.getArguments(),
-              Contains(StrEq("-fxray-always-instrument=" + XRayWhitelist)));
+              Contains(StrEq("-fxray-always-instrument=" + XRayAllowlist)));
   EXPECT_THAT(Command.getArguments(),
               Contains(StrEq("-fxray-never-instrument=" + XRayIgnorelist)));
   EXPECT_THAT(Command.getArguments(),
