SILCombine: remove dead string.init_empty_with_capacity semantic calls

This avoids leftover runtime calls for constant folded large interpolated strings.

rdar://127308237
This commit is contained in:
Erik Eckstein
2024-05-02 10:49:20 +02:00
parent c2a502876e
commit c7f35f99ef
2 changed files with 23 additions and 1 deletions

View File

@@ -69,6 +69,15 @@ public func testFoldConcat() -> String {
return "a" + "b" + "c"
}
// CHECK-LABEL: sil hidden [noinline] @$s4test0A25InterpolationInLongStringSSyF :
// CHECK-NOT: apply
// CHECK-NOT: bb1
// CHECK: } // end sil function '$s4test0A25InterpolationInLongStringSSyF'
@inline(never)
func testInterpolationInLongString() -> String {
return "\(#function) used in a veeeeeeeeeeeeeeeeeeeery long string"
}
// CHECK-LABEL: sil [noinline] @$s4test0A19UnqualifiedTypeNameSSyF
// CHECK-NOT: apply
// CHECK-NOT: bb1
@@ -141,6 +150,9 @@ printEmbedded(testFoldStaticLet())
// CHECK-OUTPUT: <abc>
printEmbedded(testFoldConcat())
// CHECK-OUTPUT: <testInterpolationInLongString() used in a veeeeeeeeeeeeeeeeeeeery long string>
printEmbedded(testInterpolationInLongString())
// CHECK-OUTPUT: <Inner>
printEmbedded(testUnqualifiedTypeName())