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;
569 MemoryAccess *MA, const ValueToValueMapTy &VMap, PhiToDefMap &MPhiMap,
571 MemoryAccess *InsnDefining = MA;
605 for (const MemoryAccess &MA : *Acc) {
606 if (const MemoryUseOrDef *MUD = dyn_cast<MemoryUseOrDef>(&MA)) {
1276 Phi->unorderedDeleteIncomingIf([&](MemoryAccess *MA, BasicBlock *B) {
1278 NewPhi->addIncoming(MA, B);
1290 void MemorySSAUpdater::removeMemoryAccess(MemoryAccess *MA, bool OptimizePhis) {
1291 assert(!MSSA->isLiveOnEntryDef(MA) &&
1296 if (MemoryPhi *MP = dyn_cast<MemoryPhi>(MA)) {
1306 NewDefTarget = cast<MemoryUseOrDef>(MA)->getDefiningAccess();
1312 if (!isa<MemoryUse>(MA) && !MA->use_empty()) {
1321 if (MA->hasValueHandle())
1322 ValueHandleBase::ValueIsRAUWd(MA, NewDefTarget);
1326 assert(NewDefTarget != MA && "Going into an infinite loop");
1327 while (!MA->use_empty()) {
1328 Use &U = *MA->use_begin();
1338 // The call below to erase will destroy MA, so we can't change the order we
1340 MSSA->removeFromLookups(MA);
1341 MSSA->removeFromLists(MA);
1371 for (MemoryAccess &MA : *Acc)
1372 MA.dropAllReferences();
1380 for (MemoryAccess &MA : llvm::make_early_inc_range(*Acc)) {
1381 MSSA->removeFromLookups(&MA);
1382 MSSA->removeFromLists(&MA);