| //@ test-mir-pass: InstSimplify-after-simplifycfg | |
| #![crate_type = "lib"] | |
| #![feature(core_intrinsics)] | |
| #![feature(custom_mir)] | |
| // Custom MIR so we can get an argument that's not just a local directly | |
| use std::intrinsics::mir::*; | |
| use std::intrinsics::raw_eq; | |
| // EMIT_MIR raw_eq.inner_array.InstSimplify-after-simplifycfg.diff | |
| #[custom_mir(dialect = "runtime")] | |
| pub fn inner_array(a: &&[i32; 2], b: &&[i32; 2]) -> bool { | |
| // CHECK-LABEL: fn inner_array(_1: &&[i32; 2], _2: &&[i32; 2]) -> bool | |
| // CHECK: [[AREF:_.+]] = copy (*_1); | |
| // CHECK: [[AINT:_.+]] = copy (*[[AREF]]) as u64 (Transmute); | |
| // CHECK: [[BREF:_.+]] = copy (*_2); | |
| // CHECK: [[BINT:_.+]] = copy (*[[BREF]]) as u64 (Transmute); | |
| // CHECK: _0 = Eq(move [[AINT]], move [[BINT]]); | |
| mir! { | |
| { | |
| Call(RET = raw_eq(*a, *b), ReturnTo(ret), UnwindUnreachable()) | |
| } | |
| ret = { | |
| Return() | |
| } | |
| } | |
| } |