#![feature(custom_mir, core_intrinsics)]
#![allow(internal_features)]
use std::intrinsics::mir::*;
use std::mem::MaybeUninit;
#[custom_mir(dialect = "runtime")]
pub fn main() {
mir! {
let _1: (usize, MaybeUninit<usize>);
let _2: MaybeUninit<usize>;
{
_1.0 = 0;
_2 = _1.1;
Return()
}
}
}
rustc --crate-type=lib a.rs -Zunpretty=mir -Zmir-opt-level=0 -Zmir-enable-passes=+ScalarReplacementOfAggregates
// WARNING: This output format is intended for human consumers only
// and is subject to change without notice. Knock yourself out.
// HINT: See also -Z dump-mir for MIR at specific points during compilation.
fn main() -> () {
let mut _0: ();
let mut _1: (usize, std::mem::MaybeUninit<usize>);
let mut _2: std::mem::MaybeUninit<usize>;
let mut _3: usize;
let mut _4: std::mem::MaybeUninit<usize>;
bb0: {
_3 = const 0_usize;
_2 = copy _4;
return;
}
}
cc @Amanieu
rustc --crate-type=lib a.rs -Zunpretty=mir -Zmir-opt-level=0 -Zmir-enable-passes=+ScalarReplacementOfAggregatescc @Amanieu