https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/154365
This patch replaces SmallSet<T *, N> with SmallPtrSet<T *, N>. Note that SmallSet.h "redirects" SmallSet to SmallPtrSet for pointer element types: template <typename PointeeType, unsigned N> class SmallSet<PointeeType*, N> : public SmallPtrSet<PointeeType*, N> {}; We only have 10 instances that rely on this "redirection", with more than half of them under clang-tools-extra/. Since the redirection doesn't improve readability, this patch replaces SmallSet with SmallPtrSet for pointer element types. I'm planning to remove the redirection eventually. >From 4a1c114d56c3d5b513c3bda5133f7195bba46dbc Mon Sep 17 00:00:00 2001 From: Kazu Hirata <k...@google.com> Date: Mon, 18 Aug 2025 23:13:50 -0700 Subject: [PATCH] [clang-tools-extra] Replace SmallSet with SmallPtrSet (NFC) This patch replaces SmallSet<T *, N> with SmallPtrSet<T *, N>. Note that SmallSet.h "redirects" SmallSet to SmallPtrSet for pointer element types: template <typename PointeeType, unsigned N> class SmallSet<PointeeType*, N> : public SmallPtrSet<PointeeType*, N> {}; We only have 10 instances that rely on this "redirection", with more than half of them under clang-tools-extra/. Since the redirection doesn't improve readability, this patch replaces SmallSet with SmallPtrSet for pointer element types. I'm planning to remove the redirection eventually. --- clang-tools-extra/clang-tidy/bugprone/InfiniteLoopCheck.cpp | 6 +++--- clang-tools-extra/clangd/AST.cpp | 2 +- clang-tools-extra/clangd/XRefs.cpp | 2 +- .../clangd/refactor/tweaks/ExtractFunction.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/clang-tools-extra/clang-tidy/bugprone/InfiniteLoopCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/InfiniteLoopCheck.cpp index 4b495e3877000..cda9c4e7a6e58 100644 --- a/clang-tools-extra/clang-tidy/bugprone/InfiniteLoopCheck.cpp +++ b/clang-tools-extra/clang-tidy/bugprone/InfiniteLoopCheck.cpp @@ -188,7 +188,7 @@ static bool isKnownToHaveValue(const Expr &Cond, const ASTContext &Ctx, /// \return true iff all `CallExprs` visited have callees; false otherwise /// indicating there is an unresolved indirect call. static bool populateCallees(const Stmt *StmtNode, - llvm::SmallSet<const Decl *, 16> &Callees) { + llvm::SmallPtrSet<const Decl *, 16> &Callees) { if (const auto *Call = dyn_cast<CallExpr>(StmtNode)) { const Decl *Callee = Call->getDirectCallee(); @@ -212,7 +212,7 @@ static bool populateCallees(const Stmt *StmtNode, /// returns true iff `SCC` contains `Func` and its' function set overlaps with /// `Callees` static bool overlap(ArrayRef<CallGraphNode *> SCC, - const llvm::SmallSet<const Decl *, 16> &Callees, + const llvm::SmallPtrSet<const Decl *, 16> &Callees, const Decl *Func) { bool ContainsFunc = false, Overlap = false; @@ -264,7 +264,7 @@ static bool hasRecursionOverStaticLoopCondVariables(const Expr *Cond, if (!hasStaticLocalVariable(Cond)) return false; - llvm::SmallSet<const Decl *, 16> CalleesInLoop; + llvm::SmallPtrSet<const Decl *, 16> CalleesInLoop; if (!populateCallees(LoopStmt, CalleesInLoop)) { // If there are unresolved indirect calls, we assume there could diff --git a/clang-tools-extra/clangd/AST.cpp b/clang-tools-extra/clangd/AST.cpp index 82aee4c84d074..2f46ecc92576c 100644 --- a/clang-tools-extra/clangd/AST.cpp +++ b/clang-tools-extra/clangd/AST.cpp @@ -985,7 +985,7 @@ resolveForwardingParameters(const FunctionDecl *D, unsigned MaxDepth) { // Recurse on pack parameters size_t Depth = 0; const FunctionDecl *CurrentFunction = D; - llvm::SmallSet<const FunctionTemplateDecl *, 4> SeenTemplates; + llvm::SmallPtrSet<const FunctionTemplateDecl *, 4> SeenTemplates; if (const auto *Template = D->getPrimaryTemplate()) { SeenTemplates.insert(Template); } diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp index 11ee51072dccf..a253a630a48cc 100644 --- a/clang-tools-extra/clangd/XRefs.cpp +++ b/clang-tools-extra/clangd/XRefs.cpp @@ -1876,7 +1876,7 @@ static void fillSubTypes(const SymbolID &ID, }); } -using RecursionProtectionSet = llvm::SmallSet<const CXXRecordDecl *, 4>; +using RecursionProtectionSet = llvm::SmallPtrSet<const CXXRecordDecl *, 4>; // Extracts parents from AST and populates the type hierarchy item. static void fillSuperTypes(const CXXRecordDecl &CXXRD, llvm::StringRef TUPath, diff --git a/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp b/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp index 134ae89288300..bc9a790232507 100644 --- a/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp +++ b/clang-tools-extra/clangd/refactor/tweaks/ExtractFunction.cpp @@ -181,7 +181,7 @@ struct ExtractionZone { bool requiresHoisting(const SourceManager &SM, const HeuristicResolver *Resolver) const { // First find all the declarations that happened inside extraction zone. - llvm::SmallSet<const Decl *, 1> DeclsInExtZone; + llvm::SmallPtrSet<const Decl *, 1> DeclsInExtZone; for (auto *RootStmt : RootStmts) { findExplicitReferences( RootStmt, _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits