Don't unleash NRVO const-eval test

This commit is contained in:
Dylan MacKenzie 2020-05-17 10:23:44 -07:00
parent 2fe1170613
commit 1deaaa610c
2 changed files with 8 additions and 32 deletions

View File

@ -1,20 +1,23 @@
// compile-flags: -Zunleash-the-miri-inside-of-you
// run-pass // run-pass
// When the NRVO is applied, the return place (`_0`) gets treated like a normal local. For example,
// its address may be taken and it may be written to indirectly. Ensure that MIRI can handle this.
#![feature(const_mut_refs)]
#[inline(never)] // Try to ensure that MIR optimizations don't optimize this away.
const fn init(buf: &mut [u8; 1024]) { const fn init(buf: &mut [u8; 1024]) {
buf[33] = 3; buf[33] = 3;
buf[444] = 4; buf[444] = 4;
} }
const fn nrvo(init: fn(&mut [u8; 1024])) -> [u8; 1024] { const fn nrvo() -> [u8; 1024] {
let mut buf = [0; 1024]; let mut buf = [0; 1024];
init(&mut buf); init(&mut buf);
buf buf
} }
// When the NRVO is applied, the return place (`_0`) gets treated like a normal local. For example, const BUF: [u8; 1024] = nrvo();
// its address may be taken and it may be written to indirectly. Ensure that MIRI can handle this.
const BUF: [u8; 1024] = nrvo(init);
fn main() { fn main() {
assert_eq!(BUF[33], 3); assert_eq!(BUF[33], 3);

View File

@ -1,27 +0,0 @@
warning: skipping const checks
|
help: skipping check for `const_mut_refs` feature
--> $DIR/nrvo.rs:5:5
|
LL | buf[33] = 3;
| ^^^^^^^^^^^
help: skipping check for `const_mut_refs` feature
--> $DIR/nrvo.rs:6:5
|
LL | buf[444] = 4;
| ^^^^^^^^^^^^
help: skipping check for `const_mut_refs` feature
--> $DIR/nrvo.rs:11:10
|
LL | init(&mut buf);
| ^^^^^^^^
help: skipping check that does not even have a feature gate
--> $DIR/nrvo.rs:11:5
|
LL | init(&mut buf);
| ^^^^^^^^^^^^^^
error: `-Zunleash-the-miri-inside-of-you` may not be used to circumvent feature gates, except when testing error paths in the CTFE engine
error: aborting due to previous error; 1 warning emitted