mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This is a new case that comes up with `InlineArray`, since an `InlineArray` with unknown count but known trivial element type is trivial but still address-only due to its unknown size. We are inconsistent about whether we emit formal copies or not of these values; they should generally be unnecessary as long as the memory location of a value is sufficiently long-lived, but the SIL verifier still reasonably considers a `[take]` as an invalidation of the memory, even though at runtime a take is a no-op. Since the take is unnecessary, we can just not take when we copy out of a trivial address location. Fixes #84141 | rdar://160007939.
16 lines
452 B
Swift
16 lines
452 B
Swift
// RUN: %target-swift-emit-silgen -verify -disable-availability-checking %s
|
|
|
|
public enum StreamYieldResult<let count: Int>: Sendable {
|
|
case literal(buffer: InlineArray<count, UInt8>)
|
|
case end(buffer: InlineArray<count, UInt8>, endIndex: Int)
|
|
|
|
public func buffer() -> InlineArray<count, UInt8> {
|
|
switch self {
|
|
case .literal(let b):
|
|
return b
|
|
case .end(let b, _):
|
|
return b
|
|
}
|
|
}
|
|
}
|