Lines Matching defs:MSSA
50 // We need to defer MSSA construction until AA is *entirely* set up, which
52 std::unique_ptr<MemorySSA> MSSA;
59 MSSA = std::make_unique<MemorySSA>(*Test.F, &AA, &DT);
60 Walker = MSSA->getWalker();
95 MemorySSA &MSSA = *Analyses->MSSA;
96 MemorySSAUpdater Updater(&MSSA);
102 MemoryPhi *MP = MSSA.getMemoryAccess(Merge);
110 MSSA.verifyMemorySSA();
133 MemorySSA &MSSA = *Analyses->MSSA;
134 MemorySSAUpdater Updater(&MSSA);
147 MemoryPhi *MP = MSSA.getMemoryAccess(Merge);
167 MP = MSSA.getMemoryAccess(Merge);
199 MSSA.verifyMemorySSA();
222 MemorySSA &MSSA = *Analyses->MSSA;
223 MemorySSAUpdater Updater(&MSSA);
232 MemoryPhi *MP = MSSA.getMemoryAccess(Merge);
245 MSSA.verifyMemorySSA();
272 MemorySSA &MSSA = *Analyses->MSSA;
273 MemorySSAUpdater Updater(&MSSA);
288 MSSA.verifyMemorySSA();
289 Updater.removeMemoryAccess(MSSA.getMemoryAccess(LoadInst1));
290 MSSA.verifyMemorySSA();
315 MemorySSA &MSSA = *Analyses->MSSA;
316 MemorySSAUpdater Updater(&MSSA);
319 MemoryAccess *EntryStoreAccess = MSSA.getMemoryAccess(EntryStore);
320 MemoryAccess *SideStoreAccess = MSSA.getMemoryAccess(SideStore);
325 MSSA.verifyMemorySSA();
350 MemorySSA &MSSA = *Analyses->MSSA;
351 MemorySSAUpdater Updater(&MSSA);
355 auto *EntryStoreAccess = MSSA.getMemoryAccess(EntryStore);
356 auto *SideStoreAccess = MSSA.getMemoryAccess(SideStore);
360 auto *LoadAccess = cast<MemoryUse>(MSSA.getMemoryAccess(MergeLoad));
370 MSSA.verifyMemorySSA();
395 MemorySSA &MSSA = *Analyses->MSSA;
396 MemorySSAUpdater Updater(&MSSA);
399 auto *EntryStoreAccess = MSSA.getMemoryAccess(EntryStore);
400 auto *SideStoreAccess = MSSA.getMemoryAccess(SideStore);
402 auto *LoadAccess = cast<MemoryUse>(MSSA.getMemoryAccess(MergeLoad));
413 MSSA.verifyMemorySSA();
438 MemorySSA &MSSA = *Analyses->MSSA;
439 MemorySSAUpdater Updater(&MSSA);
442 auto *EntryStoreAccess = MSSA.getMemoryAccess(EntryStore);
443 auto *SideStoreAccess = MSSA.getMemoryAccess(SideStore);
445 auto *LoadAccess = cast<MemoryUse>(MSSA.getMemoryAccess(MergeLoad));
456 MSSA.verifyMemorySSA();
460 MSSA.verifyMemorySSA();
468 MSSA.verifyMemorySSA();
492 MemorySSA &MSSA = *Analyses->MSSA;
493 MemorySSAUpdater Updater(&MSSA);
496 MemoryUse *LoadAccess = cast<MemoryUse>(MSSA.getMemoryAccess(LoadInst));
497 MemoryDef *StoreAccess = cast<MemoryDef>(MSSA.getMemoryAccess(StoreInst));
505 EXPECT_TRUE(MSSA.isLiveOnEntryDef(cast<MemoryAccess>(Op.get())));
507 MP->replaceAllUsesWith(MSSA.getLiveOnEntryDef());
509 EXPECT_TRUE(MSSA.isLiveOnEntryDef(LoadAccess->getDefiningAccess()));
512 MSSA.verifyMemorySSA();
536 MemorySSA &MSSA = *Analyses->MSSA;
538 MemorySSAUpdater Updater(&MSSA);
542 MemoryUse *LoadAccess = cast<MemoryUse>(MSSA.getMemoryAccess(LoadInst));
543 MemoryDef *StoreAccess = cast<MemoryDef>(MSSA.getMemoryAccess(StoreInst));
550 MSSA.verifyMemorySSA();
561 MSSA.isLiveOnEntryDef(Walker->getClobberingMemoryAccess(LoadInst)));
565 MSSA.isLiveOnEntryDef(Walker->getClobberingMemoryAccess(LoadInst)));
569 EXPECT_TRUE(MSSA.isLiveOnEntryDef(Operand));
574 MSSA.verifyMemorySSA();
576 EXPECT_TRUE(MSSA.isLiveOnEntryDef(LoadAccess->getDefiningAccess()));
602 MemorySSA &MSSA = *Analyses->MSSA;
608 MemoryAccess *DefiningAccess = MSSA.getMemoryAccess(V)->getDefiningAccess();
632 MemorySSA &MSSA = *Analyses->MSSA;
636 EXPECT_EQ(LoadClobber, MSSA.getMemoryAccess(SI));
637 EXPECT_TRUE(MSSA.isLiveOnEntryDef(Walker->getClobberingMemoryAccess(SI)));
661 MemorySSA &MSSA = *Analyses->MSSA;
664 MemoryAccess *StoreAccess = MSSA.getMemoryAccess(SI);
671 EXPECT_TRUE(MSSA.isLiveOnEntryDef(LiveOnEntry));
677 EXPECT_TRUE(MSSA.isLiveOnEntryDef(LiveOnEntry));
716 // we build MSSA. This helps keep the test case simple-ish.
725 MemorySSA &MSSA = *Analyses->MSSA;
727 MemorySSAUpdater Updater(&MSSA);
731 Updater.removeMemoryAccess(MSSA.getMemoryAccess(KillStore));
733 auto *ALoadMA = cast<MemoryUse>(MSSA.getMemoryAccess(ALoad));
734 EXPECT_EQ(ALoadMA->getDefiningAccess(), MSSA.getMemoryAccess(BStore));
740 EXPECT_EQ(MSSA.getMemoryAccess(FirstStore), Load0Clobber);
746 MemoryAccess *Phi = MSSA.getMemoryAccess(IfEnd);
752 EXPECT_EQ(UseClobber, MSSA.getMemoryAccess(FirstStore));
757 // building MSSA. Otherwise, the use optimizer will optimize it for us, which
759 // FIXME: It may be easier/cleaner to just add an 'optimize uses?' flag to MSSA.
772 MemorySSA &MSSA = *Analyses->MSSA;
775 auto *LoadMA = cast<MemoryUse>(MSSA.getMemoryAccess(Load));
776 auto *StoreMA = cast<MemoryDef>(MSSA.getMemoryAccess(Store));
785 EXPECT_EQ(LoadClobber, MSSA.getLiveOnEntryDef());
801 MemorySSA &MSSA = *Analyses->MSSA;
803 MemorySSAUpdater Updater(&MSSA);
806 MemoryUse *LoadAccess = cast<MemoryUse>(MSSA.getMemoryAccess(LIA));
807 EXPECT_EQ(LoadClobber, MSSA.getMemoryAccess(SIA));
808 EXPECT_TRUE(MSSA.isLiveOnEntryDef(Walker->getClobberingMemoryAccess(SIA)));
813 LIA, MSSA.getMemoryAccess(SIB), LIA->getParent(), MemorySSA::End));
839 MemorySSA &MSSA = *Analyses->MSSA;
842 MemorySSAUpdater Updater(&MSSA);
844 Updater.moveBefore(cast<MemoryDef>(MSSA.getMemoryAccess(StoreC)),
845 cast<MemoryDef>(MSSA.getMemoryAccess(StoreB)));
847 MSSA.verifyMemorySSA();
849 EXPECT_EQ(MSSA.getMemoryAccess(StoreB)->getDefiningAccess(),
850 MSSA.getMemoryAccess(StoreC));
851 EXPECT_EQ(MSSA.getMemoryAccess(StoreC)->getDefiningAccess(),
852 MSSA.getMemoryAccess(StoreA0));
853 EXPECT_EQ(MSSA.getMemoryAccess(StoreA2)->getDefiningAccess(),
854 MSSA.getMemoryAccess(StoreA1));
856 MSSA.getMemoryAccess(StoreB));
858 MSSA.getMemoryAccess(StoreC));
861 EXPECT_TRUE(MSSA.locallyDominates(MSSA.getMemoryAccess(StoreC),
862 MSSA.getMemoryAccess(StoreB)));
863 EXPECT_TRUE(MSSA.locallyDominates(MSSA.getMemoryAccess(StoreA1),
864 MSSA.getMemoryAccess(StoreA2)));
896 MemorySSA &MSSA = *Analyses->MSSA;
897 MemorySSAUpdater Updater(&MSSA);
903 MSSA.verifyMemorySSA();
914 // ...And be sure that MSSA's caching doesn't give us `1` for the clobber of
929 MemorySSA &MSSA = *Analyses->MSSA;
931 auto *DefA = cast<MemoryDef>(MSSA.getMemoryAccess(StoreA));
932 auto *DefB = cast<MemoryDef>(MSSA.getMemoryAccess(StoreB));
934 MemoryAccess *BClobber = MSSA.getWalker()->getClobberingMemoryAccess(DefB);
937 MemorySSAUpdater(&MSSA).removeMemoryAccess(DefA);
940 EXPECT_EQ(DefB->getDefiningAccess(), MSSA.getLiveOnEntryDef());
942 EXPECT_EQ(MSSA.getWalker()->getClobberingMemoryAccess(DefB),
943 MSSA.getLiveOnEntryDef())
958 // And be sure that MSSA's caching handles the removal of def `1`
975 MemorySSA &MSSA = *Analyses->MSSA;
977 auto *DefX1 = cast<MemoryDef>(MSSA.getMemoryAccess(StoreX1));
978 auto *DefY = cast<MemoryDef>(MSSA.getMemoryAccess(StoreY));
979 auto *DefX2 = cast<MemoryDef>(MSSA.getMemoryAccess(StoreX2));
982 MemoryAccess *X2Clobber = MSSA.getWalker()->getClobberingMemoryAccess(DefX2);
985 MemorySSAUpdater(&MSSA).removeMemoryAccess(DefX1);
989 EXPECT_EQ(MSSA.getWalker()->getClobberingMemoryAccess(DefX2),
990 MSSA.getLiveOnEntryDef())
1010 MemorySSA &MSSA = *Analyses->MSSA;
1015 MemoryDef *MemDef = dyn_cast_or_null<MemoryDef>(MSSA.getMemoryAccess(V));
1062 MemorySSA &MSSA = *Analyses->MSSA;
1067 MemoryDef *MemDef = dyn_cast_or_null<MemoryDef>(MSSA.getMemoryAccess(V));
1078 MemoryDef *MemDef = dyn_cast_or_null<MemoryDef>(MSSA.getMemoryAccess(V));
1136 MemorySSA &MSSA = *Analyses->MSSA;
1138 MemoryAccess *LifetimeStartAccess = MSSA.getMemoryAccess(LifetimeStart);
1141 MemoryAccess *FooAccess = MSSA.getMemoryAccess(FooStore);
1144 MemoryAccess *BarAccess = MSSA.getMemoryAccess(BarStore);
1147 MemoryAccess *BazAccess = MSSA.getMemoryAccess(BazMemSet);
1151 MSSA.getWalker()->getClobberingMemoryAccess(FooAccess);
1155 MSSA.getWalker()->getClobberingMemoryAccess(BarAccess);
1159 MSSA.getWalker()->getClobberingMemoryAccess(BazAccess);
1163 MSSA.getWalker()->getClobberingMemoryAccess(
1205 MemorySSA &MSSA = *Analyses->MSSA;
1207 auto *AccessEntry = cast<MemoryDef>(MSSA.getMemoryAccess(StoreEntry));
1208 auto *StoreAEntry = cast<MemoryDef>(MSSA.getMemoryAccess(StoreA));
1209 auto *StoreBEntry = cast<MemoryDef>(MSSA.getMemoryAccess(StoreB));
1211 ASSERT_EQ(MSSA.getWalker()->getClobberingMemoryAccess(StoreAEntry),
1215 ASSERT_EQ(MSSA.getWalker()->getClobberingMemoryAccess(StoreBEntry),
1225 MemorySSAUpdater(&MSSA).moveToPlace(StoreAEntry, BlockB,
1228 ASSERT_EQ(MSSA.getWalker()->getClobberingMemoryAccess(StoreAEntry),
1246 MemorySSA &MSSA = *Analyses->MSSA;
1251 MSSA.getLiveOnEntryDef());
1253 MSSA.getLiveOnEntryDef());
1254 auto *StoreAAccess = cast<MemoryDef>(MSSA.getMemoryAccess(StoreA));
1255 auto *StoreA2Access = cast<MemoryDef>(MSSA.getMemoryAccess(StoreA2));
1259 auto *StoreBAccess = cast<MemoryDef>(MSSA.getMemoryAccess(StoreB));
1289 EXPECT_EQ(SortedUserList(cast<MemoryDef>(MSSA.getLiveOnEntryDef())),
1329 MemorySSA &MSSA = *Analyses->MSSA;
1332 std::make_unique<MemorySSAUpdater>(&MSSA);
1334 MemoryPhi *Phi = MSSA.getMemoryAccess(Exit);
1390 MemorySSA &MSSA = *Analyses->MSSA;
1393 std::make_unique<MemorySSAUpdater>(&MSSA);
1395 MemoryDef *DefS1 = cast<MemoryDef>(MSSA.getMemoryAccess(S1));
1407 MemoryPhi *Phi = MSSA.getMemoryAccess(Exit);
1462 MemorySSA &MSSA = *Analyses->MSSA;
1464 std::make_unique<MemorySSAUpdater>(&MSSA);
1475 MemoryPhi *MPC = MSSA.getMemoryAccess(CBlock);
1477 MemoryPhi *MPD = MSSA.getMemoryAccess(DBlock);
1479 MemoryPhi *MPE = MSSA.getMemoryAccess(EBlock);
1496 MemorySSA &MSSA = *Analyses->MSSA;
1499 MemoryUseOrDef *Store1Access = MSSA.getMemoryAccess(StorePointer1);
1500 MemoryUseOrDef *Store2Access = MSSA.getMemoryAccess(StorePointer2);
1501 MemoryUseOrDef *MemSetAccess = MSSA.getMemoryAccess(MemSet);
1529 MemorySSA &MSSA = *Analyses->MSSA;
1532 MemoryUseOrDef *Load1Access = MSSA.getMemoryAccess(LoadPointer1);
1533 MemoryUseOrDef *Load2Access = MSSA.getMemoryAccess(LoadPointer2);
1539 EXPECT_TRUE(MSSA.isLiveOnEntryDef(Pointer1Clobber));
1543 EXPECT_TRUE(MSSA.isLiveOnEntryDef(Pointer2Clobber));
1576 MemorySSA &MSSA = *Analyses->MSSA;
1583 MemoryAccess *MA = MSSA.getMemoryAccess(SI);
1587 auto ItA = upward_defs_begin({MA, ML}, MSSA.getDomTree());
1589 upward_defs_begin({ItA->first, ItA->second}, MSSA.getDomTree());
1614 MemorySSA &MSSA = *Analyses->MSSA;
1623 MemoryAccess *SAccess = MSSA.getMemoryAccess(&SI);
1624 MemoryAccess *LAccess = MSSA.getMemoryAccess(&LI);
1626 EXPECT_TRUE(MSSA.isLiveOnEntryDef(SClobber));
1632 MemorySSAUpdater Updater(&MSSA);
1637 MemoryAccess *CallAccess = MSSA.getMemoryAccess(&Call);
1638 MemoryAccess *LAccess = MSSA.getMemoryAccess(&LI);
1698 MemorySSA &MSSA = *Analyses->MSSA;
1699 MemorySSAUpdater Updater(&MSSA);
1706 if (MemoryUseOrDef *MUD = MSSA.getMemoryAccess(LI))
1731 if (MemoryUseOrDef *MUD = MSSA.getMemoryAccess(LI))
1769 MemorySSA &MSSA = *Analyses->MSSA;
1770 MemorySSAUpdater Updater(&MSSA);
1776 ASSERT_EQ(MSSA.getMemoryAccess(DbgDeclare), nullptr);
1777 ASSERT_EQ(MSSA.getMemoryAccess(DbgValue), nullptr);