summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Transforms/Utils/MemorySSA.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/Transforms/Utils/MemorySSA.cpp')
-rw-r--r--llvm/unittests/Transforms/Utils/MemorySSA.cpp56
1 files changed, 0 insertions, 56 deletions
diff --git a/llvm/unittests/Transforms/Utils/MemorySSA.cpp b/llvm/unittests/Transforms/Utils/MemorySSA.cpp
index 0df476bc28c..95ec3ed55e6 100644
--- a/llvm/unittests/Transforms/Utils/MemorySSA.cpp
+++ b/llvm/unittests/Transforms/Utils/MemorySSA.cpp
@@ -365,62 +365,6 @@ TEST_F(MemorySSATest, MoveAStoreUpdaterMove) {
MSSA.verifyMemorySSA();
}
-TEST_F(MemorySSATest, MoveAStoreAllAround) {
- // We create a diamond where there is a in the entry, a store on one side, and
- // a load at the end. After building MemorySSA, we test updating by moving
- // the store from the side block to the entry block, then to the other side
- // block, then to before the load. This does not destroy the old access.
- F = Function::Create(
- FunctionType::get(B.getVoidTy(), {B.getInt8PtrTy()}, false),
- GlobalValue::ExternalLinkage, "F", &M);
- BasicBlock *Entry(BasicBlock::Create(C, "", F));
- BasicBlock *Left(BasicBlock::Create(C, "", F));
- BasicBlock *Right(BasicBlock::Create(C, "", F));
- BasicBlock *Merge(BasicBlock::Create(C, "", F));
- B.SetInsertPoint(Entry);
- Argument *PointerArg = &*F->arg_begin();
- StoreInst *EntryStore = B.CreateStore(B.getInt8(16), PointerArg);
- B.CreateCondBr(B.getTrue(), Left, Right);
- B.SetInsertPoint(Left);
- auto *SideStore = B.CreateStore(B.getInt8(16), PointerArg);
- BranchInst::Create(Merge, Left);
- BranchInst::Create(Merge, Right);
- B.SetInsertPoint(Merge);
- auto *MergeLoad = B.CreateLoad(PointerArg);
- setupAnalyses();
- MemorySSA &MSSA = *Analyses->MSSA;
- MemorySSAUpdater Updater(&MSSA);
-
- // Move the store
- auto *EntryStoreAccess = MSSA.getMemoryAccess(EntryStore);
- auto *SideStoreAccess = MSSA.getMemoryAccess(SideStore);
- // Before, the load will point to a phi of the EntryStore and SideStore.
- auto *LoadAccess = cast<MemoryUse>(MSSA.getMemoryAccess(MergeLoad));
- EXPECT_TRUE(isa<MemoryPhi>(LoadAccess->getDefiningAccess()));
- MemoryPhi *MergePhi = cast<MemoryPhi>(LoadAccess->getDefiningAccess());
- EXPECT_EQ(MergePhi->getIncomingValue(1), EntryStoreAccess);
- EXPECT_EQ(MergePhi->getIncomingValue(0), SideStoreAccess);
- // Move the store before the entry store
- SideStore->moveBefore(*EntryStore->getParent(), EntryStore->getIterator());
- Updater.moveBefore(SideStoreAccess, EntryStoreAccess);
- // After, it's a phi of the entry store.
- EXPECT_EQ(MergePhi->getIncomingValue(0), EntryStoreAccess);
- EXPECT_EQ(MergePhi->getIncomingValue(1), EntryStoreAccess);
- MSSA.verifyMemorySSA();
- // Now move the store to the right branch
- SideStore->moveBefore(*Right, Right->begin());
- Updater.moveToPlace(SideStoreAccess, Right, MemorySSA::Beginning);
- MSSA.verifyMemorySSA();
- EXPECT_EQ(MergePhi->getIncomingValue(0), EntryStoreAccess);
- EXPECT_EQ(MergePhi->getIncomingValue(1), SideStoreAccess);
- // Now move it before the load
- SideStore->moveBefore(MergeLoad);
- Updater.moveBefore(SideStoreAccess, LoadAccess);
- EXPECT_EQ(MergePhi->getIncomingValue(0), EntryStoreAccess);
- EXPECT_EQ(MergePhi->getIncomingValue(1), EntryStoreAccess);
- MSSA.verifyMemorySSA();
-}
-
TEST_F(MemorySSATest, RemoveAPhi) {
// We create a diamond where there is a store on one side, and then a load
// after the merge point. This enables us to test a bunch of different
OpenPOWER on IntegriCloud