Lines Matching refs:EquivalenceClass

878 class EquivalenceClass;
881 REGISTER_MAP_WITH_PROGRAMSTATE(ClassMap, SymbolRef, EquivalenceClass)
882 REGISTER_MAP_WITH_PROGRAMSTATE(ClassMembers, EquivalenceClass, SymbolSet)
883 REGISTER_MAP_WITH_PROGRAMSTATE(ConstraintRange, EquivalenceClass, RangeSet)
885 REGISTER_SET_FACTORY_WITH_PROGRAMSTATE(ClassSet, EquivalenceClass)
886 REGISTER_MAP_WITH_PROGRAMSTATE(DisequalityMap, EquivalenceClass, ClassSet)
913 class EquivalenceClass : public llvm::FoldingSetNode { class
916 LLVM_NODISCARD static inline EquivalenceClass find(ProgramStateRef State,
926 merge(RangeSet::Factory &F, ProgramStateRef State, EquivalenceClass Other);
953 EquivalenceClass First, EquivalenceClass Second);
956 EquivalenceClass Other) const;
965 EquivalenceClass First,
966 EquivalenceClass Second);
978 EquivalenceClass Class);
993 EquivalenceClass() = delete;
994 EquivalenceClass(const EquivalenceClass &) = default;
995 EquivalenceClass &operator=(const EquivalenceClass &) = delete;
996 EquivalenceClass(EquivalenceClass &&) = default;
997 EquivalenceClass &operator=(EquivalenceClass &&) = delete;
999 bool operator==(const EquivalenceClass &Other) const { in operator ==()
1002 bool operator<(const EquivalenceClass &Other) const { return ID < Other.ID; } in operator <()
1003 bool operator!=(const EquivalenceClass &Other) const { in operator !=()
1014 /* implicit */ EquivalenceClass(SymbolRef Sym) in EquivalenceClass() function in __anon77be4a4c0511::EquivalenceClass
1028 SymbolSet Members, EquivalenceClass Other,
1034 EquivalenceClass First, EquivalenceClass Second);
1048 [](const std::pair<EquivalenceClass, RangeSet> &ClassConstraint) { in areFeasible() argument
1054 EquivalenceClass Class) { in getConstraint()
1060 return getConstraint(State, EquivalenceClass::find(State, Sym)); in getConstraint()
1064 EquivalenceClass Class, in setConstraint()
1295 RangeSet infer(EquivalenceClass Class) { in infer()
1595 EquivalenceClass::areEqual(State, Sym->getLHS(), Sym->getRHS())) { in getRangeForEqualities()
1874 RangeSet getRange(ProgramStateRef State, EquivalenceClass Class);
1877 ProgramStateRef setRange(ProgramStateRef State, EquivalenceClass Class,
2043 State = assign(EquivalenceClass::find(State, Sym), NewConstraint); in assign()
2054 LLVM_NODISCARD ProgramStateRef assign(EquivalenceClass Class, in assign()
2069 for (EquivalenceClass DisequalClass : Class.getDisequalClasses(State)) { in assign()
2093 return EquivalenceClass::markDisequal(RangeFactory, State, LHS, RHS); in trackDisequality()
2098 return EquivalenceClass::merge(RangeFactory, State, LHS, RHS); in trackEquality()
2121 llvm::SmallSet<EquivalenceClass, 4> SimplifiedClasses; in assignSymExprToConst()
2124 for (std::pair<EquivalenceClass, SymbolSet> ClassToSymbolSet : Members) { in assignSymExprToConst()
2125 EquivalenceClass Class = ClassToSymbolSet.first; in assignSymExprToConst()
2126 State = EquivalenceClass::simplify(Builder, RangeFactory, State, Class); in assignSymExprToConst()
2136 for (std::pair<EquivalenceClass, RangeSet> ClassConstraint : Constraints) { in assignSymExprToConst()
2137 EquivalenceClass Class = ClassConstraint.first; in assignSymExprToConst()
2140 State = EquivalenceClass::simplify(Builder, RangeFactory, State, Class); in assignSymExprToConst()
2148 for (std::pair<EquivalenceClass, ClassSet> DisequalityEntry : in assignSymExprToConst()
2150 EquivalenceClass Class = DisequalityEntry.first; in assignSymExprToConst()
2152 State = EquivalenceClass::simplify(Builder, RangeFactory, State, Class); in assignSymExprToConst()
2203 for (std::pair<EquivalenceClass, RangeSet> ClassConstraint : Constraints) { in getConstraintMap()
2204 EquivalenceClass Class = ClassConstraint.first; in getConstraintMap()
2220 LLVM_DUMP_METHOD void EquivalenceClass::dumpToStream(ProgramStateRef State, in dumpToStream()
2229 inline EquivalenceClass EquivalenceClass::find(ProgramStateRef State, in find()
2234 if (const EquivalenceClass *NontrivialClass = State->get<ClassMap>(Sym)) in find()
2241 inline ProgramStateRef EquivalenceClass::merge(RangeSet::Factory &F, in merge()
2245 EquivalenceClass FirstClass = find(State, First); in merge()
2246 EquivalenceClass SecondClass = find(State, Second); in merge()
2251 inline ProgramStateRef EquivalenceClass::merge(RangeSet::Factory &F, in merge()
2253 EquivalenceClass Other) { in merge()
2286 EquivalenceClass::mergeImpl(RangeSet::Factory &RangeFactory, in mergeImpl()
2288 EquivalenceClass Other, SymbolSet OtherMembers) { in mergeImpl()
2370 for (EquivalenceClass DisequalClass : DisequalToOther) { in mergeImpl()
2399 EquivalenceClass::getMembersFactory(ProgramStateRef State) { in getMembersFactory()
2403 SymbolSet EquivalenceClass::getClassMembers(ProgramStateRef State) const { in getClassMembers()
2413 bool EquivalenceClass::isTrivial(ProgramStateRef State) const { in isTrivial()
2417 bool EquivalenceClass::isTriviallyDead(ProgramStateRef State, in isTriviallyDead()
2422 inline ProgramStateRef EquivalenceClass::markDisequal(RangeSet::Factory &RF, in markDisequal()
2429 inline ProgramStateRef EquivalenceClass::markDisequal(RangeSet::Factory &RF, in markDisequal()
2431 EquivalenceClass First, in markDisequal()
2432 EquivalenceClass Second) { in markDisequal()
2437 EquivalenceClass::markDisequal(RangeSet::Factory &RF, ProgramStateRef State, in markDisequal()
2438 EquivalenceClass Other) const { in markDisequal()
2465 inline bool EquivalenceClass::addToDisequalityInfo( in addToDisequalityInfo()
2467 RangeSet::Factory &RF, ProgramStateRef State, EquivalenceClass First, in addToDisequalityInfo()
2468 EquivalenceClass Second) { in addToDisequalityInfo()
2506 inline Optional<bool> EquivalenceClass::areEqual(ProgramStateRef State, in areEqual()
2509 return EquivalenceClass::areEqual(State, find(State, FirstSym), in areEqual()
2513 inline Optional<bool> EquivalenceClass::areEqual(ProgramStateRef State, in areEqual()
2514 EquivalenceClass First, in areEqual()
2515 EquivalenceClass Second) { in areEqual()
2531 EquivalenceClass::removeMember(ProgramStateRef State, const SymbolRef Old) { in removeMember()
2591 EquivalenceClass::simplify(SValBuilder &SVB, RangeSet::Factory &F, in simplify()
2592 ProgramStateRef State, EquivalenceClass Class) { in simplify()
2656 inline ClassSet EquivalenceClass::getDisequalClasses(ProgramStateRef State, in getDisequalClasses()
2662 EquivalenceClass::getDisequalClasses(ProgramStateRef State) const { in getDisequalClasses()
2668 EquivalenceClass::getDisequalClasses(DisequalityMapTy Map, in getDisequalClasses()
2676 bool EquivalenceClass::isClassDataConsistent(ProgramStateRef State) { in isClassDataConsistent()
2679 for (std::pair<EquivalenceClass, SymbolSet> ClassMembersPair : Members) { in isClassDataConsistent()
2691 for (std::pair<EquivalenceClass, ClassSet> DisequalityInfo : Disequalities) { in isClassDataConsistent()
2692 EquivalenceClass Class = DisequalityInfo.first; in isClassDataConsistent()
2701 for (EquivalenceClass DisequalClass : DisequalClasses) { in isClassDataConsistent()
2828 auto removeDeadClass = [&](EquivalenceClass Class) { in removeDeadBindings()
2838 for (EquivalenceClass DisequalClass : DisequalClasses) { in removeDeadBindings()
2862 for (std::pair<EquivalenceClass, RangeSet> ClassConstraintPair : in removeDeadBindings()
2864 EquivalenceClass Class = ClassConstraintPair.first; in removeDeadBindings()
2872 for (std::pair<SymbolRef, EquivalenceClass> SymbolClassPair : Map) { in removeDeadBindings()
2883 for (std::pair<EquivalenceClass, SymbolSet> ClassMembersPair : in removeDeadBindings()
2885 EquivalenceClass Class = ClassMembersPair.first; in removeDeadBindings()
2930 assert(EquivalenceClass::isClassDataConsistent(State)); in removeDeadBindings()
3205 for (std::pair<EquivalenceClass, RangeSet> P : Constraints) { in printConstraints()
3237 static std::string toString(ProgramStateRef State, EquivalenceClass Class) { in toString()
3276 for (std::pair<EquivalenceClass, SymbolSet> ClassToSymbolSet : Members) in printEquivalenceClasses()
3316 for (std::pair<EquivalenceClass, ClassSet> ClassToDisEqSet : Disequalities) { in printDisequalities()
3317 EquivalenceClass Class = ClassToDisEqSet.first; in printDisequalities()
3320 for (EquivalenceClass DisEqClass : DisequalClasses) in printDisequalities()