Author: Dhruv Chawla Date: 2023-06-10T12:36:43+05:30 New Revision: 8e580b7edd15e3a7fcf5951be14fb3fed519349a
URL: https://github.com/llvm/llvm-project/commit/8e580b7edd15e3a7fcf5951be14fb3fed519349a DIFF: https://github.com/llvm/llvm-project/commit/8e580b7edd15e3a7fcf5951be14fb3fed519349a.diff LOG: [NFC][SetVector] Update some usages of SetVector to SmallSetVector This patch is a continuation of D152497. It updates usages of SetVector that were found in llvm/ and clang/ which were originally specifying either SmallPtrSet or SmallVector to just using SmallSetVector, as the overhead of SetVector is reduced with D152497. This also helps clean up the code a fair bit, and gives a decent speed boost at -O0 (~0.2%): https://llvm-compile-time-tracker.com/compare.php?from=9ffdabecabcddde298ff313f5353f9e06590af62&to=97f1c0cde42ba85eaa67cbe89bec8fe45b801f21&stat=instructions%3Au Differential Revision: https://reviews.llvm.org/D152522 Added: Modified: clang/include/clang/Sema/Sema.h clang/lib/Sema/SemaOverload.cpp clang/lib/Sema/SemaStmt.cpp llvm/include/llvm/ADT/GenericCycleInfo.h llvm/include/llvm/CodeGen/LiveRangeEdit.h llvm/include/llvm/Transforms/Scalar/SROA.h llvm/lib/Analysis/InlineCost.cpp llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h Removed: ################################################################################ diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index b335a04dc473a..18da1ffb9402e 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -792,8 +792,7 @@ class Sema final { /// we won't know until all lvalue-to-rvalue and discarded value conversions /// have been applied to all subexpressions of the enclosing full expression. /// This is cleared at the end of each full expression. - using MaybeODRUseExprSet = llvm::SetVector<Expr *, SmallVector<Expr *, 4>, - llvm::SmallPtrSet<Expr *, 4>>; + using MaybeODRUseExprSet = llvm::SmallSetVector<Expr *, 4>; MaybeODRUseExprSet MaybeODRUseExprs; std::unique_ptr<sema::FunctionScopeInfo> CachedFunctionScope; diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index 18f09e5a42e9b..14361d85cf182 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -8024,8 +8024,7 @@ namespace { /// enumeration types. class BuiltinCandidateTypeSet { /// TypeSet - A set of types. - typedef llvm::SetVector<QualType, SmallVector<QualType, 8>, - llvm::SmallPtrSet<QualType, 8>> TypeSet; + typedef llvm::SmallSetVector<QualType, 8> TypeSet; /// PointerTypes - The set of pointer types that will be used in the /// built-in candidates. diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index bc9490ad04bf8..a87b0d9501930 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -1729,9 +1729,7 @@ Sema::ActOnDoStmt(SourceLocation DoLoc, Stmt *Body, namespace { // Use SetVector since the diagnostic cares about the ordering of the Decl's. - using DeclSetVector = - llvm::SetVector<VarDecl *, llvm::SmallVector<VarDecl *, 8>, - llvm::SmallPtrSet<VarDecl *, 8>>; + using DeclSetVector = llvm::SmallSetVector<VarDecl *, 8>; // This visitor will traverse a conditional statement and store all // the evaluated decls into a vector. Simple is set to true if none diff --git a/llvm/include/llvm/ADT/GenericCycleInfo.h b/llvm/include/llvm/ADT/GenericCycleInfo.h index 5dec7c97a0688..7df50f4a0ec17 100644 --- a/llvm/include/llvm/ADT/GenericCycleInfo.h +++ b/llvm/include/llvm/ADT/GenericCycleInfo.h @@ -28,10 +28,10 @@ #ifndef LLVM_ADT_GENERICCYCLEINFO_H #define LLVM_ADT_GENERICCYCLEINFO_H +#include "llvm/ADT/DenseSet.h" #include "llvm/ADT/GenericSSAContext.h" #include "llvm/ADT/GraphTraits.h" #include "llvm/ADT/SetVector.h" -#include "llvm/ADT/SmallPtrSet.h" #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" @@ -64,7 +64,7 @@ template <typename ContextT> class GenericCycle { /// Basic blocks that are contained in the cycle, including entry blocks, /// and including blocks that are part of a child cycle. using BlockSetVectorT = SetVector<BlockT *, SmallVector<BlockT *, 8>, - SmallPtrSet<const BlockT *, 8>>; + DenseSet<const BlockT *>, 8>; BlockSetVectorT Blocks; /// Depth of the cycle in the tree. The root "cycle" is at depth 0. diff --git a/llvm/include/llvm/CodeGen/LiveRangeEdit.h b/llvm/include/llvm/CodeGen/LiveRangeEdit.h index fe7af0a8fb45b..0950c20325fb0 100644 --- a/llvm/include/llvm/CodeGen/LiveRangeEdit.h +++ b/llvm/include/llvm/CodeGen/LiveRangeEdit.h @@ -97,8 +97,7 @@ class LiveRangeEdit : private MachineRegisterInfo::Delegate { /// a load, eliminate the register by folding the def into the use. bool foldAsLoad(LiveInterval *LI, SmallVectorImpl<MachineInstr *> &Dead); - using ToShrinkSet = SetVector<LiveInterval *, SmallVector<LiveInterval *, 8>, - SmallPtrSet<LiveInterval *, 8>>; + using ToShrinkSet = SmallSetVector<LiveInterval *, 8>; /// Helper for eliminateDeadDefs. void eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink); diff --git a/llvm/include/llvm/Transforms/Scalar/SROA.h b/llvm/include/llvm/Transforms/Scalar/SROA.h index 26348da220211..46489df4ec6e3 100644 --- a/llvm/include/llvm/Transforms/Scalar/SROA.h +++ b/llvm/include/llvm/Transforms/Scalar/SROA.h @@ -105,7 +105,7 @@ class SROAPass : public PassInfoMixin<SROAPass> { /// directly promoted. Finally, each time we rewrite a use of an alloca other /// the one being actively rewritten, we add it back onto the list if not /// already present to ensure it is re-visited. - SetVector<AllocaInst *, SmallVector<AllocaInst *, 16>> Worklist; + SmallSetVector<AllocaInst *, 16> Worklist; /// A collection of instructions to delete. /// We try to batch deletions to simplify code and make things a bit more @@ -120,7 +120,7 @@ class SROAPass : public PassInfoMixin<SROAPass> { /// /// Note that we have to be very careful to clear allocas out of this list in /// the event they are deleted. - SetVector<AllocaInst *, SmallVector<AllocaInst *, 16>> PostPromotionWorklist; + SmallSetVector<AllocaInst *, 16> PostPromotionWorklist; /// A collection of alloca instructions we can directly promote. std::vector<AllocaInst *> PromotableAllocas; @@ -130,7 +130,7 @@ class SROAPass : public PassInfoMixin<SROAPass> { /// All of these PHIs have been checked for the safety of speculation and by /// being speculated will allow promoting allocas currently in the promotable /// queue. - SetVector<PHINode *, SmallVector<PHINode *, 8>> SpeculatablePHIs; + SmallSetVector<PHINode *, 8> SpeculatablePHIs; /// A worklist of select instructions to rewrite prior to promoting /// allocas. diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp index baf4185f2407b..d887adc336966 100644 --- a/llvm/lib/Analysis/InlineCost.cpp +++ b/llvm/lib/Analysis/InlineCost.cpp @@ -2680,9 +2680,7 @@ InlineResult CallAnalyzer::analyze() { // basic blocks in a breadth-first order as we insert live successors. To // accomplish this, prioritizing for small iterations because we exit after // crossing our threshold, we use a small-size optimized SetVector. - typedef SetVector<BasicBlock *, SmallVector<BasicBlock *, 16>, - SmallPtrSet<BasicBlock *, 16>> - BBSetVector; + typedef SmallSetVector<BasicBlock *, 16> BBSetVector; BBSetVector BBWorklist; BBWorklist.insert(&F.getEntryBlock()); diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index 0e71c216e9587..44b2f2447dfa7 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -318,9 +318,7 @@ class DwarfDebug : public DebugHandlerBase { /// This is a collection of subprogram MDNodes that are processed to /// create DIEs. - SetVector<const DISubprogram *, SmallVector<const DISubprogram *, 16>, - SmallPtrSet<const DISubprogram *, 16>> - ProcessedSPNodes; + SmallSetVector<const DISubprogram *, 16> ProcessedSPNodes; /// If nonnull, stores the current machine function we're processing. const MachineFunction *CurFn = nullptr; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits