Skip to content

Commit f374f2b

Browse files
committed
Handle store_borrow in MemAccessUtils
1 parent 1761fc2 commit f374f2b

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

include/swift/SIL/MemAccessUtils.h

+4
Original file line numberDiff line numberDiff line change
@@ -1691,6 +1691,10 @@ Result AccessUseDefChainVisitor<Impl, Result>::visit(SILValue sourceAddr) {
16911691
if (isAccessStorageIdentityCast(svi))
16921692
return asImpl().visitStorageCast(svi, &svi->getAllOperands()[0],
16931693
AccessStorageCast::Identity);
1694+
if (auto *sbi = dyn_cast<StoreBorrowInst>(svi))
1695+
return asImpl().visitStorageCast(
1696+
svi, &sbi->getAllOperands()[CopyLikeInstruction::Dest],
1697+
AccessStorageCast::Identity);
16941698
}
16951699
switch (sourceAddr->getKind()) {
16961700
default:

lib/SIL/Utils/MemAccessUtils.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -1935,6 +1935,11 @@ bool AccessPathDefUseTraversal::visitUser(DFSEntry dfs) {
19351935
return true;
19361936
}
19371937
}
1938+
if (auto *sbi = dyn_cast<StoreBorrowInst>(use->getUser())) {
1939+
if (use->get() == sbi->getDest()) {
1940+
pushUsers(sbi, dfs);
1941+
}
1942+
}
19381943
if (isa<EndBorrowInst>(use->getUser())) {
19391944
return true;
19401945
}

0 commit comments

Comments
 (0)