mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 18:23:49 +00:00
2beabbbf6f
It makes it sound like the `ExprKind` and `Rvalue` are supposed to represent all pointer related casts, when in reality their just used to share a some enum variants. Make it clear there these are only coercion to make it clear why only some pointer related "casts" are in the enum.
47 lines
1.0 KiB
Diff
47 lines
1.0 KiB
Diff
- // MIR for `FOO` before PromoteTemps
|
|
+ // MIR for `FOO` after PromoteTemps
|
|
|
|
static mut FOO: *const &i32 = {
|
|
let mut _0: *const &i32;
|
|
let mut _1: &[&i32];
|
|
let mut _2: &[&i32; 1];
|
|
let _3: [&i32; 1];
|
|
let mut _4: &i32;
|
|
let _5: *const i32;
|
|
+ let mut _6: &[&i32; 1];
|
|
scope 1 {
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_1);
|
|
StorageLive(_2);
|
|
- StorageLive(_3);
|
|
- StorageLive(_4);
|
|
- StorageLive(_5);
|
|
- _5 = const {alloc3: *const i32};
|
|
- _4 = &(*_5);
|
|
- _3 = [move _4];
|
|
- _2 = &_3;
|
|
+ _6 = const _;
|
|
+ _2 = &(*_6);
|
|
_1 = move _2 as &[&i32] (PointerCoercion(Unsize));
|
|
- StorageDead(_4);
|
|
StorageDead(_2);
|
|
_0 = core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb1, unwind: bb2];
|
|
}
|
|
|
|
bb1: {
|
|
- StorageDead(_5);
|
|
- StorageDead(_3);
|
|
StorageDead(_1);
|
|
return;
|
|
}
|
|
|
|
bb2 (cleanup): {
|
|
resume;
|
|
}
|
|
}
|
|
-
|
|
- alloc3 (extern static: X)
|
|
|