Safe Transmute: Compute transmutability from `rustc_target::abi::Layout` by jswr...
source link: https://github.com/rust-lang/rust/pull/123367
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Conversation
Member
In its first step of computing transmutability, rustc_transmutability
constructs a byte-level representation of type layout (Tree
). Previously, this representation was computed for ADTs by inspecting the ADT definition and performing our own layout computations. This process was error-prone, verbose, and limited our ability to analyze many types (particularly default-repr types).
In this PR, we instead construct Tree
s from rustc_target::abi::Layout
s. This helps ensure that layout optimizations are reflected our analyses, and increases the kinds of types we can now analyze, including:
- default repr ADTs
- transparent unions
UnsafeCell
-containing types
Overall, this PR expands the expressvity of rustc_transmutability
to be much closer to the transmutability analysis performed by miri. Future PRs will work to close the remaining gaps (e.g., support for Box
, raw pointers, NonZero*
, coroutines, etc.).
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK