summaryrefslogtreecommitdiffstats
path: root/tests/mir-opt/copy-prop/custom_move_arg.rs
blob: 29c368df82d8a0181f0b414f9b3ca7423bb71ab6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// ignore-wasm32 compiled with panic=abort by default
// unit-test: CopyProp

#![feature(custom_mir, core_intrinsics)]
#![allow(unused_assignments)]
extern crate core;
use core::intrinsics::mir::*;

struct NotCopy(bool);

// EMIT_MIR custom_move_arg.f.CopyProp.diff
#[custom_mir(dialect = "analysis", phase = "post-cleanup")]
fn f(_1: NotCopy) {
    mir!({
        let _2 = _1;
        Call(RET, bb1, opaque(Move(_1)))
    }
    bb1 = {
        let _3 = Move(_2);
        Call(RET, bb2, opaque(_3))
    }
    bb2 = {
        Return()
    })
}

#[inline(never)]
fn opaque<T>(_t: T) {}

fn main() {
    f(NotCopy(true));
    println!("hi");
}