-* `-Zmiri-permissive-provenance` is **experimental**. This will make Miri do a
- best-effort attempt to implement the semantics of
- [`expose_addr`](https://doc.rust-lang.org/nightly/std/primitive.pointer.html#method.expose_addr)
- and
- [`ptr::from_exposed_addr`](https://doc.rust-lang.org/nightly/std/ptr/fn.from_exposed_addr.html)
- for pointer-to-int and int-to-pointer casts, respectively. This will
- necessarily miss some bugs as those semantics are not efficiently
- implementable in a sanitizer, but it will only miss bugs that concerns
- memory/pointers which is subject to these operations. Also note that this flag
- is currently incompatible with Stacked Borrows, so you will have to also pass
- `-Zmiri-disable-stacked-borrows` to use this.
-* `-Zmiri-symbolic-alignment-check` makes the alignment check more strict. By
- default, alignment is checked by casting the pointer to an integer, and making
- sure that is a multiple of the alignment. This can lead to cases where a
- program passes the alignment check by pure chance, because things "happened to
- be" sufficiently aligned -- there is no UB in this execution but there would
- be UB in others. To avoid such cases, the symbolic alignment check only takes
- into account the requested alignment of the relevant allocation, and the
- offset into that allocation. This avoids missing such bugs, but it also
- incurs some false positives when the code does manual integer arithmetic to
- ensure alignment. (The standard library `align_to` method works fine in both
- modes; under symbolic alignment it only fills the middle slice when the
- allocation guarantees sufficient alignment.)
+* `-Zmiri-retag-fields` changes Stacked Borrows retagging to recurse into fields.
+ This means that references in fields of structs/enums/tuples/arrays/... are retagged,
+ and in particular, they are protected when passed as function arguments.