44
44
// of which dominates the value and introduces a borrow scope that
45
45
// encloses all forwarded uses of the guaranteed value.
46
46
//
47
- // %1 = begin_borrow %0 // borrow introducer for %3
47
+ // %1 = begin_borrow %0 // borrow introducer for %2
48
48
// %2 = begin_borrow %1 // borrow introducer for %3
49
49
// %3 = struct (%1, %2) // forwards two guaranteed values
50
50
// ... all forwarded uses of %3
88
88
// %6 = begin_borrow %0 %6 %0
89
89
// %7 = struct (%6) %6 %6
90
90
// br bb3(%6, %7)
91
- // bb3(%reborrow: @guaranteed, %reborrow %0
91
+ // bb3(%reborrow: @reborrow, %reborrow %0
92
92
// %phi: @guaranteed): %phi %reborrow
93
93
//
94
94
// `%reborrow` is an outer-adjacent phi to `%phi` because it encloses
104
104
// cond_br ..., bb1, bb2
105
105
// bb1:
106
106
// %1 = owned value
107
- // %2 = begin_borrow %0 %2 %1
107
+ // %2 = begin_borrow %1 %2 %1
108
108
// br bb3(%1, %2)
109
109
// bb2:
110
110
// %5 = owned value
111
111
// %6 = begin_borrow %5 %6 %5
112
112
// 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
115
115
//
116
116
// In OSSA, each owned value defines a separate lifetime. It is
117
117
// consumed on all paths by a direct use. Owned lifetimes can,
@@ -201,9 +201,8 @@ enum BorrowingInstruction : CustomStringConvertible, Hashable {
201
201
switch self {
202
202
case . beginBorrow, . storeBorrow:
203
203
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)
207
206
}
208
207
case . beginApply( let bai) :
209
208
return bai. token. uses. walk { return visitor ( $0) }
@@ -494,10 +493,10 @@ private struct BorrowIntroducers {
494
493
//
495
494
// Example:
496
495
//
497
- // bb1(%reborrow_1 : @guaranteed )
496
+ // bb1(%reborrow_1 : @reborrow )
498
497
// %field = struct_extract %reborrow_1
499
498
// br bb2(%reborrow_1, %field)
500
- // bb2(%reborrow_2 : @guaranteed , %forward_2 : @guaranteed)
499
+ // bb2(%reborrow_2 : @reborrow , %forward_2 : @guaranteed)
501
500
// end_borrow %reborrow_2
502
501
//
503
502
// Calling `gather(forPhi: %forward_2)`
@@ -606,8 +605,8 @@ private func mapToPhi<PredecessorSequence: Sequence<Value>> (
606
605
/// %outerBorrow = begin_borrow %0 // %0
607
606
/// %innerBorrow = begin_borrow %outerBorrow // %outerBorrow
608
607
/// br bb1(%outerBorrow, %innerBorrow)
609
- /// bb1(%outerReborrow : @guaranteed, // %0
610
- /// %innerReborrow : @guaranteed) // %outerReborrow
608
+ /// bb1(%outerReborrow : @reborrow, // %0
609
+ /// %innerReborrow : @reborrow) // %outerReborrow
611
610
///
612
611
func gatherEnclosingValues( for value: Value ,
613
612
in enclosingValues: inout Stack < Value > ,
@@ -735,11 +734,11 @@ private struct EnclosingValues {
735
734
// %value = ...
736
735
// %borrow = begin_borrow %value
737
736
// br one(%borrow)
738
- // one(%reborrow_1 : @guaranteed )
737
+ // one(%reborrow_1 : @reborrow )
739
738
// br two(%value, %reborrow_1)
740
- // two(%phi_2 : @owned, %reborrow_2 : @guaranteed )
739
+ // two(%phi_2 : @owned, %reborrow_2 : @reborrow )
741
740
// br three(%value, %reborrow_2)
742
- // three(%phi_3 : @owned, %reborrow_3 : @guaranteed )
741
+ // three(%phi_3 : @owned, %reborrow_3 : @reborrow )
743
742
// end_borrow %reborrow_3
744
743
// destroy_value %phi_3
745
744
//
@@ -758,7 +757,7 @@ private struct EnclosingValues {
758
757
// %struct = struct (%outerBorrowA, outerBorrowB)
759
758
// %borrow = begin_borrow %struct
760
759
// br one(%outerBorrowA, %borrow)
761
- // one(%outerReborrow : @guaranteed , %reborrow : @guaranteed )
760
+ // one(%outerReborrow : @reborrow , %reborrow : @reborrow )
762
761
//
763
762
// gather(forReborrow: %reborrow) finds (%outerReborrow, %outerBorrowB).
764
763
//
0 commit comments