From: Sanjoy Das Date: Tue, 27 Sep 2016 18:01:38 +0000 (+0000) Subject: [SCEV] Make PendingLoopPredicates more frugal; NFCI X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bedf4a9691c78dd629eda34f406d74f3decf67cf;p=llvm [SCEV] Make PendingLoopPredicates more frugal; NFCI I don't expect `PendingLoopPredicates` to have very many elements (e.g. when -O3'ing the sqlite3 amalgamation, `PendingLoopPredicates` has at most 3 elements). So now we use a `SmallPtrSet` for it instead of the more heavyweight `DenseSet`. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@282511 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/ScalarEvolution.h b/include/llvm/Analysis/ScalarEvolution.h index 8249d70d1f5..47671c8e346 100644 --- a/include/llvm/Analysis/ScalarEvolution.h +++ b/include/llvm/Analysis/ScalarEvolution.h @@ -533,7 +533,7 @@ private: ValueExprMapType ValueExprMap; /// Mark predicate values currently being processed by isImpliedCond. - DenseSet PendingLoopPredicates; + SmallPtrSet PendingLoopPredicates; /// Set to true by isLoopBackedgeGuardedByCond when we're walking the set of /// conditions dominating the backedge of a loop. diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index c46464c6a25..038204e8839 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -8064,11 +8064,11 @@ namespace { /// currently evaluating isImpliedCond. struct MarkPendingLoopPredicate { Value *Cond; - DenseSet &LoopPreds; + SmallPtrSetImpl &LoopPreds; bool Pending; - MarkPendingLoopPredicate(Value *C, DenseSet &LP) - : Cond(C), LoopPreds(LP) { + MarkPendingLoopPredicate(Value *C, SmallPtrSetImpl &LP) + : Cond(C), LoopPreds(LP) { Pending = !LoopPreds.insert(Cond).second; } ~MarkPendingLoopPredicate() { @@ -9577,6 +9577,7 @@ ScalarEvolution::ScalarEvolution(ScalarEvolution &&Arg) : F(Arg.F), HasGuards(Arg.HasGuards), TLI(Arg.TLI), AC(Arg.AC), DT(Arg.DT), LI(Arg.LI), CouldNotCompute(std::move(Arg.CouldNotCompute)), ValueExprMap(std::move(Arg.ValueExprMap)), + PendingLoopPredicates(std::move(Arg.PendingLoopPredicates)), WalkingBEDominatingConds(false), ProvingSplitPredicate(false), BackedgeTakenCounts(std::move(Arg.BackedgeTakenCounts)), PredicatedBackedgeTakenCounts(