reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

include/llvm/Analysis/ScalarEvolution.h
  265 class SCEVEqualPredicate final : public SCEVPredicate {
  302 class SCEVWrapPredicate final : public SCEVPredicate {
  397 class SCEVUnionPredicate final : public SCEVPredicate {

References

include/llvm/ADT/FoldingSet.h
  221   static void Profile(const T &X, FoldingSetNodeID &ID) {
  224   static void Profile(T &X, FoldingSetNodeID &ID) {
  232   static inline bool Equals(T &X, const FoldingSetNodeID &ID, unsigned IDHash,
  240   static inline unsigned ComputeHash(T &X, FoldingSetNodeID &TempID);
  410   using iterator = FoldingSetIterator<T>;
  415   using const_iterator = FoldingSetIterator<const T>;
  420   using bucket_iterator = FoldingSetBucketIterator<T>;
  432   bool RemoveNode(T *N) { return FoldingSetBase::RemoveNode(N); }
  437   T *GetOrInsertNode(T *N) {
  437   T *GetOrInsertNode(T *N) {
  444   T *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) {
  451   void InsertNode(T *N, void *InsertPos) {
  457   void InsertNode(T *N) {
  473 template <class T> class FoldingSet final : public FoldingSetImpl<T> {
  474   using Super = FoldingSetImpl<T>;
  480     T *TN = static_cast<T *>(N);
  481     FoldingSetTrait<T>::Profile(*TN, ID);
  488     T *TN = static_cast<T *>(N);
  489     return FoldingSetTrait<T>::Equals(*TN, ID, IDHash, TempID);
  495     T *TN = static_cast<T *>(N);
  496     return FoldingSetTrait<T>::ComputeHash(*TN, TempID);
include/llvm/Analysis/ScalarEvolution.h
  211   SCEVPredicate(const SCEVPredicate &) = default;
  212   SCEVPredicate &operator=(const SCEVPredicate &) = default;
  212   SCEVPredicate &operator=(const SCEVPredicate &) = default;
  228   virtual bool implies(const SCEVPredicate *N) const = 0;
  239 inline raw_ostream &operator<<(raw_ostream &OS, const SCEVPredicate &P) {
  247 struct FoldingSetTrait<SCEVPredicate> : DefaultFoldingSetTrait<SCEVPredicate> {
  248   static void Profile(const SCEVPredicate &X, FoldingSetNodeID &ID) {
  252   static bool Equals(const SCEVPredicate &X, const FoldingSetNodeID &ID,
  257   static unsigned ComputeHash(const SCEVPredicate &X,
  265 class SCEVEqualPredicate final : public SCEVPredicate {
  275   bool implies(const SCEVPredicate *N) const override;
  287   static bool classof(const SCEVPredicate *P) {
  302 class SCEVWrapPredicate final : public SCEVPredicate {
  381   bool implies(const SCEVPredicate *N) const override;
  386   static bool classof(const SCEVPredicate *P) {
  397 class SCEVUnionPredicate final : public SCEVPredicate {
  400       DenseMap<const SCEV *, SmallVector<const SCEVPredicate *, 4>>;
  403   SmallVector<const SCEVPredicate *, 16> Preds;
  411   const SmallVectorImpl<const SCEVPredicate *> &getPredicates() const {
  416   void add(const SCEVPredicate *N);
  420   ArrayRef<const SCEVPredicate *> getPredicatesForExpr(const SCEV *Expr);
  424   bool implies(const SCEVPredicate *N) const override;
  433   static bool classof(const SCEVPredicate *P) {
  564   Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
 1075   const SCEVPredicate *getEqualPredicate(const SCEV *LHS, const SCEV *RHS);
 1077   const SCEVPredicate *
 1088       SmallPtrSetImpl<const SCEVPredicate *> &Preds);
 1209     SmallPtrSet<const SCEVPredicate *, 4> Predicates;
 1211     void addPredicate(const SCEVPredicate *P) {
 1223         ArrayRef<const SmallPtrSetImpl<const SCEVPredicate *> *> PredSetList);
 1226               const SmallPtrSetImpl<const SCEVPredicate *> &PredSet);
 1824   Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
 1893   FoldingSet<SCEVPredicate> UniquePreds;
 1903            std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
 1983   void addPredicate(const SCEVPredicate &Pred);
include/llvm/Analysis/ScalarEvolutionExpander.h
  219     Value *expandCodeForPredicate(const SCEVPredicate *Pred, Instruction *Loc);
include/llvm/Support/Casting.h
   57   static inline bool doit(const From &Val) {
  104   static inline bool doit(const From *Val) {
  106     return isa_impl<To, From>::doit(*Val);
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
   91   typedef PointerLikeTypeTraits<T *> NonConst;
   93   static inline const void *getAsVoidPointer(const T *P) {
   96   static inline const T *getFromVoidPointer(const void *P) {
lib/Analysis/ScalarEvolution.cpp
 4683 Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
 4685   SmallVector<const SCEVPredicate *, 3> Predicates;
 4820     const SCEVPredicate *AddRecPred = getWrapPredicate(AR, AddedFlags);
 4872       const SCEVPredicate *Pred = getEqualPredicate(Expr, ExtendedExpr);
 4887   std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>> PredRewrite =
 4894 Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
 4904     std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>> Rewrite =
 4916   Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
 4921     SmallVector<const SCEVPredicate *, 3> Predicates;
 6992     ArrayRef<const SmallPtrSetImpl<const SCEVPredicate *> *> PredSetList)
 7007     const SmallPtrSetImpl<const SCEVPredicate *> &PredSet)
 8710   SmallPtrSet<const SCEVPredicate *, 4> Predicates;
10585   SmallPtrSet<const SCEVPredicate *, 4> Predicates;
10726   SmallPtrSet<const SCEVPredicate *, 4> Predicates;
12064 const SCEVPredicate *ScalarEvolution::getEqualPredicate(const SCEV *LHS,
12070   ID.AddInteger(SCEVPredicate::P_Equal);
12074   if (const auto *S = UniquePreds.FindNodeOrInsertPos(ID, IP))
12082 const SCEVPredicate *ScalarEvolution::getWrapPredicate(
12087   ID.AddInteger(SCEVPredicate::P_Wrap);
12091   if (const auto *S = UniquePreds.FindNodeOrInsertPos(ID, IP))
12113                              SmallPtrSetImpl<const SCEVPredicate *> *NewPreds,
12164                         SmallPtrSetImpl<const SCEVPredicate *> *NewPreds,
12168   bool addOverflowAssumption(const SCEVPredicate *P) {
12192     Optional<std::pair<const SCEV *, SmallVector<const SCEVPredicate *, 3>>>
12209   SmallPtrSetImpl<const SCEVPredicate *> *NewPreds;
12223     SmallPtrSetImpl<const SCEVPredicate *> &Preds) {
12224   SmallPtrSet<const SCEVPredicate *, 4> TransformPreds;
12251 bool SCEVEqualPredicate::implies(const SCEVPredicate *N) const {
12275 bool SCEVWrapPredicate::implies(const SCEVPredicate *N) const {
12330 ArrayRef<const SCEVPredicate *>
12338 bool SCEVUnionPredicate::implies(const SCEVPredicate *N) const {
12359 void SCEVUnionPredicate::add(const SCEVPredicate *N) {
12409 void PredicatedScalarEvolution::addPredicate(const SCEVPredicate &Pred) {
12464   SmallPtrSet<const SCEVPredicate *, 4> NewPreds;
lib/Analysis/ScalarEvolutionExpander.cpp
 2212 Value *SCEVExpander::expandCodeForPredicate(const SCEVPredicate *Pred,
 2216   case SCEVPredicate::P_Union:
 2218   case SCEVPredicate::P_Equal:
 2220   case SCEVPredicate::P_Wrap: {