@@ -842,8 +842,8 @@ and deallocated with special instructions.
842
842
843
843
Pack types are only allowed in two positions:
844
844
- at the top level of a type, e.g. ``%0 : $Pack{Int, Float} ``
845
- - as a parameter or result type of a function type, e.g.
846
- `` %fn : $@convention(thin) (@pack_in Pack{Int, Float}) -> () ``
845
+ - as a parameter or result type of a function type, e.g. `` %fn : $@convention(thin) (@pack_in Pack{Int, Float}) -> () ``
846
+
847
847
Note in particular that they are not allowed in tuple types. Pack
848
848
expansions in tuple types are still flattened into the surrounding
849
849
tuple structure like they are in Swift (unless the tuple is exploded,
@@ -2577,24 +2577,35 @@ ends of these lifetimes across a deinit barrier.
2577
2577
2578
2578
Source level variables (lets, vars, ...) and function arguments will result in
2579
2579
SIL-level lexical lifetimes if either of the two sets of circumstances apply:
2580
+
2580
2581
(1) Inferred lexicality.
2581
- - the type is non-trivial
2582
- - the type is not eager-move
2583
- - the variable or argument is not annotated to be eager-move
2582
+
2583
+ - the type is non-trivial
2584
+
2585
+ - the type is not eager-move
2586
+
2587
+ - the variable or argument is not annotated to be eager-move
2588
+
2584
2589
OR
2590
+
2585
2591
(2) Explicit lexicality.
2586
- - the type, variable, or argument is annotated `@_lexical `
2592
+
2593
+ - the type, variable, or argument is annotated `@_lexical `
2587
2594
2588
2595
A type is eager-move by satisfying one of two conditions:
2596
+
2589
2597
(1) Inferred: An aggregate is inferred to be eager-move if all of its fields are
2590
- eager-move.
2598
+ eager-move.
2599
+
2591
2600
(2) Annotated: Any type can be eager-move if it is annotated with an attribute
2592
- that explicitly specifies it to be: `@_eagerMove `, `@_noImplicitCopy `.
2601
+ that explicitly specifies it to be: `@_eagerMove `, `@_noImplicitCopy `.
2593
2602
2594
2603
A variable or argument is eager-move by satisfying one of two conditions:
2604
+
2595
2605
(1) Inferred: Its type is eager-move.
2606
+
2596
2607
(2) Annotated: The variable or argument is annotated with an attribute that
2597
- specifies it to be: `@_eagerMove `, `@_noImplicitCopy `.
2608
+ specifies it to be: `@_eagerMove `, `@_noImplicitCopy `.
2598
2609
2599
2610
These source-level rules result in a few sorts of SIL value whose destroys must
2600
2611
not be moved across deinit barriers:
@@ -6532,7 +6543,7 @@ Given the address of a tuple in memory, derives the
6532
6543
address of an element within that value.
6533
6544
6534
6545
tuple_pack_element_addr
6535
- ``````````````````
6546
+ ```````````````````````
6536
6547
::
6537
6548
6538
6549
sil-instruction ::= 'tuple_pack_element_addr' sil-value 'of' sil-operand 'as' sil-type
@@ -8608,7 +8619,7 @@ Optimizer Dataflow Marker Instructions
8608
8619
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8609
8620
8610
8621
mark_unresolved_non_copyable_value
8611
- ```````````````
8622
+ ``````````````````````````````````
8612
8623
::
8613
8624
8614
8625
sil-instruction ::= 'mark_unresolved_non_copyable_value'
0 commit comments