4444// of which dominates the value and introduces a borrow scope that
4545// encloses all forwarded uses of the guaranteed value.
4646//
47- // %1 = begin_borrow %0 // borrow introducer for %3
47+ // %1 = begin_borrow %0 // borrow introducer for %2
4848// %2 = begin_borrow %1 // borrow introducer for %3
4949// %3 = struct (%1, %2) // forwards two guaranteed values
5050// ... all forwarded uses of %3
8888// %6 = begin_borrow %0 %6 %0
8989// %7 = struct (%6) %6 %6
9090// br bb3(%6, %7)
91- // bb3(%reborrow: @guaranteed, %reborrow %0
91+ // bb3(%reborrow: @reborrow, %reborrow %0
9292// %phi: @guaranteed): %phi %reborrow
9393//
9494// `%reborrow` is an outer-adjacent phi to `%phi` because it encloses
104104// cond_br ..., bb1, bb2
105105// bb1:
106106// %1 = owned value
107- // %2 = begin_borrow %0 %2 %1
107+ // %2 = begin_borrow %1 %2 %1
108108// br bb3(%1, %2)
109109// bb2:
110110// %5 = owned value
111111// %6 = begin_borrow %5 %6 %5
112112// br bb3(%5, %6)
113- // bb3(%phi: @owned, invalid %0
114- // %reborrow: @guaranteed): %reborrow %phi
113+ // bb3(%phi: @owned, invalid none
114+ // %reborrow: @reborrow): %reborrow %phi
115115//
116116// In OSSA, each owned value defines a separate lifetime. It is
117117// consumed on all paths by a direct use. Owned lifetimes can,
@@ -201,9 +201,8 @@ enum BorrowingInstruction : CustomStringConvertible, Hashable {
201201 switch self {
202202 case . beginBorrow, . storeBorrow:
203203 let svi = instruction as! SingleValueInstruction
204- return svi. uses. walk {
205- if $0. instruction is EndBorrowInst { return visitor ( $0) }
206- return . continueWalk
204+ return svi. uses. filterUsers ( ofType: EndBorrowInst . self) . walk {
205+ visitor ( $0)
207206 }
208207 case . beginApply( let bai) :
209208 return bai. token. uses. walk { return visitor ( $0) }
@@ -494,10 +493,10 @@ private struct BorrowIntroducers {
494493 //
495494 // Example:
496495 //
497- // bb1(%reborrow_1 : @guaranteed )
496+ // bb1(%reborrow_1 : @reborrow )
498497 // %field = struct_extract %reborrow_1
499498 // br bb2(%reborrow_1, %field)
500- // bb2(%reborrow_2 : @guaranteed , %forward_2 : @guaranteed)
499+ // bb2(%reborrow_2 : @reborrow , %forward_2 : @guaranteed)
501500 // end_borrow %reborrow_2
502501 //
503502 // Calling `gather(forPhi: %forward_2)`
@@ -606,8 +605,8 @@ private func mapToPhi<PredecessorSequence: Sequence<Value>> (
606605/// %outerBorrow = begin_borrow %0 // %0
607606/// %innerBorrow = begin_borrow %outerBorrow // %outerBorrow
608607/// br bb1(%outerBorrow, %innerBorrow)
609- /// bb1(%outerReborrow : @guaranteed, // %0
610- /// %innerReborrow : @guaranteed) // %outerReborrow
608+ /// bb1(%outerReborrow : @reborrow, // %0
609+ /// %innerReborrow : @reborrow) // %outerReborrow
611610///
612611func gatherEnclosingValues( for value: Value ,
613612 in enclosingValues: inout Stack < Value > ,
@@ -735,11 +734,11 @@ private struct EnclosingValues {
735734 // %value = ...
736735 // %borrow = begin_borrow %value
737736 // br one(%borrow)
738- // one(%reborrow_1 : @guaranteed )
737+ // one(%reborrow_1 : @reborrow )
739738 // br two(%value, %reborrow_1)
740- // two(%phi_2 : @owned, %reborrow_2 : @guaranteed )
739+ // two(%phi_2 : @owned, %reborrow_2 : @reborrow )
741740 // br three(%value, %reborrow_2)
742- // three(%phi_3 : @owned, %reborrow_3 : @guaranteed )
741+ // three(%phi_3 : @owned, %reborrow_3 : @reborrow )
743742 // end_borrow %reborrow_3
744743 // destroy_value %phi_3
745744 //
@@ -758,7 +757,7 @@ private struct EnclosingValues {
758757 // %struct = struct (%outerBorrowA, outerBorrowB)
759758 // %borrow = begin_borrow %struct
760759 // br one(%outerBorrowA, %borrow)
761- // one(%outerReborrow : @guaranteed , %reborrow : @guaranteed )
760+ // one(%outerReborrow : @reborrow , %reborrow : @reborrow )
762761 //
763762 // gather(forReborrow: %reborrow) finds (%outerReborrow, %outerBorrowB).
764763 //
0 commit comments