Lines Matching defs:MSSA
165 cl::desc("[LICM & MemorySSA] When MSSA in LICM is disabled, this has no "
166 "effect. When MSSA in LICM is enabled, then this is the maximum "
187 static bool pointerInvalidatedByLoop(MemorySSA *MSSA, MemoryUse *MU,
191 static bool pointerInvalidatedByBlock(BasicBlock &BB, MemorySSA &MSSA,
209 static void foreachMemoryAccess(MemorySSA *MSSA, Loop *L,
214 collectPromotionCandidates(MemorySSA *MSSA, AliasAnalysis *AA, Loop *L);
220 TargetTransformInfo *TTI, ScalarEvolution *SE, MemorySSA *MSSA,
257 MemorySSA *MSSA = &getAnalysis<MemorySSAWrapperPass>().getMSSA();
269 SE ? &SE->getSE() : nullptr, MSSA, &ORE);
296 if (!AR.MSSA)
308 &AR.SE, AR.MSSA, &ORE))
330 if (!AR.MSSA)
344 &AR.TLI, &AR.TTI, &AR.SE, AR.MSSA, &ORE, true);
382 MemorySSA &MSSA)
384 IsSink, L, MSSA) {}
388 Loop &L, MemorySSA &MSSA)
394 if (const auto *Accesses = MSSA.getBlockAccesses(BB))
412 ScalarEvolution *SE, MemorySSA *MSSA,
441 MemorySSAUpdater MSSAU(MSSA);
443 /*IsSink=*/true, *L, *MSSA);
511 collectPromotionCandidates(MSSA, AA, L)) {
541 MSSA->verifyMemorySSA();
1120 /// Return true if MSSA knows there are no MemoryDefs in the loop.
1146 static MemoryAccess *getClobberingMemoryAccess(MemorySSA &MSSA,
1155 MSSA.getSkipSelfWalker()->getClobberingMemoryAccess(MA, BAA);
1169 MemorySSA *MSSA = MSSAU.getMemorySSA();
1189 auto MU = cast<MemoryUse>(MSSA->getMemoryAccess(LI));
1194 MSSA, MU, CurLoop, I, Flags, InvariantGroup);
1249 MSSA, cast<MemoryUse>(MSSA->getMemoryAccess(CI)), CurLoop, I,
1285 auto *SIMD = MSSA->getMemoryAccess(SI);
1287 auto *Source = getClobberingMemoryAccess(*MSSA, BAA, Flags, SIMD);
1289 if (!MSSA->isLiveOnEntryDef(Source) &&
1299 if (auto *Accesses = MSSA->getBlockAccesses(BB)) {
1302 auto *MD = getClobberingMemoryAccess(*MSSA, BAA, Flags,
1304 if (!MSSA->isLiveOnEntryDef(MD) &&
1311 if (!Flags.getIsSink() && !MSSA->dominates(SIMD, MU))
2275 static void foreachMemoryAccess(MemorySSA *MSSA, Loop *L,
2278 if (const auto *Accesses = MSSA->getBlockAccesses(BB))
2287 collectPromotionCandidates(MemorySSA *MSSA, AliasAnalysis *AA, Loop *L) {
2301 foreachMemoryAccess(MSSA, L, [&](Instruction *I) {
2318 foreachMemoryAccess(MSSA, L, [&](Instruction *I) {
2349 static bool pointerInvalidatedByLoop(MemorySSA *MSSA, MemoryUse *MU,
2364 BatchAAResults BAA(MSSA->getAA());
2365 MemoryAccess *Source = getClobberingMemoryAccess(*MSSA, BAA, Flags, MU);
2366 return !MSSA->isLiveOnEntryDef(Source) &&
2391 if (pointerInvalidatedByBlock(*BB, *MSSA, *MU))
2395 return pointerInvalidatedByBlock(*I.getParent(), *MSSA, *MU);
2400 bool pointerInvalidatedByBlock(BasicBlock &BB, MemorySSA &MSSA, MemoryUse &MU) {
2401 if (const auto *Accesses = MSSA.getBlockDefs(&BB))
2404 if (MU.getBlock() != MD->getBlock() || !MSSA.locallyDominates(MD, &MU))