https://github.com/localspook updated 
https://github.com/llvm/llvm-project/pull/156265

>From c368372b8cc915a401a5dcbf6346e23a101f95e4 Mon Sep 17 00:00:00 2001
From: Victor Chernyakin <chernyakin.victo...@outlook.com>
Date: Sun, 31 Aug 2025 17:18:42 -0700
Subject: [PATCH 1/2] [clang-tidy][NFC] Enable
 `readability-convert-member-functions-to-static` in the codebase

---
 clang-tools-extra/clang-tidy/.clang-tidy      |  1 -
 .../clang-tidy/ClangTidyProfiling.h           |  3 +-
 .../ExpandModularHeadersPPCallbacks.cpp       |  2 +-
 .../altera/IdDependentBackwardBranchCheck.h   |  2 +-
 .../altera/KernelNameRestrictionCheck.cpp     |  2 +-
 .../clang-tidy/altera/UnrollLoopsCheck.h      | 13 ++++---
 .../clang-tidy/android/CloexecCheck.cpp       |  2 +-
 .../clang-tidy/android/CloexecCheck.h         |  4 +-
 .../bugprone/AssignmentInIfConditionCheck.cpp |  7 ++--
 .../clang-tidy/bugprone/BranchCloneCheck.cpp  | 16 +++++---
 .../MacroRepeatedSideEffectsCheck.cpp         |  5 +--
 .../fuchsia/MultipleInheritanceCheck.cpp      |  2 +-
 .../fuchsia/MultipleInheritanceCheck.h        |  2 +-
 .../clang-tidy/misc/StaticAssertCheck.h       |  4 +-
 .../misc/ThrowByValueCatchByReferenceCheck.h  |  4 +-
 .../clang-tidy/misc/UnusedParametersCheck.cpp |  2 +-
 .../modernize/DeprecatedHeadersCheck.cpp      |  4 +-
 .../clang-tidy/modernize/LoopConvertCheck.h   | 22 +++++------
 .../modernize/UseStdNumbersCheck.cpp          |  7 ++--
 .../modernize/UseTrailingReturnTypeCheck.cpp  |  2 +-
 .../UnnecessaryCopyInitialization.h           |  3 +-
 .../AvoidUnconditionalPreprocessorIfCheck.cpp |  2 +-
 .../ConvertMemberFunctionsToStatic.cpp        |  2 +-
 .../readability/IdentifierNamingCheck.cpp     | 20 +++++-----
 .../readability/IdentifierNamingCheck.h       | 38 +++++++++----------
 .../readability/MagicNumbersCheck.cpp         |  4 +-
 .../readability/MagicNumbersCheck.h           |  8 ++--
 .../clang-tidy/utils/FormatStringConverter.h  | 12 +++---
 .../clang-tidy/utils/HeaderGuard.h            |  2 +-
 .../utils/RenamerClangTidyCheck.cpp           |  4 +-
 30 files changed, 105 insertions(+), 96 deletions(-)

diff --git a/clang-tools-extra/clang-tidy/.clang-tidy 
b/clang-tools-extra/clang-tidy/.clang-tidy
index 22a4bd7d80618..9affdcf32c485 100644
--- a/clang-tools-extra/clang-tidy/.clang-tidy
+++ b/clang-tools-extra/clang-tidy/.clang-tidy
@@ -23,7 +23,6 @@ Checks: >
   -readability-avoid-nested-conditional-operator,
   -readability-braces-around-statements,
   -readability-container-contains,
-  -readability-convert-member-functions-to-static,
   -readability-else-after-return,
   -readability-function-cognitive-complexity,
   -readability-identifier-length,
