diff options
| author | Bryan Garza <1396101+bryangarza@users.noreply.github.com> | 2023-04-21 16:49:36 -0700 |
|---|---|---|
| committer | Bryan Garza <1396101+bryangarza@users.noreply.github.com> | 2023-05-24 14:52:18 -0700 |
| commit | 8f1cec8d8472c3ffacedd4783c64182a407c72df (patch) | |
| tree | 79f6bc12055896112e0b0898c13042411638847d /compiler/rustc_codegen_llvm/src | |
| parent | 97d328012b9ed9b7d481c40e84aa1f2c65b33ec8 (diff) | |
| download | rust-8f1cec8d8472c3ffacedd4783c64182a407c72df.tar.gz rust-8f1cec8d8472c3ffacedd4783c64182a407c72df.zip | |
Safe Transmute: Enable handling references, including recursive types
This patch enables support for references in Safe Transmute, by generating nested obligations during trait selection. Specifically, when we call `confirm_transmutability_candidate(...)`, we now recursively traverse the `rustc_transmute::Answer` tree and create obligations for all the `Answer` variants, some of which include multiple nested `Answer`s. Also, to handle recursive types, enable support for coinduction for the Safe Transmute trait (`BikeshedIntrinsicFrom`) by adding the `#[rustc_coinduction]` annotation. Also fix some small logic issues when reducing the `or` and `and` combinations in `rustc_transmute`, so that we don't end up with additional redundant `Answer`s in the tree. Co-authored-by: Jack Wrenn <jack@wrenn.fyi>
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions
