40 lines
744 B
Rust
40 lines
744 B
Rust
#![feature(custom_mir, core_intrinsics)]
|
|
|
|
extern crate core;
|
|
use core::intrinsics::mir::*;
|
|
|
|
// EMIT_MIR simple_assign.simple.built.after.mir
|
|
#[custom_mir(dialect = "built")]
|
|
pub fn simple(x: i32) -> i32 {
|
|
mir!(
|
|
let temp1: i32;
|
|
let temp2: _;
|
|
|
|
{
|
|
StorageLive(temp1);
|
|
temp1 = x;
|
|
Goto(exit)
|
|
}
|
|
|
|
exit = {
|
|
temp2 = Move(temp1);
|
|
StorageDead(temp1);
|
|
RET = temp2;
|
|
Return()
|
|
}
|
|
)
|
|
}
|
|
|
|
// EMIT_MIR simple_assign.simple_ref.built.after.mir
|
|
#[custom_mir(dialect = "built")]
|
|
pub fn simple_ref(x: &mut i32) -> &mut i32 {
|
|
mir!({
|
|
RET = Move(x);
|
|
Return()
|
|
})
|
|
}
|
|
|
|
fn main() {
|
|
assert_eq!(5, simple(5));
|
|
}
|