File tree Expand file tree Collapse file tree 2 files changed +21
-0
lines changed
SwiftCompilerSources/Sources/Optimizer/Utilities Expand file tree Collapse file tree 2 files changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -297,6 +297,9 @@ extension Instruction {
297
297
switch self {
298
298
case is TermInst , is MarkUninitializedInst , is DebugValueInst :
299
299
return false
300
+ case is BorrowedFromInst :
301
+ // A dead borrowed-from can only be removed if the argument (= operand) is also removed.
302
+ return false
300
303
case let bi as BuiltinInst :
301
304
if bi. id == . OnFastPath {
302
305
return false
Original file line number Diff line number Diff line change @@ -148,3 +148,21 @@ bb0:
148
148
return %16 : $Int
149
149
}
150
150
151
+ // CHECK-LABEL: sil [ossa] @test_dead_borrowed_from
152
+ // CHECK: borrowed {{.*}} from
153
+ // CHECK: } // end sil function 'test_dead_borrowed_from'
154
+ sil [ossa] @test_dead_borrowed_from : $@convention(thin) (@guaranteed Buffer, @guaranteed Buffer) -> () {
155
+ bb0(%0 : @guaranteed $Buffer, %1 : @guaranteed $Buffer):
156
+ cond_br undef, bb1, bb2
157
+
158
+ bb1:
159
+ br bb3(%0 : $Buffer)
160
+
161
+ bb2:
162
+ br bb3(%1 : $Buffer)
163
+
164
+ bb3(%9 : @guaranteed $Buffer):
165
+ %10 = borrowed %9 : $Buffer from (%1 : $Buffer)
166
+ %r = tuple ()
167
+ return %r : $()
168
+ }
You can’t perform that action at this time.
0 commit comments