Lines Matching defs:MSSA

167     cl::desc("[LICM & MemorySSA] When MSSA in LICM is disabled, this has no "
168 "effect. When MSSA in LICM is enabled, then this is the maximum "
189 static bool pointerInvalidatedByLoop(MemorySSA *MSSA, MemoryUse *MU,
193 static bool pointerInvalidatedByBlock(BasicBlock &BB, MemorySSA &MSSA,
211 static void foreachMemoryAccess(MemorySSA *MSSA, Loop *L,
216 collectPromotionCandidates(MemorySSA *MSSA, AliasAnalysis *AA, Loop *L);
222 TargetTransformInfo *TTI, ScalarEvolution *SE, MemorySSA *MSSA,
259 MemorySSA *MSSA = &getAnalysis<MemorySSAWrapperPass>().getMSSA();
271 SE ? &SE->getSE() : nullptr, MSSA, &ORE);
298 if (!AR.MSSA)
310 &AR.SE, AR.MSSA, &ORE))
332 if (!AR.MSSA)
346 &AR.TLI, &AR.TTI, &AR.SE, AR.MSSA, &ORE, true);
384 MemorySSA &MSSA)
386 IsSink, L, MSSA) {}
390 Loop &L, MemorySSA &MSSA)
396 if (const auto *Accesses = MSSA.getBlockAccesses(BB))
414 ScalarEvolution *SE, MemorySSA *MSSA,
443 MemorySSAUpdater MSSAU(MSSA);
445 /*IsSink=*/true, *L, *MSSA);
513 collectPromotionCandidates(MSSA, AA, L)) {
543 MSSA->verifyMemorySSA();
1121 /// Return true if MSSA knows there are no MemoryDefs in the loop.
1147 static MemoryAccess *getClobberingMemoryAccess(MemorySSA &MSSA,
1156 MSSA.getSkipSelfWalker()->getClobberingMemoryAccess(MA, BAA);
1170 MemorySSA *MSSA = MSSAU.getMemorySSA();
1190 auto MU = cast<MemoryUse>(MSSA->getMemoryAccess(LI));
1195 MSSA, MU, CurLoop, I, Flags, InvariantGroup);
1250 MSSA, cast<MemoryUse>(MSSA->getMemoryAccess(CI)), CurLoop, I,
1286 auto *SIMD = MSSA->getMemoryAccess(SI);
1288 auto *Source = getClobberingMemoryAccess(*MSSA, BAA, Flags, SIMD);
1290 if (!MSSA->isLiveOnEntryDef(Source) &&
1300 if (auto *Accesses = MSSA->getBlockAccesses(BB)) {
1303 auto *MD = getClobberingMemoryAccess(*MSSA, BAA, Flags,
1305 if (!MSSA->isLiveOnEntryDef(MD) &&
1312 if (!Flags.getIsSink() && !MSSA->dominates(SIMD, MU))
2285 static void foreachMemoryAccess(MemorySSA *MSSA, Loop *L,
2288 if (const auto *Accesses = MSSA->getBlockAccesses(BB))
2297 collectPromotionCandidates(MemorySSA *MSSA, AliasAnalysis *AA, Loop *L) {
2311 foreachMemoryAccess(MSSA, L, [&](Instruction *I) {
2328 foreachMemoryAccess(MSSA, L, [&](Instruction *I) {
2359 static bool pointerInvalidatedByLoop(MemorySSA *MSSA, MemoryUse *MU,
2374 BatchAAResults BAA(MSSA->getAA());
2375 MemoryAccess *Source = getClobberingMemoryAccess(*MSSA, BAA, Flags, MU);
2376 return !MSSA->isLiveOnEntryDef(Source) &&
2401 if (pointerInvalidatedByBlock(*BB, *MSSA, *MU))
2405 return pointerInvalidatedByBlock(*I.getParent(), *MSSA, *MU);
2410 bool pointerInvalidatedByBlock(BasicBlock &BB, MemorySSA &MSSA, MemoryUse &MU) {
2411 if (const auto *Accesses = MSSA.getBlockDefs(&BB))
2414 if (MU.getBlock() != MD->getBlock() || !MSSA.locallyDominates(MD, &MU))