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