64cce5fc7d
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.
30 lines
1.7 KiB
Diff
30 lines
1.7 KiB
Diff
- // MIR for `transmute_to_mut_uninhabited` before LowerIntrinsics
|
|
+ // MIR for `transmute_to_mut_uninhabited` after LowerIntrinsics
|
|
|
|
fn transmute_to_mut_uninhabited() -> ! {
|
|
let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50
|
|
let mut _1: !; // in scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
|
let _2: &mut Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
|
let mut _3: !; // in scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
|
scope 1 {
|
|
debug x => _2; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
|
StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
|
- _2 = transmute::<usize, &mut Never>(const 1_usize) -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
|
- // mir::Constant
|
|
- // + span: $DIR/lower_intrinsics.rs:64:25: 64:44
|
|
- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> &mut Never {transmute::<usize, &mut Never>}, val: Value(<ZST>) }
|
|
+ _2 = const 1_usize as &mut Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
|
+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
|
}
|
|
|
|
bb1: {
|
|
StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
|
unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13
|
|
}
|
|
}
|
|
|