diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-04-24 07:53:25 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-24 07:53:25 +0200 |
| commit | 3ecae2932ccba4744a70da52dfb0930bcf8e902a (patch) | |
| tree | bcab72d307cf760d83a5be21f62612866bcbad4f /compiler/rustc_mir_transform/src | |
| parent | 775682dc5e63fec7a062e84a32aa740ca5c45f0b (diff) | |
| parent | 1de2257c3f6579028f2b8d97908ba12896abca61 (diff) | |
| download | rust-3ecae2932ccba4744a70da52dfb0930bcf8e902a.tar.gz rust-3ecae2932ccba4744a70da52dfb0930bcf8e902a.zip | |
Rollup merge of #110706 - scottmcm:transmute_unchecked, r=oli-obk
Add `intrinsics::transmute_unchecked` This takes a whole 3 lines in `compiler/` since it lowers to `CastKind::Transmute` in MIR *exactly* the same as the existing `intrinsics::transmute` does, it just doesn't have the fancy checking in `hir_typeck`. Added to enable experimenting with the request in <https://github.com/rust-lang/rust/pull/106281#issuecomment-1496648190> and because the portable-simd folks might be interested for dependently-sized array-vector conversions. It also simplifies a couple places in `core`. See also https://github.com/rust-lang/rust/pull/108442#issuecomment-1474777273, where `CastKind::Transmute` was added having exactly these semantics before the lang meeting (which I wasn't in) independently expressed interest.
Diffstat (limited to 'compiler/rustc_mir_transform/src')
| -rw-r--r-- | compiler/rustc_mir_transform/src/lower_intrinsics.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_mir_transform/src/lower_intrinsics.rs b/compiler/rustc_mir_transform/src/lower_intrinsics.rs index c136642dff2..c7d3f6c9f04 100644 --- a/compiler/rustc_mir_transform/src/lower_intrinsics.rs +++ b/compiler/rustc_mir_transform/src/lower_intrinsics.rs @@ -221,7 +221,7 @@ impl<'tcx> MirPass<'tcx> for LowerIntrinsics { terminator.kind = TerminatorKind::Goto { target }; } } - sym::transmute => { + sym::transmute | sym::transmute_unchecked => { let dst_ty = destination.ty(local_decls, tcx).ty; let Ok([arg]) = <[_; 1]>::try_from(std::mem::take(args)) else { span_bug!( |