diff --git a/clang-tools-extra/clang-tidy/ClangTidyProfiling.h 
b/clang-tools-extra/clang-tidy/ClangTidyProfiling.h
index 76deede1716f4..8af414eb7e2b2 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyProfiling.h
+++ b/clang-tools-extra/clang-tidy/ClangTidyProfiling.h
@@ -36,7 +36,8 @@ class ClangTidyProfiling {
 private:
   std::optional<StorageParams> Storage;
 
-  void printUserFriendlyTable(llvm::raw_ostream &OS, llvm::TimerGroup &TG);
+  static void printUserFriendlyTable(llvm::raw_ostream &OS,
+                                     llvm::TimerGroup &TG);
   void printAsJSON(llvm::raw_ostream &OS, llvm::TimerGroup &TG);
   void storeProfileData(llvm::TimerGroup &TG);
 
diff --git a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp 
b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
index 5e705f720c86e..06721dd4f900e 100644
--- a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
+++ b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
@@ -51,7 +51,7 @@ class ExpandModularHeadersPPCallbacks::FileRecorder {
 
   /// Makes sure we have contents for all the files we were interested in.
   /// Ideally `FilesToRecord` should be empty.
-  void checkAllFilesRecorded() {
+  static void checkAllFilesRecorded() {
     LLVM_DEBUG({
       for (auto FileEntry : FilesToRecord)
         llvm::dbgs() << "Did not record contents for input file: "
diff --git 
a/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h 
b/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h
index cf964a2d5d6f6..07821c81b75f5 100644
--- a/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h
+++ b/clang-tools-extra/clang-tidy/altera/IdDependentBackwardBranchCheck.h
@@ -65,7 +65,7 @@ class IdDependentBackwardBranchCheck : public ClangTidyCheck {
                                    const MemberExpr *MemExpr,
                                    const FieldDecl *PotentialField);
   /// Returns the loop type.
-  LoopType getLoopType(const Stmt *Loop);
+  static LoopType getLoopType(const Stmt *Loop);
 
 public:
   IdDependentBackwardBranchCheck(StringRef Name, ClangTidyContext *Context)
diff --git a/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp 
b/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp
index a94d6c8d7c4e6..bf41563e6ab01 100644
--- a/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/altera/KernelNameRestrictionCheck.cpp
@@ -37,7 +37,7 @@ class KernelNameRestrictionPPCallbacks : public PPCallbacks {
 private:
   /// Returns true if the name of the file with path FileName is 'kernel.cl',
   /// 'verilog.cl', or 'vhdl.cl'. The file name check is case insensitive.
-  bool fileNameIsRestricted(StringRef FileName);
+  static bool fileNameIsRestricted(StringRef FileName);
 
   struct IncludeDirective {
     SourceLocation Loc; // Location in the include directive.
diff --git a/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h 
b/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h
index 0d8306e8437b7..ffc6808ab9daf 100644
--- a/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h
+++ b/clang-tools-extra/clang-tidy/altera/UnrollLoopsCheck.h
@@ -44,8 +44,8 @@ class UnrollLoopsCheck : public ClangTidyCheck {
   /// Attempts to extract an integer value from either side of the
   /// BinaryOperator. Returns true and saves the result to &value if 
successful,
   /// returns false otherwise.
-  bool extractValue(int &Value, const BinaryOperator *Op,
-                    const ASTContext *Context);
+  static bool extractValue(int &Value, const BinaryOperator *Op,
+                           const ASTContext *Context);
   /// Returns true if the given loop statement has a large number of 
iterations,
   /// as determined by the integer value in the loop's condition expression,
   /// if one exists.
@@ -59,13 +59,14 @@ class UnrollLoopsCheck : public ClangTidyCheck {
                                  const ASTContext *Context) const;
   /// Returns the type of unrolling, if any, associated with the given
   /// statement.
-  enum UnrollType unrollType(const Stmt *Statement, ASTContext *Context);
+  static enum UnrollType unrollType(const Stmt *Statement, ASTContext 
*Context);
   /// Returns the condition expression within a given for statement. If there 
is
   /// none, or if the Statement is not a loop, then returns a NULL pointer.
-  const Expr *getCondExpr(const Stmt *Statement);
+  static const Expr *getCondExpr(const Stmt *Statement);
   /// Returns True if the loop statement has known bounds.
-  bool hasKnownBounds(const Stmt *Statement, const IntegerLiteral 
*CXXLoopBound,
-                      const ASTContext *Context);
+  static bool hasKnownBounds(const Stmt *Statement,
+                             const IntegerLiteral *CXXLoopBound,
+                             const ASTContext *Context);
   void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
 };
 
diff --git a/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp 
b/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp
index f4d657a7f4e90..c9383cad51159 100644
--- a/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp
+++ b/clang-tools-extra/clang-tidy/android/CloexecCheck.cpp
@@ -98,7 +98,7 @@ void CloexecCheck::insertStringFlag(
 }
 
 StringRef CloexecCheck::getSpellingArg(const MatchFinder::MatchResult &Result,
-                                       int N) const {
+                                       int N) {
   const auto *MatchedCall = Result.Nodes.getNodeAs<CallExpr>(FuncBindingStr);
   const SourceManager &SM = *Result.SourceManager;
   return Lexer::getSourceText(
diff --git a/clang-tools-extra/clang-tidy/android/CloexecCheck.h 
b/clang-tools-extra/clang-tidy/android/CloexecCheck.h
index edbff70fbd33e..44e846e68dc9c 100644
--- a/clang-tools-extra/clang-tidy/android/CloexecCheck.h
+++ b/clang-tools-extra/clang-tidy/android/CloexecCheck.h
@@ -85,8 +85,8 @@ class CloexecCheck : public ClangTidyCheck {
                         const char Mode, const int ArgPos);
 
   /// Helper function to get the spelling of a particular argument.
-  StringRef getSpellingArg(const ast_matchers::MatchFinder::MatchResult 
&Result,
-                           int N) const;
+  static StringRef
+  getSpellingArg(const ast_matchers::MatchFinder::MatchResult &Result, int N);
 
   /// Binding name of the FuncDecl of a function call.
   static const char *FuncDeclBindingStr;
diff --git 
a/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp
index e03cac6c5fd83..5d0f6b6fd8364 100644
--- a/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/AssignmentInIfConditionCheck.cpp
@@ -35,13 +35,14 @@ void AssignmentInIfConditionCheck::check(
             : Check(Check) {}
 
         // Dont traverse into any lambda expressions.
-        bool TraverseLambdaExpr(LambdaExpr *, DataRecursionQueue * = nullptr) {
+        static bool TraverseLambdaExpr(LambdaExpr *,
+                                       DataRecursionQueue * = nullptr) {
           return true;
         }
 
         // Dont traverse into any requires expressions.
-        bool TraverseRequiresExpr(RequiresExpr *,
-                                  DataRecursionQueue * = nullptr) {
+        static bool TraverseRequiresExpr(RequiresExpr *,
+                                         DataRecursionQueue * = nullptr) {
           return true;
         }
 
diff --git a/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
index a6cd68edda55e..2a142c9cdb27a 100644
--- a/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/BranchCloneCheck.cpp
@@ -50,28 +50,32 @@ static bool isFallthroughSwitchBranch(const SwitchBranch 
&Branch) {
   struct SwitchCaseVisitor : RecursiveASTVisitor<SwitchCaseVisitor> {
     using RecursiveASTVisitor<SwitchCaseVisitor>::DataRecursionQueue;
 
-    bool TraverseLambdaExpr(LambdaExpr *, DataRecursionQueue * = nullptr) {
+    static bool TraverseLambdaExpr(LambdaExpr *,
+                                   DataRecursionQueue * = nullptr) {
       return true; // Ignore lambdas
     }
 
-    bool TraverseDecl(Decl *) {
+    static bool TraverseDecl(Decl *) {
       return true; // No need to check declarations
     }
 
-    bool TraverseSwitchStmt(SwitchStmt *, DataRecursionQueue * = nullptr) {
+    static bool TraverseSwitchStmt(SwitchStmt *,
+                                   DataRecursionQueue * = nullptr) {
       return true; // Ignore sub-switches
     }
 
     // NOLINTNEXTLINE(readability-identifier-naming) - FIXME
-    bool TraverseSwitchCase(SwitchCase *, DataRecursionQueue * = nullptr) {
+    static bool TraverseSwitchCase(SwitchCase *,
+                                   DataRecursionQueue * = nullptr) {
       return true; // Ignore cases
     }
 
-    bool TraverseDefaultStmt(DefaultStmt *, DataRecursionQueue * = nullptr) {
+    static bool TraverseDefaultStmt(DefaultStmt *,
+                                    DataRecursionQueue * = nullptr) {
       return true; // Ignore defaults
     }
 
-    bool TraverseAttributedStmt(AttributedStmt *S) {
+    static bool TraverseAttributedStmt(AttributedStmt *S) {
       if (!S)
         return true;
 
diff --git 
a/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp 
b/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp
index 879040177079a..74968d3a37e09 100644
--- a/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp
@@ -32,7 +32,7 @@ class MacroRepeatedPPCallbacks : public PPCallbacks {
   unsigned countArgumentExpansions(const MacroInfo *MI,
                                    const IdentifierInfo *Arg) const;
 
-  bool hasSideEffects(const Token *ResultArgToks) const;
+  static bool hasSideEffects(const Token *ResultArgToks);
 };
 } // End of anonymous namespace.
 
@@ -159,8 +159,7 @@ unsigned MacroRepeatedPPCallbacks::countArgumentExpansions(
   return Max;
 }
 
-bool MacroRepeatedPPCallbacks::hasSideEffects(
-    const Token *ResultArgToks) const {
+bool MacroRepeatedPPCallbacks::hasSideEffects(const Token *ResultArgToks) {
   for (; ResultArgToks->isNot(tok::eof); ++ResultArgToks) {
     if (ResultArgToks->isOneOf(tok::plusplus, tok::minusminus))
       return true;
diff --git a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp 
b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
index 0302a5ad4957c..486aabb61b061 100644
--- a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
+++ b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.cpp
@@ -47,7 +47,7 @@ bool MultipleInheritanceCheck::getInterfaceStatus(const 
CXXRecordDecl *Node,
 }
 
 bool MultipleInheritanceCheck::isCurrentClassInterface(
-    const CXXRecordDecl *Node) const {
+    const CXXRecordDecl *Node) {
   // Interfaces should have no fields.
   if (!Node->field_empty())
     return false;
diff --git a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h 
b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h
index be5942c9520ae..ed97ab1261a17 100644
--- a/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h
+++ b/clang-tools-extra/clang-tidy/fuchsia/MultipleInheritanceCheck.h
@@ -32,7 +32,7 @@ class MultipleInheritanceCheck : public ClangTidyCheck {
 private:
   void addNodeToInterfaceMap(const CXXRecordDecl *Node, bool IsInterface);
   bool getInterfaceStatus(const CXXRecordDecl *Node, bool &IsInterface) const;
-  bool isCurrentClassInterface(const CXXRecordDecl *Node) const;
+  static bool isCurrentClassInterface(const CXXRecordDecl *Node);
   bool isInterface(const CXXRecordDecl *Node);
 
   // Contains the identity of each named CXXRecord as an interface.  This is
diff --git a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h 
b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h
index 7b378e016408a..f1c2568567661 100644
--- a/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h
+++ b/clang-tools-extra/clang-tidy/misc/StaticAssertCheck.h
@@ -30,8 +30,8 @@ class StaticAssertCheck : public ClangTidyCheck {
   void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
 
 private:
-  SourceLocation getLastParenLoc(const ASTContext *ASTCtx,
-                                 SourceLocation AssertLoc);
+  static SourceLocation getLastParenLoc(const ASTContext *ASTCtx,
+                                        SourceLocation AssertLoc);
 };
 
 } // namespace clang::tidy::misc
diff --git 
a/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h 
b/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h
index e3cc4c5e6cd41..cec2fbb798f2f 100644
--- a/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h
+++ b/clang-tools-extra/clang-tidy/misc/ThrowByValueCatchByReferenceCheck.h
@@ -38,8 +38,8 @@ class ThrowByValueCatchByReferenceCheck : public 
ClangTidyCheck {
   void diagnoseThrowLocations(const CXXThrowExpr *ThrowExpr);
   void diagnoseCatchLocations(const CXXCatchStmt *CatchStmt,
                               ASTContext &Context);
-  bool isFunctionParameter(const DeclRefExpr *DeclRefExpr);
-  bool isCatchVariable(const DeclRefExpr *DeclRefExpr);
+  static bool isFunctionParameter(const DeclRefExpr *DeclRefExpr);
+  static bool isCatchVariable(const DeclRefExpr *DeclRefExpr);
   bool isFunctionOrCatchVar(const DeclRefExpr *DeclRefExpr);
   const bool CheckAnonymousTemporaries;
   const bool WarnOnLargeObject;
diff --git a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp 
b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
index 737551637ea9e..9721d79fec4d4 100644
--- a/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UnusedParametersCheck.cpp
@@ -99,7 +99,7 @@ class UnusedParametersCheck::IndexerVisitor
     return Index[Fn->getCanonicalDecl()].OtherRefs;
   }
 
-  bool shouldTraversePostOrder() const { return true; }
+  static bool shouldTraversePostOrder() { return true; }
 
   bool WalkUpFromDeclRefExpr(DeclRefExpr *DeclRef) {
     if (const auto *Fn = dyn_cast<FunctionDecl>(DeclRef->getDecl())) {
diff --git a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp 
b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp
index 35a062382ea3c..bbd80d490d1a7 100644
--- a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp
@@ -53,8 +53,8 @@ class ExternCRefutationVisitor
   ExternCRefutationVisitor(std::vector<IncludeMarker> &IncludesToBeProcessed,
                            SourceManager &SM)
       : IncludesToBeProcessed(IncludesToBeProcessed), SM(SM) {}
-  bool shouldWalkTypesOfTypeLocs() const { return false; }
-  bool shouldVisitLambdaBody() const { return false; }
+  static bool shouldWalkTypesOfTypeLocs() { return false; }
+  static bool shouldVisitLambdaBody() { return false; }
 
   bool VisitLinkageSpecDecl(LinkageSpecDecl *LinkSpecDecl) const {
     if (LinkSpecDecl->getLanguage() != LinkageSpecLanguageIDs::C ||
diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h 
b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h
index b4f729d3ac538..6ad406b49b758 100644
--- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h
@@ -38,7 +38,7 @@ class LoopConvertCheck : public ClangTidyCheck {
     bool NeedsReverseCall = false;
   };
 
-  void getAliasRange(SourceManager &SM, SourceRange &DeclRange);
+  static void getAliasRange(SourceManager &SM, SourceRange &DeclRange);
 
   void doConversion(ASTContext *Context, const VarDecl *IndexVar,
                     const ValueDecl *MaybeContainer, const UsageResult &Usages,
@@ -46,18 +46,18 @@ class LoopConvertCheck : public ClangTidyCheck {
                     bool AliasFromForInit, const ForStmt *Loop,
                     RangeDescriptor Descriptor);
 
-  StringRef getContainerString(ASTContext *Context, const ForStmt *Loop,
-                               const Expr *ContainerExpr);
+  static StringRef getContainerString(ASTContext *Context, const ForStmt *Loop,
+                                      const Expr *ContainerExpr);
 
-  void getArrayLoopQualifiers(ASTContext *Context,
-                              const ast_matchers::BoundNodes &Nodes,
-                              const Expr *ContainerExpr,
-                              const UsageResult &Usages,
-                              RangeDescriptor &Descriptor);
+  static void getArrayLoopQualifiers(ASTContext *Context,
+                                     const ast_matchers::BoundNodes &Nodes,
+                                     const Expr *ContainerExpr,
+                                     const UsageResult &Usages,
+                                     RangeDescriptor &Descriptor);
 
-  void getIteratorLoopQualifiers(ASTContext *Context,
-                                 const ast_matchers::BoundNodes &Nodes,
-                                 RangeDescriptor &Descriptor);
+  static void getIteratorLoopQualifiers(ASTContext *Context,
+                                        const ast_matchers::BoundNodes &Nodes,
+                                        RangeDescriptor &Descriptor);
 
   void determineRangeDescriptor(ASTContext *Context,
                                 const ast_matchers::BoundNodes &Nodes,
diff --git a/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp 
b/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp
index 934cc24817d73..32ac93c243fe5 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseStdNumbersCheck.cpp
@@ -80,12 +80,13 @@ AST_MATCHER_P(clang::Expr, anyOfExhaustive, 
std::vector<Matcher<clang::Stmt>>,
 // the literal of every constant and for formulas' subexpressions that look at
 // literals.
 struct MatchBuilder {
-  auto
-  ignoreParenAndArithmeticCasting(const Matcher<clang::Expr> Matcher) const {
+  static auto
+  ignoreParenAndArithmeticCasting(const Matcher<clang::Expr> Matcher) {
     return expr(hasType(qualType(isArithmetic())), 
ignoringParenCasts(Matcher));
   }
 
-  auto ignoreParenAndFloatingCasting(const Matcher<clang::Expr> Matcher) const 
{
+  static auto
+  ignoreParenAndFloatingCasting(const Matcher<clang::Expr> Matcher) {
     return expr(hasType(qualType(isFloating())), ignoringParenCasts(Matcher));
   }
 
diff --git 
a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp 
b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 82f64096cbec1..c5f75b28aff44 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -51,7 +51,7 @@ struct UnqualNameVisitor : public 
RecursiveASTVisitor<UnqualNameVisitor> {
 
   bool Collision = false;
 
-  bool shouldWalkTypesOfTypeLocs() const { return false; }
+  static bool shouldWalkTypesOfTypeLocs() { return false; }
 
   bool visitUnqualName(StringRef UnqualName) {
     // Check for collisions with function arguments.
diff --git 
a/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h 
b/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h
index 38f756f9b452f..79a33e129ee9c 100644
--- a/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h
+++ b/clang-tools-extra/clang-tidy/performance/UnnecessaryCopyInitialization.h
@@ -56,7 +56,8 @@ class UnnecessaryCopyInitialization : public ClangTidyCheck {
                                   const VarDecl *ObjectArg);
   void handleCopyFromLocalVar(const CheckContext &Ctx, const VarDecl &OldVar);
 
-  void maybeIssueFixes(const CheckContext &Ctx, DiagnosticBuilder &Diagnostic);
+  static void maybeIssueFixes(const CheckContext &Ctx,
+                              DiagnosticBuilder &Diagnostic);
 
   const std::vector<StringRef> AllowedTypes;
   const std::vector<StringRef> ExcludedContainerTypes;
diff --git 
a/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp
 
b/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp
index ca5fc358ce290..e7a696d6c7f61 100644
--- 
a/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp
+++ 
b/clang-tools-extra/clang-tidy/readability/AvoidUnconditionalPreprocessorIfCheck.cpp
@@ -66,7 +66,7 @@ struct AvoidUnconditionalPreprocessorIfPPCallbacks : public 
PPCallbacks {
     return true;
   }
 
-  bool isImmutableToken(const Token &Tok) {
+  static bool isImmutableToken(const Token &Tok) {
     switch (Tok.getKind()) {
     case tok::eod:
     case tok::eof:
diff --git 
a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp 
b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
index d6784d0e8fba8..544be3e641c6d 100644
--- 
a/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
+++ 
b/clang-tools-extra/clang-tidy/readability/ConvertMemberFunctionsToStatic.cpp
@@ -66,7 +66,7 @@ AST_MATCHER(CXXMethodDecl, usesThis) {
 
     // If we enter a class declaration, don't traverse into it as any usages of
     // `this` will correspond to the nested class.
-    bool TraverseCXXRecordDecl(CXXRecordDecl *RD) { return true; }
+    static bool TraverseCXXRecordDecl(CXXRecordDecl *RD) { return true; }
 
   } UsageOfThis;
 
diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
index fab2365f1147a..96715c0666830 100644
--- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
@@ -417,7 +417,7 @@ IdentifierNamingCheck::IdentifierNamingCheck(StringRef Name,
 IdentifierNamingCheck::~IdentifierNamingCheck() = default;
 
 bool IdentifierNamingCheck::HungarianNotation::checkOptionValid(
-    int StyleKindIndex) const {
+    int StyleKindIndex) {
   if ((StyleKindIndex >= SK_EnumConstant) &&
       (StyleKindIndex <= SK_ConstantParameter))
     return true;
@@ -429,7 +429,7 @@ bool 
IdentifierNamingCheck::HungarianNotation::checkOptionValid(
 }
 
 bool IdentifierNamingCheck::HungarianNotation::isOptionEnabled(
-    StringRef OptionKey, const llvm::StringMap<std::string> &StrMap) const {
+    StringRef OptionKey, const llvm::StringMap<std::string> &StrMap) {
   if (OptionKey.empty())
     return false;
 
@@ -442,7 +442,7 @@ bool 
IdentifierNamingCheck::HungarianNotation::isOptionEnabled(
 
 void IdentifierNamingCheck::HungarianNotation::loadFileConfig(
     const ClangTidyCheck::OptionsView &Options,
-    IdentifierNamingCheck::HungarianNotationOption &HNOption) const {
+    IdentifierNamingCheck::HungarianNotationOption &HNOption) {
 
   static constexpr StringRef HNOpts[] = {"TreatStructAsClass"};
   static constexpr StringRef HNDerivedTypes[] = {"Array", "Pointer",
@@ -535,7 +535,7 @@ std::string 
IdentifierNamingCheck::HungarianNotation::getPrefix(
 
 bool IdentifierNamingCheck::HungarianNotation::removeDuplicatedPrefix(
     SmallVector<StringRef, 8> &Words,
-    const IdentifierNamingCheck::HungarianNotationOption &HNOption) const {
+    const IdentifierNamingCheck::HungarianNotationOption &HNOption) {
   if (Words.size() <= 1)
     return true;
 
@@ -652,7 +652,7 @@ std::string 
IdentifierNamingCheck::HungarianNotation::getClassPrefix(
 }
 
 std::string IdentifierNamingCheck::HungarianNotation::getEnumPrefix(
-    const EnumConstantDecl *ECD) const {
+    const EnumConstantDecl *ECD) {
   const auto *ED = cast<EnumDecl>(ECD->getDeclContext());
 
   std::string Name = ED->getName().str();
@@ -697,7 +697,7 @@ std::string 
IdentifierNamingCheck::HungarianNotation::getEnumPrefix(
 }
 
 size_t IdentifierNamingCheck::HungarianNotation::getAsteriskCount(
-    const std::string &TypeName) const {
+    const std::string &TypeName) {
   size_t Pos = TypeName.find('*');
   size_t Count = 0;
   for (; Pos < TypeName.length(); Pos++, Count++) {
@@ -719,7 +719,7 @@ size_t 
IdentifierNamingCheck::HungarianNotation::getAsteriskCount(
 }
 
 void IdentifierNamingCheck::HungarianNotation::loadDefaultConfig(
-    IdentifierNamingCheck::HungarianNotationOption &HNOption) const {
+    IdentifierNamingCheck::HungarianNotationOption &HNOption) {
 
   // Options
   static constexpr std::pair<StringRef, StringRef> General[] = {
@@ -1024,7 +1024,7 @@ std::string IdentifierNamingCheck::fixupWithCase(
 }
 
 bool IdentifierNamingCheck::isParamInMainLikeFunction(
-    const ParmVarDecl &ParmDecl, bool IncludeMainLike) const {
+    const ParmVarDecl &ParmDecl, bool IncludeMainLike) {
   const auto *FDecl =
       dyn_cast_or_null<FunctionDecl>(ParmDecl.getParentFunctionOrMethod());
   if (!FDecl)
@@ -1472,7 +1472,7 @@ StyleKind 
IdentifierNamingCheck::findStyleKindForAnonField(
 
 StyleKind IdentifierNamingCheck::findStyleKindForField(
     const FieldDecl *Field, QualType Type,
-    ArrayRef<std::optional<NamingStyle>> NamingStyles) const {
+    ArrayRef<std::optional<NamingStyle>> NamingStyles) {
   if (!Type.isNull() && Type.isConstQualified()) {
     if (NamingStyles[SK_ConstantMember])
       return SK_ConstantMember;
@@ -1498,7 +1498,7 @@ StyleKind IdentifierNamingCheck::findStyleKindForField(
 
 StyleKind IdentifierNamingCheck::findStyleKindForVar(
     const VarDecl *Var, QualType Type,
-    ArrayRef<std::optional<NamingStyle>> NamingStyles) const {
+    ArrayRef<std::optional<NamingStyle>> NamingStyles) {
   if (Var->isConstexpr() && NamingStyles[SK_ConstexprVariable])
     return SK_ConstexprVariable;
 
diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h 
b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h
index 646ec0eac8dd1..436bb96cbc501 100644
--- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.h
@@ -90,23 +90,23 @@ class IdentifierNamingCheck final : public 
RenamerClangTidyCheck {
 
   struct HungarianNotation {
   public:
-    bool checkOptionValid(int StyleKindIndex) const;
-    bool isOptionEnabled(StringRef OptionKey,
-                         const llvm::StringMap<std::string> &StrMap) const;
+    static bool checkOptionValid(int StyleKindIndex);
+    static bool isOptionEnabled(StringRef OptionKey,
+                                const llvm::StringMap<std::string> &StrMap);
 
-    size_t getAsteriskCount(const std::string &TypeName) const;
+    static size_t getAsteriskCount(const std::string &TypeName);
     size_t getAsteriskCount(const std::string &TypeName,
                             const NamedDecl *ND) const;
 
-    void loadDefaultConfig(
-        IdentifierNamingCheck::HungarianNotationOption &HNOption) const;
-    void loadFileConfig(
-        const ClangTidyCheck::OptionsView &Options,
-        IdentifierNamingCheck::HungarianNotationOption &HNOption) const;
+    static void
+    loadDefaultConfig(IdentifierNamingCheck::HungarianNotationOption 
&HNOption);
+    static void
+    loadFileConfig(const ClangTidyCheck::OptionsView &Options,
+                   IdentifierNamingCheck::HungarianNotationOption &HNOption);
 
-    bool removeDuplicatedPrefix(
+    static bool removeDuplicatedPrefix(
         SmallVector<StringRef, 8> &Words,
-        const IdentifierNamingCheck::HungarianNotationOption &HNOption) const;
+        const IdentifierNamingCheck::HungarianNotationOption &HNOption);
 
     std::string getPrefix(
         const Decl *D,
@@ -120,7 +120,7 @@ class IdentifierNamingCheck final : public 
RenamerClangTidyCheck {
         const CXXRecordDecl *CRD,
         const IdentifierNamingCheck::HungarianNotationOption &HNOption) const;
 
-    std::string getEnumPrefix(const EnumConstantDecl *ECD) const;
+    static std::string getEnumPrefix(const EnumConstantDecl *ECD);
     std::string getDeclTypeName(const NamedDecl *ND) const;
   };
 
@@ -191,8 +191,8 @@ class IdentifierNamingCheck final : public 
RenamerClangTidyCheck {
       const IdentifierNamingCheck::HungarianNotationOption &HNOption,
       StyleKind SK, const SourceManager &SM, bool IgnoreFailedSplit) const;
 
-  bool isParamInMainLikeFunction(const ParmVarDecl &ParmDecl,
-                                 bool IncludeMainLike) const;
+  static bool isParamInMainLikeFunction(const ParmVarDecl &ParmDecl,
+                                        bool IncludeMainLike);
 
 private:
   std::optional<FailureInfo>
@@ -212,13 +212,13 @@ class IdentifierNamingCheck final : public 
RenamerClangTidyCheck {
       const FieldDecl *AnonField,
       ArrayRef<std::optional<NamingStyle>> NamingStyles) const;
 
-  StyleKind findStyleKindForField(
-      const FieldDecl *Field, QualType Type,
-      ArrayRef<std::optional<NamingStyle>> NamingStyles) const;
+  static StyleKind
+  findStyleKindForField(const FieldDecl *Field, QualType Type,
+                        ArrayRef<std::optional<NamingStyle>> NamingStyles);
 
-  StyleKind
+  static StyleKind
   findStyleKindForVar(const VarDecl *Var, QualType Type,
-                      ArrayRef<std::optional<NamingStyle>> NamingStyles) const;
+                      ArrayRef<std::optional<NamingStyle>> NamingStyles);
 
   /// Stores the style options as a vector, indexed by the specified \ref
   /// StyleKind, for a given directory.
diff --git a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp 
b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp
index 6f91527c420e8..02a22a21deb48 100644
--- a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp
@@ -223,7 +223,7 @@ bool MagicNumbersCheck::isIgnoredValue(const 
FloatingLiteral *Literal) const {
 }
 
 bool MagicNumbersCheck::isSyntheticValue(const SourceManager *SourceManager,
-                                         const IntegerLiteral *Literal) const {
+                                         const IntegerLiteral *Literal) {
   const std::pair<FileID, unsigned> FileOffset =
       SourceManager->getDecomposedLoc(Literal->getLocation());
   if (FileOffset.first.isInvalid())
@@ -247,7 +247,7 @@ bool MagicNumbersCheck::isBitFieldWidth(
 
 bool MagicNumbersCheck::isUserDefinedLiteral(
     const clang::ast_matchers::MatchFinder::MatchResult &Result,
-    const clang::Expr &Literal) const {
+    const clang::Expr &Literal) {
   DynTypedNodeList Parents = Result.Context->getParents(Literal);
   if (Parents.empty())
     return false;
diff --git a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h 
b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h
index 70a17889d244e..f35761e6f66cc 100644
--- a/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h
+++ b/clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.h
@@ -38,8 +38,8 @@ class MagicNumbersCheck : public ClangTidyCheck {
                         const FloatingLiteral *) const {
     return false;
   }
-  bool isSyntheticValue(const clang::SourceManager *SourceManager,
-                        const IntegerLiteral *Literal) const;
+  static bool isSyntheticValue(const clang::SourceManager *SourceManager,
+                               const IntegerLiteral *Literal);
 
   bool isBitFieldWidth(const clang::ast_matchers::MatchFinder::MatchResult &,
                        const FloatingLiteral &) const {
@@ -50,9 +50,9 @@ class MagicNumbersCheck : public ClangTidyCheck {
   isBitFieldWidth(const clang::ast_matchers::MatchFinder::MatchResult &Result,
                   const IntegerLiteral &Literal) const;
 
-  bool isUserDefinedLiteral(
+  static bool isUserDefinedLiteral(
       const clang::ast_matchers::MatchFinder::MatchResult &Result,
-      const clang::Expr &Literal) const;
+      const clang::Expr &Literal);
 
   template <typename L>
   void checkBoundMatch(const ast_matchers::MatchFinder::MatchResult &Result,
diff --git a/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h 
b/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h
index 15d1f597fe440..ae27ff80a9ef6 100644
--- a/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h
+++ b/clang-tools-extra/clang-tidy/utils/FormatStringConverter.h
@@ -89,11 +89,13 @@ class FormatStringConverter
   // puts the width and preicision first.
   std::vector<std::tuple<unsigned, unsigned>> ArgRotates;
 
-  void emitAlignment(const PrintfSpecifier &FS, std::string &FormatSpec);
-  void emitSign(const PrintfSpecifier &FS, std::string &FormatSpec);
-  void emitAlternativeForm(const PrintfSpecifier &FS, std::string &FormatSpec);
-  void emitFieldWidth(const PrintfSpecifier &FS, std::string &FormatSpec);
-  void emitPrecision(const PrintfSpecifier &FS, std::string &FormatSpec);
+  static void emitAlignment(const PrintfSpecifier &FS, std::string 
&FormatSpec);
+  static void emitSign(const PrintfSpecifier &FS, std::string &FormatSpec);
+  static void emitAlternativeForm(const PrintfSpecifier &FS,
+                                  std::string &FormatSpec);
+  static void emitFieldWidth(const PrintfSpecifier &FS,
+                             std::string &FormatSpec);
+  static void emitPrecision(const PrintfSpecifier &FS, std::string 
&FormatSpec);
   void emitStringArgument(unsigned ArgIndex, const Expr *Arg);
   bool emitIntegerArgument(ConversionSpecifier::Kind ArgKind, const Expr *Arg,
                            unsigned ArgIndex, std::string &FormatSpec);
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h 
b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
index eff75d6ff26a2..8dd2ad6075ba3 100644
--- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
+++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
@@ -25,7 +25,7 @@ class HeaderGuardCheck : public ClangTidyCheck {
                            Preprocessor *ModuleExpanderPP) override;
 
   /// Ensure that the provided header guard is a non-reserved identifier.
-  std::string sanitizeHeaderGuard(StringRef Guard);
+  static std::string sanitizeHeaderGuard(StringRef Guard);
 
   /// Returns ``true`` if the check should suggest inserting a trailing comment
   /// on the ``#endif`` of the header guard. It will use the same name as
diff --git a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp 
b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
index 90539eaabbe03..a065da283a8b6 100644
--- a/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+++ b/clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
@@ -219,9 +219,9 @@ class RenamerClangTidyVisitor
       : Check(Check), SM(SM),
         AggressiveDependentMemberLookup(AggressiveDependentMemberLookup) {}
 
-  bool shouldVisitTemplateInstantiations() const { return true; }
+  static bool shouldVisitTemplateInstantiations() { return true; }
 
-  bool shouldVisitImplicitCode() const { return false; }
+  static bool shouldVisitImplicitCode() { return false; }
 
   bool VisitCXXConstructorDecl(CXXConstructorDecl *Decl) {
     if (Decl->isImplicit())

>From 2591c089b95770919cc84e7874a5b67b5dd6972c Mon Sep 17 00:00:00 2001
From: Victor Chernyakin <chernyakin.victo...@outlook.com>
Date: Sun, 31 Aug 2025 17:34:47 -0700
Subject: [PATCH 2/2] Function can't be static in debug build

---
 .../clang-tidy/ExpandModularHeadersPPCallbacks.cpp              | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp 
b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
index 06721dd4f900e..5e705f720c86e 100644
--- a/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
+++ b/clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp
@@ -51,7 +51,7 @@ class ExpandModularHeadersPPCallbacks::FileRecorder {
 
   /// Makes sure we have contents for all the files we were interested in.
   /// Ideally `FilesToRecord` should be empty.
-  static void checkAllFilesRecorded() {
+  void checkAllFilesRecorded() {
     LLVM_DEBUG({
       for (auto FileEntry : FilesToRecord)
         llvm::dbgs() << "Did not record contents for input file: "

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to