Lines Matching defs:MA

137 MemoryAccess *MemorySSAUpdater::getPreviousDef(MemoryAccess *MA) {
138 if (auto *LocalResult = getPreviousDefInBlock(MA))
141 return getPreviousDefRecursive(MA->getBlock(), CachedPreviousDef);
147 MemoryAccess *MemorySSAUpdater::getPreviousDefInBlock(MemoryAccess *MA) {
148 auto *Defs = MSSA->getWritableBlockDefs(MA->getBlock());
153 if (!isa<MemoryUse>(MA)) {
154 auto Iter = MA->getReverseDefsIterator();
160 auto End = MSSA->getWritableBlockAccesses(MA->getBlock())->rend();
161 for (auto &U : make_range(++MA->getReverseIterator(), End))
164 // Note that if MA comes before Defs->begin(), we won't hit a def.
557 MemoryAccess *MA = nullptr;
560 if (!MA)
561 MA = cast<MemoryAccess>(Arg);
562 else if (MA != Arg)
565 return MA;
568 static MemoryAccess *getNewDefiningAccessForClone(MemoryAccess *MA,
572 MemoryAccess *InsnDefining = MA;
603 for (const MemoryAccess &MA : *Acc) {
604 if (const MemoryUseOrDef *MUD = dyn_cast<MemoryUseOrDef>(&MA)) {
1266 Phi->unorderedDeleteIncomingIf([&](MemoryAccess *MA, BasicBlock *B) {
1268 NewPhi->addIncoming(MA, B);
1280 void MemorySSAUpdater::removeMemoryAccess(MemoryAccess *MA, bool OptimizePhis) {
1281 assert(!MSSA->isLiveOnEntryDef(MA) &&
1286 if (MemoryPhi *MP = dyn_cast<MemoryPhi>(MA)) {
1296 NewDefTarget = cast<MemoryUseOrDef>(MA)->getDefiningAccess();
1302 if (!isa<MemoryUse>(MA) && !MA->use_empty()) {
1311 if (MA->hasValueHandle())
1312 ValueHandleBase::ValueIsRAUWd(MA, NewDefTarget);
1316 assert(NewDefTarget != MA && "Going into an infinite loop");
1317 while (!MA->use_empty()) {
1318 Use &U = *MA->use_begin();
1328 // The call below to erase will destroy MA, so we can't change the order we
1330 MSSA->removeFromLookups(MA);
1331 MSSA->removeFromLists(MA);
1361 for (MemoryAccess &MA : *Acc)
1362 MA.dropAllReferences();
1370 for (MemoryAccess &MA : llvm::make_early_inc_range(*Acc)) {
1371 MSSA->removeFromLookups(&MA);
1372 MSSA->removeFromLists(&MA);