Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Safe Transmute: Compute transmutability from rustc_target::abi::Layout #123367

Merged
merged 1 commit into from
Apr 8, 2024

Commits on Apr 8, 2024

  1. Compute transmutability from rustc_target::abi::Layout

    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.).
    jswrenn committed Apr 8, 2024
    Configuration menu
    Copy the full SHA
    3aa14e3 View commit details
    Browse the repository at this point in the history