mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[MemAccessUtils] Visit access as unique storage uses.
Add a new member functino UniqueStorageUseVisitor::visitBeginAccess and call it when GatherUniqueStorageUses runs.
This commit is contained in:
@@ -1941,7 +1941,8 @@ struct GatherUniqueStorageUses : public AccessUseVisitor {
|
||||
};
|
||||
|
||||
bool UniqueStorageUseVisitor::findUses(UniqueStorageUseVisitor &visitor) {
|
||||
assert(visitor.storage.isUniquelyIdentified());
|
||||
assert(visitor.storage.isUniquelyIdentified() ||
|
||||
visitor.storage.getKind() == AccessStorage::Kind::Nested);
|
||||
|
||||
GatherUniqueStorageUses gather(visitor);
|
||||
return visitAccessStorageUses(gather, visitor.storage, visitor.function);
|
||||
@@ -1972,6 +1973,9 @@ bool GatherUniqueStorageUses::visitUse(Operand *use, AccessUseType useTy) {
|
||||
}
|
||||
}
|
||||
switch (user->getKind()) {
|
||||
case SILInstructionKind::BeginAccessInst:
|
||||
return visitor.visitBeginAccess(use);
|
||||
|
||||
case SILInstructionKind::DestroyAddrInst:
|
||||
case SILInstructionKind::DestroyValueInst:
|
||||
if (useTy == AccessUseType::Exact) {
|
||||
@@ -1982,6 +1986,9 @@ bool GatherUniqueStorageUses::visitUse(Operand *use, AccessUseType useTy) {
|
||||
case SILInstructionKind::DebugValueInst:
|
||||
return visitor.visitDebugUse(use);
|
||||
|
||||
case SILInstructionKind::EndAccessInst:
|
||||
return true;
|
||||
|
||||
case SILInstructionKind::LoadInst:
|
||||
case SILInstructionKind::LoadWeakInst:
|
||||
case SILInstructionKind::LoadUnownedInst:
|
||||
|
||||
Reference in New Issue
Block a user