Lines Matching defs:CongruenceClass

292 class CongruenceClass {
299 explicit CongruenceClass(unsigned ID) : ID(ID) {}
300 CongruenceClass(unsigned ID, std::pair<Value *, unsigned int> Leader,
380 bool isEquivalentTo(const CongruenceClass *Other) const {
529 CongruenceClass *TOPClass = nullptr;
530 std::vector<CongruenceClass *> CongruenceClasses;
534 DenseMap<Value *, CongruenceClass *> ValueToClass;
603 DenseMap<const MemoryAccess *, CongruenceClass *> MemoryAccessToClass;
622 using ExpressionClassMap = DenseMap<const Expression *, CongruenceClass *>;
748 CongruenceClass *createCongruenceClass(Value *Leader, const Expression *E) {
761 new CongruenceClass(NextCongruenceNum++, {Leader, LeaderDFS}, E);
766 CongruenceClass *createMemoryClass(MemoryAccess *MA) {
772 CongruenceClass *ensureLeaderOfMemoryClass(MemoryAccess *MA) {
779 CongruenceClass *createSingletonCongruenceClass(Value *Member) {
780 CongruenceClass *CClass = createCongruenceClass(Member, nullptr);
823 CongruenceClass *getClassForExpression(const Expression *E) const;
826 CongruenceClass *, CongruenceClass *);
828 CongruenceClass *, CongruenceClass *);
829 Value *getNextValueLeader(CongruenceClass *) const;
830 const MemoryAccess *getNextMemoryLeader(CongruenceClass *) const;
831 bool setMemoryClass(const MemoryAccess *From, CongruenceClass *To);
832 CongruenceClass *getMemoryClass(const MemoryAccess *MA) const;
849 void convertClassToDFSOrdered(const CongruenceClass &,
853 void convertClassToLoadsAndStores(const CongruenceClass &,
870 void markValueLeaderChangeTouched(CongruenceClass *CC);
871 void markMemoryLeaderChangeTouched(CongruenceClass *CC);
1161 CongruenceClass *CC = ValueToClass.lookup(V);
1368 CongruenceClass *CC = ValueToClass.lookup(V);
1683 CongruenceClass *NewGVN::getMemoryClass(const MemoryAccess *MA) const {
1692 CongruenceClass *NewClass) {
2145 void NewGVN::markMemoryLeaderChangeTouched(CongruenceClass *CC) {
2152 void NewGVN::markValueLeaderChangeTouched(CongruenceClass *CC) {
2176 const MemoryAccess *NewGVN::getNextMemoryLeader(CongruenceClass *CC) const {
2201 Value *NewGVN::getNextValueLeader(CongruenceClass *CC) const {
2231 CongruenceClass *OldClass,
2232 CongruenceClass *NewClass) {
2270 CongruenceClass *OldClass,
2271 CongruenceClass *NewClass) {
2372 CongruenceClass *IClass = ValueToClass.lookup(I);
2377 CongruenceClass *EClass = nullptr;
2388 CongruenceClass *NewClass = createCongruenceClass(nullptr, E);
2969 for (CongruenceClass *&CC : CongruenceClasses) {
3116 CongruenceClass *CC =
3246 [&](const std::pair<const MemoryAccess *, CongruenceClass *> Pair) {
3293 SmallVector<const CongruenceClass *, 16> PhiOpClasses;
3319 std::map<const Value *, CongruenceClass> BeforeIteration;
3334 DenseSet<std::pair<const CongruenceClass *, const CongruenceClass *>>
3367 std::tuple<const Value *, const CongruenceClass *, Value *>>>
3616 const CongruenceClass &Dense, SmallVectorImpl<ValueDFS> &DFSOrderedSet,
3707 const CongruenceClass &Dense,
3820 CongruenceClass *NewGVN::getClassForExpression(const Expression *E) const {
3961 CongruenceClass::MemberSet MembersLeft;
4162 CongruenceClass::MemberSet MembersLeft;