<div dir="ltr">Ah, found it in <a href="https://reviews.llvm.org/D104819" rel="noreferrer" target="_blank">https://reviews.llvm.org/D104819</a> - good to leave that in in the "Differential Revision: " part of the commit message (or if you end up splitting patches off from a review, such that it doesn't necessarily make sense for it to close the review (preparatory patches, etc) then linking to the review without the "Differential Revision: " prefix and/or linking to a design discussion, etc).<br><br>All good - thanks for the renaming!</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 28, 2021 at 11:38 AM David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Was this design/code reviewed (there's no mention in the commit message of a link to a phab review, for instance)? Probably worth some discussion - if there was a review, could you link it here in a reply?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jun 24, 2021 at 2:23 PM Martin Storsjö via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Martin Storsjö<br>
Date: 2021-06-25T00:22:01+03:00<br>
New Revision: e5c7c171e5db6af1e3dca1059df4287b0d147eaf<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/e5c7c171e5db6af1e3dca1059df4287b0d147eaf" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/e5c7c171e5db6af1e3dca1059df4287b0d147eaf</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/e5c7c171e5db6af1e3dca1059df4287b0d147eaf.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/e5c7c171e5db6af1e3dca1059df4287b0d147eaf.diff</a><br>
<br>
LOG: [clang] Rename StringRef _lower() method calls to _insensitive()<br>
<br>
This is mostly a mechanical change, but a testcase that contains<br>
parts of the StringRef class (clang/test/Analysis/llvm-conventions.cpp)<br>
isn't touched.<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    clang/lib/ASTMatchers/Dynamic/Marshallers.cpp<br>
    clang/lib/Analysis/CalledOnceCheck.cpp<br>
    clang/lib/Analysis/RetainSummaryManager.cpp<br>
    clang/lib/Basic/FileManager.cpp<br>
    clang/lib/CodeGen/TargetInfo.cpp<br>
    clang/lib/Driver/Driver.cpp<br>
    clang/lib/Driver/ToolChains/Arch/RISCV.cpp<br>
    clang/lib/Driver/ToolChains/Clang.cpp<br>
    clang/lib/Driver/ToolChains/Fuchsia.cpp<br>
    clang/lib/Driver/ToolChains/Gnu.cpp<br>
    clang/lib/Driver/ToolChains/Hexagon.cpp<br>
    clang/lib/Driver/ToolChains/MSVC.cpp<br>
    clang/lib/Driver/ToolChains/MinGW.cpp<br>
    clang/lib/Format/Format.cpp<br>
    clang/lib/Format/SortJavaScriptImports.cpp<br>
    clang/lib/Format/UsingDeclarationsSorter.cpp<br>
    clang/lib/Frontend/CompilerInvocation.cpp<br>
    clang/lib/Lex/HeaderMap.cpp<br>
    clang/lib/Lex/PPDirectives.cpp<br>
    clang/lib/Lex/PPMacroExpansion.cpp<br>
    clang/lib/Sema/CodeCompleteConsumer.cpp<br>
    clang/lib/Sema/SemaChecking.cpp<br>
    clang/lib/Sema/SemaCodeComplete.cpp<br>
    clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp<br>
    clang/lib/StaticAnalyzer/Checkers/ContainerModeling.cpp<br>
    clang/lib/StaticAnalyzer/Checkers/GCDAntipatternChecker.cpp<br>
    clang/lib/StaticAnalyzer/Checkers/Iterator.cpp<br>
    clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp<br>
    clang/lib/Tooling/Inclusions/HeaderIncludes.cpp<br>
    clang/lib/Tooling/InterpolatingCompilationDatabase.cpp<br>
    clang/tools/clang-refactor/TestSupport.cpp<br>
    clang/tools/clang-scan-deps/ClangScanDeps.cpp<br>
    clang/tools/driver/driver.cpp<br>
    clang/tools/libclang/CIndexCodeCompletion.cpp<br>
    clang/unittests/Tooling/CompilationDatabaseTest.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp b/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp<br>
