Add CastKind::Transmute
to MIR
Updates `interpret`, `codegen_ssa`, and `codegen_cranelift` to consume the new cast instead of the intrinsic. Includes `CastTransmute` for custom MIR building, to be able to test the extra UB.
This commit is contained in:
parent
a266f11990
commit
64cce5fc7d
55 changed files with 955 additions and 190 deletions
|
@ -504,6 +504,15 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
|
|||
|
||||
return None;
|
||||
}
|
||||
// Do not try creating references, nor any types with potentially-complex
|
||||
// invariants. This avoids an issue where checking validity would do a
|
||||
// bunch of work generating a nice message about the invariant violation,
|
||||
// only to not show it to anyone (since this isn't the lint).
|
||||
Rvalue::Cast(CastKind::Transmute, op, dst_ty) if !dst_ty.is_primitive() => {
|
||||
trace!("skipping Transmute of {:?} to {:?}", op, dst_ty);
|
||||
|
||||
return None;
|
||||
}
|
||||
|
||||
// There's no other checking to do at this time.
|
||||
Rvalue::Aggregate(..)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue