• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Transforms/Scalar/

Lines Matching refs:MemoryAccess

277 // For memory, we also track a representative MemoryAccess, and a set of memory
330 const MemoryAccess *getMemoryLeader() const { return RepMemoryAccess; }
331 void setMemoryLeader(const MemoryAccess *Leader) { RepMemoryAccess = Leader; }
411 const MemoryAccess *RepMemoryAccess = nullptr;
557 // Map from temporary operation to MemoryAccess.
584 mutable DenseMap<const MemoryAccess *, SmallPtrSet<MemoryAccess *, 2>>
589 // We could use the congruence class machinery, but the MemoryAccess's are
592 DenseMap<const MemoryAccess *, CongruenceClass *> MemoryAccessToClass;
688 const MemoryAccess *) const;
690 const MemoryAccess *) const;
692 const MemoryAccess *) const;
704 CongruenceClass *createMemoryClass(MemoryAccess *MA) {
710 CongruenceClass *ensureLeaderOfMemoryClass(MemoryAccess *MA) {
729 MemoryAccess *MemAccess, Instruction *OrigInst,
750 MemoryAccess *) const;
769 void moveMemoryToNewCongruenceClass(Instruction *, MemoryAccess *,
772 const MemoryAccess *getNextMemoryLeader(CongruenceClass *) const;
773 bool setMemoryClass(const MemoryAccess *From, CongruenceClass *To);
774 CongruenceClass *getMemoryClass(const MemoryAccess *MA) const;
775 const MemoryAccess *lookupMemoryLeader(const MemoryAccess *) const;
776 bool isMemoryAccessTOP(const MemoryAccess *) const;
812 void markMemoryUsersTouched(const MemoryAccess *);
813 void markMemoryDefTouched(const MemoryAccess *);
819 void addMemoryUsers(const MemoryAccess *To, MemoryAccess *U) const;
832 bool singleReachablePHIPath(SmallPtrSet<const MemoryAccess *, 8> &,
833 const MemoryAccess *, const MemoryAccess *) const;
837 MemoryAccess *getDefiningAccess(const MemoryAccess *) const;
846 unsigned InstrToDFSNum(const MemoryAccess *MA) const {
852 // Given a MemoryAccess, return the relevant instruction DFS number. Note:
854 // auto-convert to Value's but not to MemoryAccess's.
856 assert(isa<MemoryAccess>(MA) &&
907 // Get a MemoryAccess for an instruction, fake or real.
1254 NewGVN::createCallExpression(CallInst *CI, const MemoryAccess *MA) const {
1313 const MemoryAccess *NewGVN::lookupMemoryLeader(const MemoryAccess *MA) const {
1316 "Every MemoryAccess should be mapped to a congruence class with a "
1321 // Return true if the MemoryAccess is really equivalent to everything. This is
1324 bool NewGVN::isMemoryAccessTOP(const MemoryAccess *MA) const {
1330 const MemoryAccess *MA) const {
1347 NewGVN::createStoreExpression(StoreInst *SI, const MemoryAccess *MA) const {
1370 const MemoryAccess *StoreRHS = StoreAccess->getDefiningAccess();
1418 MemoryAccess *DefiningAccess) const {
1504 MemoryAccess *OriginalAccess = getMemoryAccess(I);
1505 MemoryAccess *DefiningAccess =
1653 // Retrieve the memory class for a given MemoryAccess.
1654 CongruenceClass *NewGVN::getMemoryClass(const MemoryAccess *MA) const {
1660 // Update the MemoryAccess equivalence table to say that From is equal to To,
1662 bool NewGVN::setMemoryClass(const MemoryAccess *From,
1665 "Every MemoryAccess should be getting mapped to a non-null class");
1669 << " with current MemoryAccess leader ");
2084 void NewGVN::addMemoryUsers(const MemoryAccess *To, MemoryAccess *U) const {
2089 void NewGVN::markMemoryDefTouched(const MemoryAccess *MA) {
2093 void NewGVN::markMemoryUsersTouched(const MemoryAccess *MA) {
2147 // This function returns the MemoryAccess that should be the next leader of
2150 const MemoryAccess *NewGVN::getNextMemoryLeader(CongruenceClass *CC) const {
2194 // Move a MemoryAccess, currently in OldClass, to NewClass, including updates to
2204 MemoryAccess *InstMA,
2207 // If the leader is I, and we had a representative MemoryAccess, it should
2208 // be the MemoryAccess of OldClass.
2213 "Representative MemoryAccess mismatch");
2279 // We rely on the code below handling the MemoryAccess change.
2286 // If it's not a memory use, set the MemoryAccess equivalence
2409 if (MemoryAccess *MA = getMemoryAccess(I))
2454 if (MemoryAccess *MemPhi = getMemoryAccess(To))
2657 MemoryAccess *MemAccess, Instruction *OrigInst,
2863 // MemoryAccess, it is *not* the same as the actual live on entry def. We
2865 // should be checking whether the MemoryAccess is top if we want to know if it
2983 if (MemoryAccess *MemPhi = getMemoryAccess(B)) {
3031 return cast<MemoryAccess>(U) != MP &&
3032 !isMemoryAccessTOP(cast<MemoryAccess>(U)) &&
3047 return lookupMemoryLeader(cast<MemoryAccess>(U));
3058 [&AllSameValue](const MemoryAccess *V) { return V == AllSameValue; });
3125 SmallPtrSet<const MemoryAccess *, 8> &Visited, const MemoryAccess *First,
3126 const MemoryAccess *Second) const {
3136 // MemoryAccess and return true when we hit a cycle.
3159 return singleReachablePHIPath(Visited, cast<MemoryAccess>(OperandList[0]),
3185 "Representative MemoryAccess does not appear to be reverse "
3192 // Anything equivalent in the MemoryAccess table should be in the same
3198 [&](const std::pair<const MemoryAccess *, CongruenceClass *> Pair) {
3226 SmallPtrSet<const MemoryAccess *, 8> VisitedMAS;