mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-26 15:36:39 +00:00
Don't unleash NRVO const-eval test
This commit is contained in:
parent
2fe1170613
commit
1deaaa610c
@ -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);
|
@ -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
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user