@@ -95,7 +95,7 @@ func computeInteriorLiveness(for definingValue: Value,
9595
9696 var range = InstructionRange ( for: definingValue, context)
9797
98- var visitor = InteriorUseVisitor ( definingValue: definingValue, context) {
98+ var visitor = InteriorUseWalker ( definingValue: definingValue, context) {
9999 range. insert ( $0. instruction)
100100 return . continueWalk
101101 }
@@ -159,18 +159,19 @@ func computeInteriorLiveness(for definingValue: Value,
159159///
160160/// TODO: Change the operandOwnership of MarkDependenceInst base operand.
161161/// It should be a borrowing operand, not a pointer escape.
162- struct InteriorUseVisitor : OwnershipUseVisitor , AddressUseVisitor {
162+ struct InteriorUseWalker : OwnershipUseVisitor , AddressUseVisitor {
163163 let context : FunctionPassContext
164164 var _context : Context { context }
165165
166- let function : Function
167166 let definingValue : Value
168167 let useVisitor : ( Operand ) -> WalkResult
169168
170169 var innerScopeHandler : InnerScopeHandler ? = nil
171170
172171 var unenclosedPhis : [ Phi ] = [ ]
173172
173+ var function : Function { definingValue. parentFunction }
174+
174175 /// If any interior pointer may escape, then record the first instance
175176 /// here. This immediately aborts the walk, so further instances are
176177 /// unavailable.
@@ -197,7 +198,6 @@ struct InteriorUseVisitor: OwnershipUseVisitor, AddressUseVisitor {
197198 visitor: @escaping ( Operand ) -> WalkResult ) {
198199 assert ( !definingValue. type. isAddress, " address values have no ownership " )
199200 self . context = context
200- self . function = definingValue. parentFunction
201201 self . definingValue = definingValue
202202 self . useVisitor = visitor
203203 self . visited = ValueSet ( context)
@@ -312,18 +312,22 @@ struct InteriorUseVisitor: OwnershipUseVisitor, AddressUseVisitor {
312312 }
313313
314314 func handleInner( borrow: BeginBorrowValue ) -> WalkResult {
315- guard let innerScopeHandler else { return . continueWalk }
315+ guard let innerScopeHandler else {
316+ return . continueWalk
317+ }
316318 return innerScopeHandler ( borrow. value)
317319 }
318320
319321 func handleAccess( address: BeginAccessInst ) -> WalkResult {
320- guard let innerScopeHandler else { return . continueWalk }
322+ guard let innerScopeHandler else {
323+ return . continueWalk
324+ }
321325 return innerScopeHandler ( address)
322326 }
323327}
324328
325329// Helpers to walk down forwarding operations.
326- extension InteriorUseVisitor {
330+ extension InteriorUseWalker {
327331 // Walk down forwarding operands
328332 private mutating func walkDown( operand: Operand ) -> WalkResult {
329333 // Record all uses
@@ -345,10 +349,12 @@ extension InteriorUseVisitor {
345349 }
346350
347351 private mutating func walkDownUses( of value: Value ) -> WalkResult {
348- guard value. ownership. hasLifetime else { return . continueWalk }
349-
350- guard visited. insert ( value) else { return . continueWalk }
351-
352+ guard value. ownership. hasLifetime else {
353+ return . continueWalk
354+ }
355+ guard visited. insert ( value) else {
356+ return . continueWalk
357+ }
352358 switch value. ownership {
353359 case . owned:
354360 return visitUsesOfInner ( value: value)
@@ -985,7 +991,7 @@ let interiorLivenessTest = FunctionTest("interior_liveness_swift") {
985991 var range = InstructionRange ( for: value, context)
986992 defer { range. deinitialize ( ) }
987993
988- var visitor = InteriorUseVisitor ( definingValue: value, context) {
994+ var visitor = InteriorUseWalker ( definingValue: value, context) {
989995 range. insert ( $0. instruction)
990996 return . continueWalk
991997 }
@@ -1047,5 +1053,5 @@ let addressUseTest = FunctionTest("address_use_test") {
10471053 print ( function)
10481054 print ( " Uses of address: \( address) " )
10491055 var printer = AddressUsePrinter ( _context: context)
1050- printer. walkDownUses ( ofAddress: address)
1056+ _ = printer. walkDownUses ( ofAddress: address)
10511057}
0 commit comments