index f6fdbe868e2df..40db70e6f4a51 100644<br>
--- a/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp<br>
+++ b/clang/lib/ASTMatchers/Dynamic/Marshallers.cpp<br>
@@ -20,7 +20,7 @@ getBestGuess(llvm::StringRef Search, llvm::ArrayRef<llvm::StringRef> Allowed,<br>
     ++MaxEditDistance;<br>
   llvm::StringRef Res;<br>
   for (const llvm::StringRef &Item : Allowed) {<br>
-    if (Item.equals_lower(Search)) {<br>
+    if (Item.equals_insensitive(Search)) {<br>
       assert(!Item.equals(Search) && "This should be handled earlier on.");<br>
       MaxEditDistance = 1;<br>
       Res = Item;<br>
@@ -40,7 +40,7 @@ getBestGuess(llvm::StringRef Search, llvm::ArrayRef<llvm::StringRef> Allowed,<br>
       auto NoPrefix = Item;<br>
       if (!NoPrefix.consume_front(DropPrefix))<br>
         continue;<br>
-      if (NoPrefix.equals_lower(Search)) {<br>
+      if (NoPrefix.equals_insensitive(Search)) {<br>
         if (NoPrefix.equals(Search))<br>
           return Item.str();<br>
         MaxEditDistance = 1;<br>
<br>
diff  --git a/clang/lib/Analysis/CalledOnceCheck.cpp b/clang/lib/Analysis/CalledOnceCheck.cpp<br>
index db094129a9608..661f7b999f2b9 100644<br>
--- a/clang/lib/Analysis/CalledOnceCheck.cpp<br>
+++ b/clang/lib/Analysis/CalledOnceCheck.cpp<br>
@@ -478,7 +478,7 @@ bool mentionsAnyOfConventionalNames(const Expr *E) {<br>
     return llvm::any_of(<br>
         CONVENTIONAL_CONDITIONS,<br>
         [ConditionName](const llvm::StringLiteral &Conventional) {<br>
-          return ConditionName.contains_lower(Conventional);<br>
+          return ConditionName.contains_insensitive(Conventional);<br>
         });<br>
   });<br>
 }<br>
<br>
diff  --git a/clang/lib/Analysis/RetainSummaryManager.cpp b/clang/lib/Analysis/RetainSummaryManager.cpp<br>
index 58ead1dfe3522..7ed1e40333f43 100644<br>
--- a/clang/lib/Analysis/RetainSummaryManager.cpp<br>
+++ b/clang/lib/Analysis/RetainSummaryManager.cpp<br>
@@ -189,20 +189,22 @@ static bool hasRCAnnotation(const Decl *D, StringRef rcAnnotation) {<br>
 }<br>
<br>
 static bool isRetain(const FunctionDecl *FD, StringRef FName) {<br>
-  return FName.startswith_lower("retain") || FName.endswith_lower("retain");<br>
+  return FName.startswith_insensitive("retain") ||<br>
+         FName.endswith_insensitive("retain");<br>
 }<br>
<br>
 static bool isRelease(const FunctionDecl *FD, StringRef FName) {<br>
-  return FName.startswith_lower("release") || FName.endswith_lower("release");<br>
+  return FName.startswith_insensitive("release") ||<br>
+         FName.endswith_insensitive("release");<br>
 }<br>
<br>
 static bool isAutorelease(const FunctionDecl *FD, StringRef FName) {<br>
-  return FName.startswith_lower("autorelease") ||<br>
-         FName.endswith_lower("autorelease");<br>
+  return FName.startswith_insensitive("autorelease") ||<br>
+         FName.endswith_insensitive("autorelease");<br>
 }<br>
<br>
 static bool isMakeCollectable(StringRef FName) {<br>
-  return FName.contains_lower("MakeCollectable");<br>
+  return FName.contains_insensitive("MakeCollectable");<br>
 }<br>
<br>
 /// A function is OSObject related if it is declared on a subclass<br>
@@ -1100,7 +1102,7 @@ RetainSummaryManager::getStandardMethodSummary(const ObjCMethodDecl *MD,<br>
   if (S.isKeywordSelector()) {<br>
     for (unsigned i = 0, e = S.getNumArgs(); i != e; ++i) {<br>
       StringRef Slot = S.getNameForSlot(i);<br>
-      if (Slot.substr(Slot.size() - 8).equals_lower("delegate")) {<br>
+      if (Slot.substr(Slot.size() - 8).equals_insensitive("delegate")) {<br>
         if (ResultEff == ObjCInitRetE)<br>
           ResultEff = RetEffect::MakeNoRetHard();<br>
         else<br>
<br>
diff  --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp<br>
index d39d7ba22643b..df306bd83136e 100644<br>
--- a/clang/lib/Basic/FileManager.cpp<br>
+++ b/clang/lib/Basic/FileManager.cpp<br>
@@ -128,7 +128,7 @@ FileManager::getDirectoryRef(StringRef DirName, bool CacheFailure) {<br>
   // Stat("C:") does not recognize "C:" as a valid directory<br>
   std::string DirNameStr;<br>
   if (DirName.size() > 1 && DirName.back() == ':' &&<br>
-      DirName.equals_lower(llvm::sys::path::root_name(DirName))) {<br>
+      DirName.equals_insensitive(llvm::sys::path::root_name(DirName))) {<br>
     DirNameStr = DirName.str() + '.';<br>
     DirName = DirNameStr;<br>
   }<br>
<br>
diff  --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp<br>
index 2b3c0e3492a05..e9565a5aef63d 100644<br>
--- a/clang/lib/CodeGen/TargetInfo.cpp<br>
+++ b/clang/lib/CodeGen/TargetInfo.cpp<br>
@@ -2610,7 +2610,7 @@ static std::string qualifyWindowsLibrary(llvm::StringRef Lib) {<br>
   bool Quote = (Lib.find(' ') != StringRef::npos);<br>
   std::string ArgStr = Quote ? "\"" : "";<br>
   ArgStr += Lib;<br>
-  if (!Lib.endswith_lower(".lib") && !Lib.endswith_lower(".a"))<br>
+  if (!Lib.endswith_insensitive(".lib") && !Lib.endswith_insensitive(".a"))<br>
     ArgStr += ".lib";<br>
   ArgStr += Quote ? "\"" : "";<br>
   return ArgStr;<br>
<br>
diff  --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp<br>
index 930941fe8558c..1afaaba79105b 100644<br>
--- a/clang/lib/Driver/Driver.cpp<br>
+++ b/clang/lib/Driver/Driver.cpp<br>
@@ -591,9 +591,9 @@ static llvm::Triple computeTargetTriple(const Driver &D,<br>
   A = Args.getLastArg(options::OPT_march_EQ);<br>
   if (A && Target.isRISCV()) {<br>
     StringRef ArchName = A->getValue();<br>
-    if (ArchName.startswith_lower("rv32"))<br>
+    if (ArchName.startswith_insensitive("rv32"))<br>
       Target.setArch(llvm::Triple::riscv32);<br>
-    else if (ArchName.startswith_lower("rv64"))<br>
+    else if (ArchName.startswith_insensitive("rv64"))<br>
       Target.setArch(llvm::Triple::riscv64);<br>
   }<br>
<br>
@@ -1755,7 +1755,7 @@ void Driver::HandleAutocompletions(StringRef PassedFlags) const {<br>
   // case-insensitive sorting for consistency with the -help option<br>
   // which prints out options in the case-insensitive alphabetical order.<br>
   llvm::sort(SuggestedCompletions, [](StringRef A, StringRef B) {<br>
-    if (int X = A.compare_lower(B))<br>
+    if (int X = A.compare_insensitive(B))<br>
       return X < 0;<br>
     return A.compare(B) > 0;<br>
   });<br>
@@ -3585,7 +3585,8 @@ void Driver::handleArguments(Compilation &C, DerivedArgList &Args,<br>
     if (Args.hasArg(options::OPT_emit_llvm))<br>
       Diag(clang::diag::err_drv_emit_llvm_link);<br>
     if (IsCLMode() && LTOMode != LTOK_None &&<br>
-        !Args.getLastArgValue(options::OPT_fuse_ld_EQ).equals_lower("lld"))<br>
+        !Args.getLastArgValue(options::OPT_fuse_ld_EQ)<br>
+             .equals_insensitive("lld"))<br>
       Diag(clang::diag::err_drv_lto_without_lld);<br>
   }<br>
<br>
@@ -5346,7 +5347,7 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,<br>
       case llvm::Triple::MSVC:<br>
       case llvm::Triple::UnknownEnvironment:<br>
         if (Args.getLastArgValue(options::OPT_fuse_ld_EQ)<br>
-                .startswith_lower("bfd"))<br>
+                .startswith_insensitive("bfd"))<br>
           TC = std::make_unique<toolchains::CrossWindowsToolChain>(<br>
               *this, Target, Args);<br>
         else<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp<br>
index c7f2a3ea5e023..f131d5321070c 100644<br>
--- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp<br>
+++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp<br>
@@ -610,17 +610,19 @@ StringRef riscv::getRISCVABI(const ArgList &Args, const llvm::Triple &Triple) {<br>
   // rv64* -> lp64<br>
   StringRef MArch = getRISCVArch(Args, Triple);<br>
<br>
-  if (MArch.startswith_lower("rv32")) {<br>
+  if (MArch.startswith_insensitive("rv32")) {<br>
     // FIXME: parse `March` to find `D` extension properly<br>
-    if (MArch.substr(4).contains_lower("d") || MArch.startswith_lower("rv32g"))<br>
+    if (MArch.substr(4).contains_insensitive("d") ||<br>
+        MArch.startswith_insensitive("rv32g"))<br>
       return "ilp32d";<br>
-    else if (MArch.startswith_lower("rv32e"))<br>
+    else if (MArch.startswith_insensitive("rv32e"))<br>
       return "ilp32e";<br>
     else<br>
       return "ilp32";<br>
-  } else if (MArch.startswith_lower("rv64")) {<br>
+  } else if (MArch.startswith_insensitive("rv64")) {<br>
     // FIXME: parse `March` to find `D` extension properly<br>
-    if (MArch.substr(4).contains_lower("d") || MArch.startswith_lower("rv64g"))<br>
+    if (MArch.substr(4).contains_insensitive("d") ||<br>
+        MArch.startswith_insensitive("rv64g"))<br>
       return "lp64d";<br>
     else<br>
       return "lp64";<br>
@@ -696,11 +698,11 @@ StringRef riscv::getRISCVArch(const llvm::opt::ArgList &Args,<br>
   if (const Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {<br>
     StringRef MABI = A->getValue();<br>
<br>
-    if (MABI.equals_lower("ilp32e"))<br>
+    if (MABI.equals_insensitive("ilp32e"))<br>
       return "rv32e";<br>
-    else if (MABI.startswith_lower("ilp32"))<br>
+    else if (MABI.startswith_insensitive("ilp32"))<br>
       return "rv32imafdc";<br>
-    else if (MABI.startswith_lower("lp64"))<br>
+    else if (MABI.startswith_insensitive("lp64"))<br>
       return "rv64imafdc";<br>
   }<br>
<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp<br>
index 29b15b516b9e5..f1b5e25525979 100644<br>
--- a/clang/lib/Driver/ToolChains/Clang.cpp<br>
+++ b/clang/lib/Driver/ToolChains/Clang.cpp<br>
@@ -2063,7 +2063,7 @@ static void SetRISCVSmallDataLimit(const ToolChain &TC, const ArgList &Args,<br>
       D.Diag(diag::warn_drv_unsupported_sdata);<br>
     }<br>
   } else if (Args.getLastArgValue(options::OPT_mcmodel_EQ)<br>
-                 .equals_lower("large") &&<br>
+                 .equals_insensitive("large") &&<br>
              (Triple.getArch() == llvm::Triple::riscv64)) {<br>
     // Not support linker relaxation for RV64 with large code model.<br>
     SmallDataLimit = "0";<br>
@@ -6331,7 +6331,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,<br>
   // -finput_charset=UTF-8 is default. Reject others<br>
   if (Arg *inputCharset = Args.getLastArg(options::OPT_finput_charset_EQ)) {<br>
     StringRef value = inputCharset->getValue();<br>
-    if (!value.equals_lower("utf-8"))<br>
+    if (!value.equals_insensitive("utf-8"))<br>
       D.Diag(diag::err_drv_invalid_value) << inputCharset->getAsString(Args)<br>
                                           << value;<br>
   }<br>
@@ -6339,7 +6339,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,<br>
   // -fexec_charset=UTF-8 is default. Reject others<br>
   if (Arg *execCharset = Args.getLastArg(options::OPT_fexec_charset_EQ)) {<br>
     StringRef value = execCharset->getValue();<br>
-    if (!value.equals_lower("utf-8"))<br>
+    if (!value.equals_insensitive("utf-8"))<br>
       D.Diag(diag::err_drv_invalid_value) << execCharset->getAsString(Args)<br>
                                           << value;<br>
   }<br>
@@ -7266,17 +7266,17 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType,<br>
     StringRef GuardArgs = A->getValue();<br>
     // The only valid options are "cf", "cf,nochecks", "cf-", "ehcont" and<br>
     // "ehcont-".<br>
-    if (GuardArgs.equals_lower("cf")) {<br>
+    if (GuardArgs.equals_insensitive("cf")) {<br>
       // Emit CFG instrumentation and the table of address-taken functions.<br>
       CmdArgs.push_back("-cfguard");<br>
-    } else if (GuardArgs.equals_lower("cf,nochecks")) {<br>
+    } else if (GuardArgs.equals_insensitive("cf,nochecks")) {<br>
       // Emit only the table of address-taken functions.<br>
       CmdArgs.push_back("-cfguard-no-checks");<br>
-    } else if (GuardArgs.equals_lower("ehcont")) {<br>
+    } else if (GuardArgs.equals_insensitive("ehcont")) {<br>
       // Emit EH continuation table.<br>
       CmdArgs.push_back("-ehcontguard");<br>
-    } else if (GuardArgs.equals_lower("cf-") ||<br>
-               GuardArgs.equals_lower("ehcont-")) {<br>
+    } else if (GuardArgs.equals_insensitive("cf-") ||<br>
+               GuardArgs.equals_insensitive("ehcont-")) {<br>
       // Do nothing, but we might want to emit a security warning in future.<br>
     } else {<br>
       D.Diag(diag::err_drv_invalid_value) << A->getSpelling() << GuardArgs;<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/Fuchsia.cpp b/clang/lib/Driver/ToolChains/Fuchsia.cpp<br>
index 502afdc1e30c9..fd9804a7f3532 100644<br>
--- a/clang/lib/Driver/ToolChains/Fuchsia.cpp<br>
+++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp<br>
@@ -54,8 +54,8 @@ void fuchsia::Linker::ConstructJob(Compilation &C, const JobAction &JA,<br>
   CmdArgs.push_back("now");<br>
<br>
   const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());<br>
-  if (llvm::sys::path::filename(Exec).equals_lower("ld.lld") ||<br>
-      llvm::sys::path::stem(Exec).equals_lower("ld.lld")) {<br>
+  if (llvm::sys::path::filename(Exec).equals_insensitive("ld.lld") ||<br>
+      llvm::sys::path::stem(Exec).equals_insensitive("ld.lld")) {<br>
     CmdArgs.push_back("-z");<br>
     CmdArgs.push_back("rodynamic");<br>
     CmdArgs.push_back("-z");<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp<br>
index 517ba60e0b77c..bd5f9c744bba6 100644<br>
--- a/clang/lib/Driver/ToolChains/Gnu.cpp<br>
+++ b/clang/lib/Driver/ToolChains/Gnu.cpp<br>
@@ -51,9 +51,9 @@ static void normalizeCPUNamesForAssembler(const ArgList &Args,<br>
                                           ArgStringList &CmdArgs) {<br>
   if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {<br>
     StringRef CPUArg(A->getValue());<br>
-    if (CPUArg.equals_lower("krait"))<br>
+    if (CPUArg.equals_insensitive("krait"))<br>
       CmdArgs.push_back("-mcpu=cortex-a15");<br>
-    else if(CPUArg.equals_lower("kryo"))<br>
+    else if (CPUArg.equals_insensitive("kryo"))<br>
       CmdArgs.push_back("-mcpu=cortex-a57");<br>
     else<br>
       Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ);<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp<br>
index e58b666dbfc00..df97da5a20d6d 100644<br>
--- a/clang/lib/Driver/ToolChains/Hexagon.cpp<br>
+++ b/clang/lib/Driver/ToolChains/Hexagon.cpp<br>
@@ -38,7 +38,7 @@ static void handleHVXWarnings(const Driver &D, const ArgList &Args) {<br>
   // Handle the unsupported values passed to mhvx-length.<br>
   if (Arg *A = Args.getLastArg(options::OPT_mhexagon_hvx_length_EQ)) {<br>
     StringRef Val = A->getValue();<br>
-    if (!Val.equals_lower("64b") && !Val.equals_lower("128b"))<br>
+    if (!Val.equals_insensitive("64b") && !Val.equals_insensitive("128b"))<br>
       D.Diag(diag::err_drv_unsupported_option_argument)<br>
           << A->getOption().getName() << Val;<br>
   }<br>
@@ -218,8 +218,8 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA,<br>
   bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs);<br>
   bool UseG0 = false;<br>
   const char *Exec = Args.MakeArgString(HTC.GetLinkerPath());<br>
-  bool UseLLD = (llvm::sys::path::filename(Exec).equals_lower("ld.lld") ||<br>
-                 llvm::sys::path::stem(Exec).equals_lower("ld.lld"));<br>
+  bool UseLLD = (llvm::sys::path::filename(Exec).equals_insensitive("ld.lld") ||<br>
+                 llvm::sys::path::stem(Exec).equals_insensitive("ld.lld"));<br>
   bool UseShared = IsShared && !IsStatic;<br>
   StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args);<br>
<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp<br>
index 98cf0fff49b2a..0dc94a4c6c7dc 100644<br>
--- a/clang/lib/Driver/ToolChains/MSVC.cpp<br>
+++ b/clang/lib/Driver/ToolChains/MSVC.cpp<br>
@@ -181,24 +181,25 @@ findVCToolChainViaEnvironment(llvm::vfs::FileSystem &VFS, std::string &Path,<br>
<br>
       // whatever/VC/bin --> old toolchain, VC dir is toolchain dir.<br>
       llvm::StringRef TestPath = PathEntry;<br>
-      bool IsBin = llvm::sys::path::filename(TestPath).equals_lower("bin");<br>
+      bool IsBin =<br>
+          llvm::sys::path::filename(TestPath).equals_insensitive("bin");<br>
       if (!IsBin) {<br>
         // Strip any architecture subdir like "amd64".<br>
         TestPath = llvm::sys::path::parent_path(TestPath);<br>
-        IsBin = llvm::sys::path::filename(TestPath).equals_lower("bin");<br>
+        IsBin = llvm::sys::path::filename(TestPath).equals_insensitive("bin");<br>
       }<br>
       if (IsBin) {<br>
         llvm::StringRef ParentPath = llvm::sys::path::parent_path(TestPath);<br>
         llvm::StringRef ParentFilename = llvm::sys::path::filename(ParentPath);<br>
-        if (ParentFilename.equals_lower("VC")) {<br>
+        if (ParentFilename.equals_insensitive("VC")) {<br>
           Path = std::string(ParentPath);<br>
           VSLayout = MSVCToolChain::ToolsetLayout::OlderVS;<br>
           return true;<br>
         }<br>
-        if (ParentFilename.equals_lower("x86ret") ||<br>
-            ParentFilename.equals_lower("x86chk") ||<br>
-            ParentFilename.equals_lower("amd64ret") ||<br>
-            ParentFilename.equals_lower("amd64chk")) {<br>
+        if (ParentFilename.equals_insensitive("x86ret") ||<br>
+            ParentFilename.equals_insensitive("x86chk") ||<br>
+            ParentFilename.equals_insensitive("amd64ret") ||<br>
+            ParentFilename.equals_insensitive("amd64chk")) {<br>
           Path = std::string(ParentPath);<br>
           VSLayout = MSVCToolChain::ToolsetLayout::DevDivInternal;<br>
           return true;<br>
@@ -217,7 +218,7 @@ findVCToolChainViaEnvironment(llvm::vfs::FileSystem &VFS, std::string &Path,<br>
         for (llvm::StringRef Prefix : ExpectedPrefixes) {<br>
           if (It == End)<br>
             goto NotAToolChain;<br>
-          if (!It->startswith_lower(Prefix))<br>
+          if (!It->startswith_insensitive(Prefix))<br>
             goto NotAToolChain;<br>
           ++It;<br>
         }<br>
@@ -507,14 +508,15 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,<br>
   // Control Flow Guard checks<br>
   if (Arg *A = Args.getLastArg(options::OPT__SLASH_guard)) {<br>
     StringRef GuardArgs = A->getValue();<br>
-    if (GuardArgs.equals_lower("cf") || GuardArgs.equals_lower("cf,nochecks")) {<br>
+    if (GuardArgs.equals_insensitive("cf") ||<br>
+        GuardArgs.equals_insensitive("cf,nochecks")) {<br>
       // MSVC doesn't yet support the "nochecks" modifier.<br>
       CmdArgs.push_back("-guard:cf");<br>
-    } else if (GuardArgs.equals_lower("cf-")) {<br>
+    } else if (GuardArgs.equals_insensitive("cf-")) {<br>
       CmdArgs.push_back("-guard:cf-");<br>
-    } else if (GuardArgs.equals_lower("ehcont")) {<br>
+    } else if (GuardArgs.equals_insensitive("ehcont")) {<br>
       CmdArgs.push_back("-guard:ehcont");<br>
-    } else if (GuardArgs.equals_lower("ehcont-")) {<br>
+    } else if (GuardArgs.equals_insensitive("ehcont-")) {<br>
       CmdArgs.push_back("-guard:ehcont-");<br>
     }<br>
   }<br>
@@ -584,10 +586,10 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,<br>
     = Args.getLastArgValue(options::OPT_fuse_ld_EQ, CLANG_DEFAULT_LINKER);<br>
   if (Linker.empty())<br>
     Linker = "link";<br>
-  if (Linker.equals_lower("lld"))<br>
+  if (Linker.equals_insensitive("lld"))<br>
     Linker = "lld-link";<br>
<br>
-  if (Linker.equals_lower("link")) {<br>
+  if (Linker.equals_insensitive("link")) {<br>
     // If we're using the MSVC linker, it's not sufficient to just use link<br>
     // from the program PATH, because other environments like GnuWin32 install<br>
     // their own link.exe which may come first.<br>
@@ -646,7 +648,7 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,<br>
       // find it.<br>
       for (const char *Cursor = EnvBlock.data(); *Cursor != '\0';) {<br>
         llvm::StringRef EnvVar(Cursor);<br>
-        if (EnvVar.startswith_lower("path=")) {<br>
+        if (EnvVar.startswith_insensitive("path=")) {<br>
           using SubDirectoryType = toolchains::MSVCToolChain::SubDirectoryType;<br>
           constexpr size_t PrefixLen = 5; // strlen("path=")<br>
           Environment.push_back(Args.MakeArgString(<br>
<br>
diff  --git a/clang/lib/Driver/ToolChains/MinGW.cpp b/clang/lib/Driver/ToolChains/MinGW.cpp<br>
index 4ebcdf6a94455..467a5479bfb74 100644<br>
--- a/clang/lib/Driver/ToolChains/MinGW.cpp<br>
+++ b/clang/lib/Driver/ToolChains/MinGW.cpp<br>
@@ -427,7 +427,7 @@ toolchains::MinGW::MinGW(const Driver &D, const llvm::Triple &Triple,<br>
<br>
   NativeLLVMSupport =<br>
       Args.getLastArgValue(options::OPT_fuse_ld_EQ, CLANG_DEFAULT_LINKER)<br>
-          .equals_lower("lld");<br>
+          .equals_insensitive("lld");<br>
 }<br>
<br>
 bool toolchains::MinGW::IsIntegratedAssemblerDefault() const { return true; }<br>
<br>
diff  --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp<br>
index 71b7820c2b1c6..e95ec55d0805d 100644<br>
--- a/clang/lib/Format/Format.cpp<br>
+++ b/clang/lib/Format/Format.cpp<br>
@@ -1441,23 +1441,23 @@ FormatStyle getNoStyle() {<br>
<br>
 bool getPredefinedStyle(StringRef Name, FormatStyle::LanguageKind Language,<br>
                         FormatStyle *Style) {<br>
-  if (Name.equals_lower("llvm")) {<br>
+  if (Name.equals_insensitive("llvm")) {<br>
     *Style = getLLVMStyle(Language);<br>
-  } else if (Name.equals_lower("chromium")) {<br>
+  } else if (Name.equals_insensitive("chromium")) {<br>
     *Style = getChromiumStyle(Language);<br>
-  } else if (Name.equals_lower("mozilla")) {<br>
+  } else if (Name.equals_insensitive("mozilla")) {<br>
     *Style = getMozillaStyle();<br>
-  } else if (Name.equals_lower("google")) {<br>
+  } else if (Name.equals_insensitive("google")) {<br>
     *Style = getGoogleStyle(Language);<br>
-  } else if (Name.equals_lower("webkit")) {<br>
+  } else if (Name.equals_insensitive("webkit")) {<br>
     *Style = getWebKitStyle();<br>
-  } else if (Name.equals_lower("gnu")) {<br>
+  } else if (Name.equals_insensitive("gnu")) {<br>
     *Style = getGNUStyle();<br>
-  } else if (Name.equals_lower("microsoft")) {<br>
+  } else if (Name.equals_insensitive("microsoft")) {<br>
     *Style = getMicrosoftStyle(Language);<br>
-  } else if (Name.equals_lower("none")) {<br>
+  } else if (Name.equals_insensitive("none")) {<br>
     *Style = getNoStyle();<br>
-  } else if (Name.equals_lower("inheritparentconfig")) {<br>
+  } else if (Name.equals_insensitive("inheritparentconfig")) {<br>
     Style->InheritsParentConfig = true;<br>
   } else {<br>
     return false;<br>
@@ -2973,22 +2973,23 @@ const char *StyleOptionHelpDescription =<br>
 static FormatStyle::LanguageKind getLanguageByFileName(StringRef FileName) {<br>
   if (FileName.endswith(".java"))<br>
     return FormatStyle::LK_Java;<br>
-  if (FileName.endswith_lower(".js") || FileName.endswith_lower(".mjs") ||<br>
-      FileName.endswith_lower(".ts"))<br>
+  if (FileName.endswith_insensitive(".js") ||<br>
+      FileName.endswith_insensitive(".mjs") ||<br>
+      FileName.endswith_insensitive(".ts"))<br>
     return FormatStyle::LK_JavaScript; // (module) JavaScript or TypeScript.<br>
   if (FileName.endswith(".m") || FileName.endswith(".mm"))<br>
     return FormatStyle::LK_ObjC;<br>
-  if (FileName.endswith_lower(".proto") ||<br>
-      FileName.endswith_lower(".protodevel"))<br>
+  if (FileName.endswith_insensitive(".proto") ||<br>
+      FileName.endswith_insensitive(".protodevel"))<br>
     return FormatStyle::LK_Proto;<br>
-  if (FileName.endswith_lower(".textpb") ||<br>
-      FileName.endswith_lower(".pb.txt") ||<br>
-      FileName.endswith_lower(".textproto") ||<br>
-      FileName.endswith_lower(".asciipb"))<br>
+  if (FileName.endswith_insensitive(".textpb") ||<br>
+      FileName.endswith_insensitive(".pb.txt") ||<br>
+      FileName.endswith_insensitive(".textproto") ||<br>
+      FileName.endswith_insensitive(".asciipb"))<br>
     return FormatStyle::LK_TextProto;<br>
-  if (FileName.endswith_lower(".td"))<br>
+  if (FileName.endswith_insensitive(".td"))<br>
     return FormatStyle::LK_TableGen;<br>
-  if (FileName.endswith_lower(".cs"))<br>
+  if (FileName.endswith_insensitive(".cs"))<br>
     return FormatStyle::LK_CSharp;<br>
   return FormatStyle::LK_Cpp;<br>
 }<br>
@@ -3048,7 +3049,7 @@ llvm::Expected<FormatStyle> getStyle(StringRef StyleName, StringRef FileName,<br>
   // If the style inherits the parent configuration it is a command line<br>
   // configuration, which wants to inherit, so we have to skip the check of the<br>
   // StyleName.<br>
-  if (!Style.InheritsParentConfig && !StyleName.equals_lower("file")) {<br>
+  if (!Style.InheritsParentConfig && !StyleName.equals_insensitive("file")) {<br>
     if (!getPredefinedStyle(StyleName, Style.Language, &Style))<br>
       return make_string_error("Invalid value for -style");<br>
     if (!Style.InheritsParentConfig)<br>
<br>
diff  --git a/clang/lib/Format/SortJavaScriptImports.cpp b/clang/lib/Format/SortJavaScriptImports.cpp<br>
index 901204c297f9d..a5e3ce69207bd 100644<br>
--- a/clang/lib/Format/SortJavaScriptImports.cpp<br>
+++ b/clang/lib/Format/SortJavaScriptImports.cpp<br>
@@ -113,7 +113,7 @@ bool operator<(const JsModuleReference &LHS, const JsModuleReference &RHS) {<br>
   // Empty URLs sort *last* (for export {...};).<br>
   if (LHS.URL.empty() != RHS.URL.empty())<br>
     return LHS.URL.empty() < RHS.URL.empty();<br>
-  if (int Res = LHS.URL.compare_lower(RHS.URL))<br>
+  if (int Res = LHS.URL.compare_insensitive(RHS.URL))<br>
     return Res < 0;<br>
   // '*' imports (with prefix) sort before {a, b, ...} imports.<br>
   if (LHS.Prefix.empty() != RHS.Prefix.empty())<br>
@@ -327,7 +327,7 @@ class JavaScriptImportSorter : public TokenAnalyzer {<br>
     SmallVector<JsImportedSymbol, 1> Symbols = Reference.Symbols;<br>
     llvm::stable_sort(<br>
         Symbols, [&](const JsImportedSymbol &LHS, const JsImportedSymbol &RHS) {<br>
-          return LHS.Symbol.compare_lower(RHS.Symbol) < 0;<br>
+          return LHS.Symbol.compare_insensitive(RHS.Symbol) < 0;<br>
         });<br>
     if (!Reference.SymbolsMerged && Symbols == Reference.Symbols) {<br>
       // Symbols didn't change, just emit the entire module reference.<br>
<br>
diff  --git a/clang/lib/Format/UsingDeclarationsSorter.cpp b/clang/lib/Format/UsingDeclarationsSorter.cpp<br>
index b6559db61d0cb..5608a5a759537 100644<br>
--- a/clang/lib/Format/UsingDeclarationsSorter.cpp<br>
+++ b/clang/lib/Format/UsingDeclarationsSorter.cpp<br>
@@ -48,7 +48,7 @@ int compareLabels(StringRef A, StringRef B) {<br>
         return -1;<br>
<br>
       // Two names within a group compare case-insensitively.<br>
-      return NamesA[I].compare_lower(NamesB[I]);<br>
+      return NamesA[I].compare_insensitive(NamesB[I]);<br>
     }<br>
<br>
     // I is the last index of NamesB and NamesB[I] is a non-namespace name.<br>
@@ -57,7 +57,7 @@ int compareLabels(StringRef A, StringRef B) {<br>
       return 1;<br>
<br>
     // Two namespaces names within a group compare case-insensitively.<br>
-    int C = NamesA[I].compare_lower(NamesB[I]);<br>
+    int C = NamesA[I].compare_insensitive(NamesB[I]);<br>
     if (C != 0)<br>
       return C;<br>
   }<br>
<br>
diff  --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp<br>
index c1b7b027b3b4d..126e9c7a9cd5e 100644<br>
--- a/clang/lib/Frontend/CompilerInvocation.cpp<br>
+++ b/clang/lib/Frontend/CompilerInvocation.cpp<br>
@@ -3986,13 +3986,13 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,<br>
   if (Arg *A = Args.getLastArg(OPT_msign_return_address_EQ)) {<br>
     StringRef SignScope = A->getValue();<br>
<br>
-    if (SignScope.equals_lower("none"))<br>
+    if (SignScope.equals_insensitive("none"))<br>
       Opts.setSignReturnAddressScope(<br>
           LangOptions::SignReturnAddressScopeKind::None);<br>
-    else if (SignScope.equals_lower("all"))<br>
+    else if (SignScope.equals_insensitive("all"))<br>
       Opts.setSignReturnAddressScope(<br>
           LangOptions::SignReturnAddressScopeKind::All);<br>
-    else if (SignScope.equals_lower("non-leaf"))<br>
+    else if (SignScope.equals_insensitive("non-leaf"))<br>
       Opts.setSignReturnAddressScope(<br>
           LangOptions::SignReturnAddressScopeKind::NonLeaf);<br>
     else<br>
@@ -4002,10 +4002,10 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,<br>
     if (Arg *A = Args.getLastArg(OPT_msign_return_address_key_EQ)) {<br>
       StringRef SignKey = A->getValue();<br>
       if (!SignScope.empty() && !SignKey.empty()) {<br>
-        if (SignKey.equals_lower("a_key"))<br>
+        if (SignKey.equals_insensitive("a_key"))<br>
           Opts.setSignReturnAddressKey(<br>
               LangOptions::SignReturnAddressKeyKind::AKey);<br>
-        else if (SignKey.equals_lower("b_key"))<br>
+        else if (SignKey.equals_insensitive("b_key"))<br>
           Opts.setSignReturnAddressKey(<br>
               LangOptions::SignReturnAddressKeyKind::BKey);<br>
         else<br>
<br>
diff  --git a/clang/lib/Lex/HeaderMap.cpp b/clang/lib/Lex/HeaderMap.cpp<br>
index 4b60cfa7b52dd..ae5e6b221953f 100644<br>
--- a/clang/lib/Lex/HeaderMap.cpp<br>
+++ b/clang/lib/Lex/HeaderMap.cpp<br>
@@ -224,7 +224,7 @@ StringRef HeaderMapImpl::lookupFilename(StringRef Filename,<br>
     Optional<StringRef> Key = getString(B.Key);<br>
     if (LLVM_UNLIKELY(!Key))<br>
       continue;<br>
-    if (!Filename.equals_lower(*Key))<br>
+    if (!Filename.equals_insensitive(*Key))<br>
       continue;<br>
<br>
     // If so, we have a match in the hash table.  Construct the destination<br>
<br>
diff  --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp<br>
index 87741b0a024a2..d0e4962a37479 100644<br>
--- a/clang/lib/Lex/PPDirectives.cpp<br>
+++ b/clang/lib/Lex/PPDirectives.cpp<br>
@@ -196,7 +196,7 @@ static MacroDiag shouldWarnOnMacroUndef(Preprocessor &PP, IdentifierInfo *II) {<br>
 static bool warnByDefaultOnWrongCase(StringRef Include) {<br>
   // If the first component of the path is "boost", treat this like a standard header<br>
   // for the purposes of diagnostics.<br>
-  if (::llvm::sys::path::begin(Include)->equals_lower("boost"))<br>
+  if (::llvm::sys::path::begin(Include)->equals_insensitive("boost"))<br>
     return true;<br>
<br>
   // "condition_variable" is the longest standard header name at 18 characters.<br>
@@ -1723,7 +1723,8 @@ static bool trySimplifyPath(SmallVectorImpl<StringRef> &Components,<br>
         // If these path components <br>
diff er by more than just case, then we<br>
         // may be looking at symlinked paths. Bail on this diagnostic to avoid<br>
         // noisy false positives.<br>
-        SuggestReplacement = RealPathComponentIter->equals_lower(Component);<br>
+        SuggestReplacement =<br>
+            RealPathComponentIter->equals_insensitive(Component);<br>
         if (!SuggestReplacement)<br>
           break;<br>
         Component = *RealPathComponentIter;<br>
<br>
diff  --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp<br>
index 74ef9df592dbe..8728ac9e2166e 100644<br>
--- a/clang/lib/Lex/PPMacroExpansion.cpp<br>
+++ b/clang/lib/Lex/PPMacroExpansion.cpp<br>
@@ -1430,7 +1430,7 @@ static bool isTargetVendor(const TargetInfo &TI, const IdentifierInfo *II) {<br>
   StringRef VendorName = TI.getTriple().getVendorName();<br>
   if (VendorName.empty())<br>
     VendorName = "unknown";<br>
-  return VendorName.equals_lower(II->getName());<br>
+  return VendorName.equals_insensitive(II->getName());<br>
 }<br>
<br>
 /// Implements the __is_target_os builtin macro.<br>
<br>
diff  --git a/clang/lib/Sema/CodeCompleteConsumer.cpp b/clang/lib/Sema/CodeCompleteConsumer.cpp<br>
index 678a09ba10034..3ab2a18f5e8d5 100644<br>
--- a/clang/lib/Sema/CodeCompleteConsumer.cpp<br>
+++ b/clang/lib/Sema/CodeCompleteConsumer.cpp<br>
@@ -755,7 +755,7 @@ bool clang::operator<(const CodeCompletionResult &X,<br>
   std::string XSaved, YSaved;<br>
   StringRef XStr = X.getOrderedName(XSaved);<br>
   StringRef YStr = Y.getOrderedName(YSaved);<br>
-  int cmp = XStr.compare_lower(YStr);<br>
+  int cmp = XStr.compare_insensitive(YStr);<br>
   if (cmp)<br>
     return cmp < 0;<br>
<br>
<br>
diff  --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp<br>
index 3b95a1344075a..561c83eddce2f 100644<br>
--- a/clang/lib/Sema/SemaChecking.cpp<br>
+++ b/clang/lib/Sema/SemaChecking.cpp<br>
@@ -6971,18 +6971,18 @@ bool Sema::SemaBuiltinARMSpecialReg(unsigned BuiltinID, CallExpr *TheCall,<br>
<br>
     bool ValidString = true;<br>
     if (IsARMBuiltin) {<br>
-      ValidString &= Fields[0].startswith_lower("cp") ||<br>
-                     Fields[0].startswith_lower("p");<br>
+      ValidString &= Fields[0].startswith_insensitive("cp") ||<br>
+                     Fields[0].startswith_insensitive("p");<br>
       if (ValidString)<br>
-        Fields[0] =<br>
-          Fields[0].drop_front(Fields[0].startswith_lower("cp") ? 2 : 1);<br>
+        Fields[0] = Fields[0].drop_front(<br>
+            Fields[0].startswith_insensitive("cp") ? 2 : 1);<br>
<br>
-      ValidString &= Fields[2].startswith_lower("c");<br>
+      ValidString &= Fields[2].startswith_insensitive("c");<br>
       if (ValidString)<br>
         Fields[2] = Fields[2].drop_front(1);<br>
<br>
       if (FiveFields) {<br>
-        ValidString &= Fields[3].startswith_lower("c");<br>
+        ValidString &= Fields[3].startswith_insensitive("c");<br>
         if (ValidString)<br>
           Fields[3] = Fields[3].drop_front(1);<br>
       }<br>
<br>
diff  --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp<br>
index 1ab9c50709a9d..e03b671ae61e7 100644<br>
--- a/clang/lib/Sema/SemaCodeComplete.cpp<br>
+++ b/clang/lib/Sema/SemaCodeComplete.cpp<br>
@@ -9491,10 +9491,10 @@ void Sema::CodeCompleteIncludedFile(llvm::StringRef Dir, bool Angled) {<br>
         // Only files that really look like headers. (Except in system dirs).<br>
         if (!IsSystem) {<br>
           // Header extensions from Types.def, which we can't depend on here.<br>
-          if (!(Filename.endswith_lower(".h") ||<br>
-                Filename.endswith_lower(".hh") ||<br>
-                Filename.endswith_lower(".hpp") ||<br>
-                Filename.endswith_lower(".inc")))<br>
+          if (!(Filename.endswith_insensitive(".h") ||<br>
+                Filename.endswith_insensitive(".hh") ||<br>
+                Filename.endswith_insensitive(".hpp") ||<br>
+                Filename.endswith_insensitive(".inc")))<br>
             break;<br>
         }<br>
         AddCompletion(Filename, /*IsDirectory=*/false);<br>
<br>
diff  --git a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp<br>
index 4e49dbc2facce..69b90be9aa7e6 100644<br>
--- a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp<br>
+++ b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp<br>
@@ -2039,7 +2039,7 @@ void CStringChecker::evalStrcmpCommon(CheckerContext &C, const CallExpr *CE,<br>
         RightStrRef = RightStrRef.substr(0, s2Term);<br>
<br>
       // Use StringRef's comparison methods to compute the actual result.<br>
-      int compareRes = IgnoreCase ? LeftStrRef.compare_lower(RightStrRef)<br>
+      int compareRes = IgnoreCase ? LeftStrRef.compare_insensitive(RightStrRef)<br>
                                   : LeftStrRef.compare(RightStrRef);<br>
<br>
       // The strcmp function returns an integer greater than, equal to, or less<br>
<br>
diff  --git a/clang/lib/StaticAnalyzer/Checkers/ContainerModeling.cpp b/clang/lib/StaticAnalyzer/Checkers/ContainerModeling.cpp<br>
index 73c6517fd0ebf..1a7f0d5ab74c2 100644<br>
--- a/clang/lib/StaticAnalyzer/Checkers/ContainerModeling.cpp<br>
+++ b/clang/lib/StaticAnalyzer/Checkers/ContainerModeling.cpp<br>
@@ -763,14 +763,14 @@ bool isBeginCall(const FunctionDecl *Func) {<br>
   const auto *IdInfo = Func->getIdentifier();<br>
   if (!IdInfo)<br>
     return false;<br>
-  return IdInfo->getName().endswith_lower("begin");<br>
+  return IdInfo->getName().endswith_insensitive("begin");<br>
 }<br>
<br>
 bool isEndCall(const FunctionDecl *Func) {<br>
   const auto *IdInfo = Func->getIdentifier();<br>
   if (!IdInfo)<br>
     return false;<br>
-  return IdInfo->getName().endswith_lower("end");<br>
+  return IdInfo->getName().endswith_insensitive("end");<br>
 }<br>
<br>
 const CXXRecordDecl *getCXXRecordDecl(ProgramStateRef State,<br>
<br>
diff  --git a/clang/lib/StaticAnalyzer/Checkers/GCDAntipatternChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/GCDAntipatternChecker.cpp<br>
index 63fbe75fd4983..8e02ef74c6686 100644<br>
--- a/clang/lib/StaticAnalyzer/Checkers/GCDAntipatternChecker.cpp<br>
+++ b/clang/lib/StaticAnalyzer/Checkers/GCDAntipatternChecker.cpp<br>
@@ -80,7 +80,7 @@ static bool isTest(const Decl *D) {<br>
     if (const auto *CD = dyn_cast<ObjCContainerDecl>(OD->getParent())) {<br>
       std::string ContainerName = CD->getNameAsString();<br>
       StringRef CN(ContainerName);<br>
-      if (CN.contains_lower("test") || CN.contains_lower("mock"))<br>
+      if (CN.contains_insensitive("test") || CN.contains_insensitive("mock"))<br>
         return true;<br>
     }<br>
   }<br>
<br>
diff  --git a/clang/lib/StaticAnalyzer/Checkers/Iterator.cpp b/clang/lib/StaticAnalyzer/Checkers/Iterator.cpp<br>
index ac0f24603dd90..4961901499914 100644<br>
--- a/clang/lib/StaticAnalyzer/Checkers/Iterator.cpp<br>
+++ b/clang/lib/StaticAnalyzer/Checkers/Iterator.cpp<br>
@@ -29,8 +29,8 @@ bool isIterator(const CXXRecordDecl *CRD) {<br>
     return false;<br>
<br>
   const auto Name = CRD->getName();<br>
-  if (!(Name.endswith_lower("iterator") || Name.endswith_lower("iter") ||<br>
-        Name.endswith_lower("it")))<br>
+  if (!(Name.endswith_insensitive("iterator") ||<br>
+        Name.endswith_insensitive("iter") || Name.endswith_insensitive("it")))<br>
     return false;<br>
<br>
   bool HasCopyCtor = false, HasCopyAssign = true, HasDtor = false,<br>
<br>
diff  --git a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp<br>
index e0f0dc35e7a71..a6470da09c458 100644<br>
--- a/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp<br>
+++ b/clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp<br>
@@ -3145,9 +3145,10 @@ static SymbolRef findFailedReallocSymbol(ProgramStateRef currState,<br>
 static bool isReferenceCountingPointerDestructor(const CXXDestructorDecl *DD) {<br>
   if (const IdentifierInfo *II = DD->getParent()->getIdentifier()) {<br>
     StringRef N = II->getName();<br>
-    if (N.contains_lower("ptr") || N.contains_lower("pointer")) {<br>
-      if (N.contains_lower("ref") || N.contains_lower("cnt") ||<br>
-          N.contains_lower("intrusive") || N.contains_lower("shared")) {<br>
+    if (N.contains_insensitive("ptr") || N.contains_insensitive("pointer")) {<br>
+      if (N.contains_insensitive("ref") || N.contains_insensitive("cnt") ||<br>
+          N.contains_insensitive("intrusive") ||<br>
+          N.contains_insensitive("shared")) {<br>
         return true;<br>
       }<br>
     }<br>
<br>
diff  --git a/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp b/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp<br>
index d1f984632660f..fbceb26c39c7c 100644<br>
--- a/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp<br>
+++ b/clang/lib/Tooling/Inclusions/HeaderIncludes.cpp<br>
@@ -252,9 +252,9 @@ bool IncludeCategoryManager::isMainHeader(StringRef IncludeName) const {<br>
   //  1) foo.h => bar.cc<br>
   //  2) foo.proto.h => foo.cc<br>
   StringRef Matching;<br>
-  if (MatchingFileStem.startswith_lower(HeaderStem))<br>
+  if (MatchingFileStem.startswith_insensitive(HeaderStem))<br>
     Matching = MatchingFileStem; // example 1), 2)<br>
-  else if (FileStem.equals_lower(HeaderStem))<br>
+  else if (FileStem.equals_insensitive(HeaderStem))<br>
     Matching = FileStem; // example 3)<br>
   if (!Matching.empty()) {<br>
     llvm::Regex MainIncludeRegex(HeaderStem.str() + Style.IncludeIsMainRegex,<br>
<br>
diff  --git a/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp b/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp<br>
index 3b65504b98ea3..650e510fb68ff 100644<br>
--- a/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp<br>
+++ b/clang/lib/Tooling/InterpolatingCompilationDatabase.cpp<br>
@@ -256,7 +256,7 @@ struct TransferableCommand {<br>
<br>
     // Otherwise just check the clang executable file name.<br>
     return !CmdLine.empty() &&<br>
-           llvm::sys::path::stem(CmdLine.front()).endswith_lower("cl");<br>
+           llvm::sys::path::stem(CmdLine.front()).endswith_insensitive("cl");<br>
   }<br>
<br>
   // Map the language from the --std flag to that of the -x flag.<br>
<br>
diff  --git a/clang/tools/clang-refactor/TestSupport.cpp b/clang/tools/clang-refactor/TestSupport.cpp<br>
index 34499b93c97ea..eb880889749f5 100644<br>
--- a/clang/tools/clang-refactor/TestSupport.cpp<br>
+++ b/clang/tools/clang-refactor/TestSupport.cpp<br>
@@ -328,8 +328,8 @@ findTestSelectionRanges(StringRef Filename) {<br>
     // Try to detect mistyped 'range:' comments to ensure tests don't miss<br>
     // anything.<br>
     auto DetectMistypedCommand = [&]() -> bool {<br>
-      if (Comment.contains_lower("range") && Comment.contains("=") &&<br>
-          !Comment.contains_lower("run") && !Comment.contains("CHECK")) {<br>
+      if (Comment.contains_insensitive("range") && Comment.contains("=") &&<br>
+          !Comment.contains_insensitive("run") && !Comment.contains("CHECK")) {<br>
         llvm::errs() << "error: suspicious comment '" << Comment<br>
                      << "' that "<br>
                         "resembles the range command found\n";<br>
<br>
diff  --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp b/clang/tools/clang-scan-deps/ClangScanDeps.cpp<br>
index 49c4757686623..b6533361c5296 100644<br>
--- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp<br>
+++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp<br>
@@ -465,7 +465,7 @@ int main(int argc, const char **argv) {<br>
         auto FlagsEnd = llvm::find(Args, "--");<br>
         if (FlagsEnd != Args.begin()) {<br>
           ClangCLMode =<br>
-              llvm::sys::path::stem(Args[0]).contains_lower("clang-cl") ||<br>
+              llvm::sys::path::stem(Args[0]).contains_insensitive("clang-cl") ||<br>
               llvm::is_contained(Args, "--driver-mode=cl");<br>
<br>
           // Reverse scan, starting at the end or at the element before "--".<br>
<br>
diff  --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp<br>
index ee3ffe3012d1e..9e3f51db21a9d 100644<br>
--- a/clang/tools/driver/driver.cpp<br>
+++ b/clang/tools/driver/driver.cpp<br>
@@ -273,7 +273,7 @@ static void FixupDiagPrefixExeName(TextDiagnosticPrinter *DiagClient,<br>
   // If the clang binary happens to be named cl.exe for compatibility reasons,<br>
   // use clang-cl.exe as the prefix to avoid confusion between clang and MSVC.<br>
   StringRef ExeBasename(llvm::sys::path::stem(Path));<br>
-  if (ExeBasename.equals_lower("cl"))<br>
+  if (ExeBasename.equals_insensitive("cl"))<br>
     ExeBasename = "clang-cl";<br>
   DiagClient->setPrefix(std::string(ExeBasename));<br>
 }<br>
<br>
diff  --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp<br>
index 6685c892749ea..68f35c41efd74 100644<br>
--- a/clang/tools/libclang/CIndexCodeCompletion.cpp<br>
+++ b/clang/tools/libclang/CIndexCodeCompletion.cpp<br>
@@ -1026,7 +1026,7 @@ namespace {<br>
       if (XText.empty() || YText.empty())<br>
         return !XText.empty();<br>
<br>
-      int result = XText.compare_lower(YText);<br>
+      int result = XText.compare_insensitive(YText);<br>
       if (result < 0)<br>
         return true;<br>
       if (result > 0)<br>
<br>
diff  --git a/clang/unittests/Tooling/CompilationDatabaseTest.cpp b/clang/unittests/Tooling/CompilationDatabaseTest.cpp<br>
index 8ff3387d3c185..9a04de32c852d 100644<br>
--- a/clang/unittests/Tooling/CompilationDatabaseTest.cpp<br>
+++ b/clang/unittests/Tooling/CompilationDatabaseTest.cpp<br>
@@ -210,7 +210,7 @@ TEST(JSONCompilationDatabase, ArgumentsPreferredOverCommand) {<br>
 struct FakeComparator : public PathComparator {<br>
   ~FakeComparator() override {}<br>
   bool equivalent(StringRef FileA, StringRef FileB) const override {<br>
-    return FileA.equals_lower(FileB);<br>
+    return FileA.equals_insensitive(FileB);<br>
   }<br>
 };<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>
</blockquote></div>