2

Safe Transmute: Compute transmutability from `rustc_target::abi::Layout` by jswr...

 1 month ago
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 Trees from rustc_target::abi::Layouts. 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.).

r? @compiler-errors


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK