Lines Matching defs:CongruenceClass

292 class CongruenceClass {
299 explicit CongruenceClass(unsigned ID) : ID(ID) {}
300 CongruenceClass(unsigned ID, Value *Leader, const Expression *E)
371 bool isEquivalentTo(const CongruenceClass *Other) const {
518 CongruenceClass *TOPClass = nullptr;
519 std::vector<CongruenceClass *> CongruenceClasses;
523 DenseMap<Value *, CongruenceClass *> ValueToClass;
592 DenseMap<const MemoryAccess *, CongruenceClass *> MemoryAccessToClass;
611 using ExpressionClassMap = DenseMap<const Expression *, CongruenceClass *>;
737 CongruenceClass *createCongruenceClass(Value *Leader, const Expression *E) {
738 auto *result = new CongruenceClass(NextCongruenceNum++, Leader, E);
743 CongruenceClass *createMemoryClass(MemoryAccess *MA) {
749 CongruenceClass *ensureLeaderOfMemoryClass(MemoryAccess *MA) {
756 CongruenceClass *createSingletonCongruenceClass(Value *Member) {
757 CongruenceClass *CClass = createCongruenceClass(Member, nullptr);
800 CongruenceClass *getClassForExpression(const Expression *E) const;
803 CongruenceClass *, CongruenceClass *);
805 CongruenceClass *, CongruenceClass *);
806 Value *getNextValueLeader(CongruenceClass *) const;
807 const MemoryAccess *getNextMemoryLeader(CongruenceClass *) const;
808 bool setMemoryClass(const MemoryAccess *From, CongruenceClass *To);
809 CongruenceClass *getMemoryClass(const MemoryAccess *MA) const;
826 void convertClassToDFSOrdered(const CongruenceClass &,
830 void convertClassToLoadsAndStores(const CongruenceClass &,
847 void markValueLeaderChangeTouched(CongruenceClass *CC);
848 void markMemoryLeaderChangeTouched(CongruenceClass *CC);
1126 CongruenceClass *CC = ValueToClass.lookup(V);
1333 CongruenceClass *CC = ValueToClass.lookup(V);
1648 CongruenceClass *NewGVN::getMemoryClass(const MemoryAccess *MA) const {
1657 CongruenceClass *NewClass) {
2118 void NewGVN::markMemoryLeaderChangeTouched(CongruenceClass *CC) {
2125 void NewGVN::markValueLeaderChangeTouched(CongruenceClass *CC) {
2149 const MemoryAccess *NewGVN::getNextMemoryLeader(CongruenceClass *CC) const {
2174 Value *NewGVN::getNextValueLeader(CongruenceClass *CC) const {
2204 CongruenceClass *OldClass,
2205 CongruenceClass *NewClass) {
2243 CongruenceClass *OldClass,
2244 CongruenceClass *NewClass) {
2339 CongruenceClass *IClass = ValueToClass.lookup(I);
2344 CongruenceClass *EClass = nullptr;
2355 CongruenceClass *NewClass = createCongruenceClass(nullptr, E);
2936 for (CongruenceClass *&CC : CongruenceClasses) {
3083 CongruenceClass *CC =
3213 [&](const std::pair<const MemoryAccess *, CongruenceClass *> Pair) {
3261 SmallVector<const CongruenceClass *, 16> PhiOpClasses;
3287 std::map<const Value *, CongruenceClass> BeforeIteration;
3302 DenseSet<std::pair<const CongruenceClass *, const CongruenceClass *>>
3335 std::tuple<const Value *, const CongruenceClass *, Value *>>>
3584 const CongruenceClass &Dense, SmallVectorImpl<ValueDFS> &DFSOrderedSet,
3675 const CongruenceClass &Dense,
3788 CongruenceClass *NewGVN::getClassForExpression(const Expression *E) const {
3929 CongruenceClass::MemberSet MembersLeft;
4128 CongruenceClass::MemberSet MembersLeft;