@@ -2005,15 +2005,19 @@ Builtin.RawPointer or a struct containing the same.
2005
2005
` %base ` may have either object or address type. In the latter case, the
2006
2006
dependency is on the current value stored in the address.
2007
2007
2008
- The optional ` nonescaping ` attribute indicates that no value derived from
2009
- ` %value ` escapes the lifetime of ` %base ` . As with escaping ` mark_dependence ` ,
2010
- all values transitively forwarded from ` %value ` must be destroyed within the
2011
- lifetime of ` base ` . Unlike escaping` mark_dependence ` , this must be statically
2012
- verifiable. Additionally, unlike escaping` mark_dependence ` , derived values
2013
- include copies of` %value ` and values transitively forwarded from those copies.
2014
- If` %base ` must not be identical to` %value ` . Unlike escaping` mark_dependence ` ,
2015
- no value derived from` %value ` may have a bitwise escape (conversion to
2016
- UnsafePointer) or pointer escape (unknown use).
2008
+ The optional ` nonescaping ` attribute indicates that no value derived
2009
+ from ` %value ` escapes the lifetime of ` %base ` . As with escaping
2010
+ ` mark_dependence ` , all values transitively forwarded from ` %value `
2011
+ must be destroyed within the lifetime of ` base ` . Unlike escaping
2012
+ ` mark_dependence ` , this must be statically verifiable. Additionally,
2013
+ unlike escaping ` mark_dependence ` , nonescaping ` mark_dependence ` may
2014
+ produce a value of non-` Escapable ` type. A non-` Escapable `
2015
+ ` mark_dependence ` extends the lifetime of ` %base ` into copies of
2016
+ ` %value ` and values transitively forwarded from those copies. If the
2017
+ ` mark_dependence ` forwards an address, then it extends the lifetime
2018
+ through loads from that address. Unlike escaping ` mark_dependence ` , no
2019
+ value derived from ` %value ` may have a bitwise escape (conversion to
2020
+ UnsafePointer) or pointer escape (unknown use).
2017
2021
2018
2022
### is_unique
2019
2023
0 commit comments