mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This attribute can be attached to a noncopyable struct to specify that its storage is raw, meaning the type definition is (with some limitations) able to do as it pleases with the storage. This provides a basis for implementing types for things like atomics, locks, and data structures that use inline storage to store conditionally-initialized values. The example in `test/Prototypes/UnfairLock.swift` demonstrates the use of a raw layout type to wrap Darwin's `os_unfair_lock` APIs, allowing a lock value to be stored inside of classes or other types without needing a separate allocation, and using the borrow model to enforce safe access to lock-guarded storage.
10 lines
328 B
Swift
10 lines
328 B
Swift
// RUN: %target-swift-frontend %s -enable-experimental-feature RawLayout -emit-ir -g -o - | %FileCheck %s
|
|
|
|
@_rawLayout(size: 12, alignment: 4)
|
|
// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "S8_4"
|
|
// CHECK-SAME: size: 96,
|
|
// CHECK-SAME: align: 32,
|
|
struct S8_4: ~Copyable {}
|
|
|
|
var s = S8_4()
|