71
71
return %r : $()
72
72
}
73
73
74
- // Currently, this is not optimized away because memory behavior of begin_borrow is conservative
74
+ // Currently, this is not optimized away because enum has @guaranteed function argument, which
75
+ // will need a borrow scope before being forwarded
75
76
// CHECK-LABEL: sil [ossa] @simple_forwarding2 :
76
77
// CHECK: switch_enum
77
78
// CHECK-LABEL: } // end sil function 'simple_forwarding2'
@@ -81,13 +82,11 @@ bb0(%0 : $Builtin.Int1, %1 : @guaranteed $Klass):
81
82
82
83
bb1:
83
84
%2 = enum $E, #E.A!enumelt, %1 : $Klass
84
- %borrow2 = begin_borrow %2 : $E
85
- br bb3(%borrow2 : $E)
85
+ br bb3(%2 : $E)
86
86
87
87
bb2:
88
88
%3 = enum $E, #E.B!enumelt, %1 : $Klass
89
- %borrow3 = begin_borrow %3 : $E
90
- br bb3(%borrow3 : $E)
89
+ br bb3(%3 : $E)
91
90
92
91
bb3(%14 : @guaranteed $E):
93
92
%15 = function_ref @callee : $@convention(thin) () -> ()
@@ -101,7 +100,6 @@ bb5(%18 : @guaranteed $Klass):
101
100
br bb6
102
101
103
102
bb6:
104
- end_borrow %14 : $E
105
103
%r = tuple ()
106
104
return %r : $()
107
105
}
@@ -187,22 +185,19 @@ bb6:
187
185
188
186
// CHECK-LABEL: sil [ossa] @simple_switch_enum_forwarding2 :
189
187
// CHECK: switch_enum
190
- // CHECK: switch_enum
191
188
// CHECK-LABEL: } // end sil function 'simple_switch_enum_forwarding2'
192
189
sil [ossa] @simple_switch_enum_forwarding2 : $@convention(thin) (@guaranteed E3) -> () {
193
190
bb0(%0 : @guaranteed $E3):
194
191
switch_enum %0 : $E3, case #E3.A!enumelt: bb1, default bb2
195
192
196
193
bb1(%1 : @guaranteed $Klass):
197
194
%2 = enum $E, #E.A!enumelt, %1 : $Klass
198
- %borrow2 = begin_borrow %2 : $E
199
- br bb3(%borrow2 : $E)
195
+ br bb3(%2 : $E)
200
196
201
197
bb2(%defaultenum : @guaranteed $E3):
202
198
%defaultklass = unchecked_enum_data %defaultenum : $E3, #E3.B!enumelt
203
199
%3 = enum $E, #E.B!enumelt, %defaultklass : $Klass
204
- %borrow3 = begin_borrow %3 : $E
205
- br bb3(%borrow3 : $E)
200
+ br bb3(%3 : $E)
206
201
207
202
bb3(%14 : @guaranteed $E):
208
203
%15 = function_ref @callee : $@convention(thin) () -> ()
@@ -216,7 +211,6 @@ bb5(%5 : @guaranteed $Klass):
216
211
br bb6
217
212
218
213
bb6:
219
- end_borrow %14 : $E
220
214
%r = tuple ()
221
215
return %r : $()
222
216
}
0 commit comments