about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2025-02-01 16:41:03 +0100
committerGitHub <noreply@github.com>2025-02-01 16:41:03 +0100
commit984cc68c1c120811b8bc50e7b3c81d49f9e6ade8 (patch)
tree469ba7696b1dc8c9ab5b565d27654f7066e97b67 /compiler/rustc_codegen_gcc
parent9c8fe3078e26f95524e4f032e3f46591740a1fc5 (diff)
parenta9434c08e242e0fb404edcc2b672bb5f3e687dc0 (diff)
downloadrust-984cc68c1c120811b8bc50e7b3c81d49f9e6ade8.tar.gz
rust-984cc68c1c120811b8bc50e7b3c81d49f9e6ade8.zip
Rollup merge of #130514 - compiler-errors:unsafe-binders, r=oli-obk
Implement MIR lowering for unsafe binders

This is the final bit of the unsafe binders puzzle. It implements MIR, CTFE, and codegen for unsafe binders, and enforces that (for now) they are `Copy`. Later on, I'll introduce a new trait that relaxes this requirement to being "is `Copy` or `ManuallyDrop<T>`" which more closely models how we treat union fields.

Namely, wrapping unsafe binders is now `Rvalue::WrapUnsafeBinder`, which acts much like an `Rvalue::Aggregate`. Unwrapping unsafe binders are implemented as a MIR projection `ProjectionElem::UnwrapUnsafeBinder`, which acts much like `ProjectionElem::Field`.

Tracking:
- https://github.com/rust-lang/rust/issues/130516
Diffstat (limited to 'compiler/rustc_codegen_gcc')
0 files changed, 0 insertions, 0 deletions