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 {
297297 switch self {
298298 case is TermInst , is MarkUninitializedInst , is DebugValueInst :
299299 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
300303 case let bi as BuiltinInst :
301304 if bi. id == . OnFastPath {
302305 return false
Original file line number Diff line number Diff line change @@ -148,3 +148,21 @@ bb0:
148148 return %16 : $Int
149149}
150150
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