mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-26 07:25:48 +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
|
||||
|
||||
// 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]) {
|
||||
buf[33] = 3;
|
||||
buf[444] = 4;
|
||||
}
|
||||
|
||||
const fn nrvo(init: fn(&mut [u8; 1024])) -> [u8; 1024] {
|
||||
const fn nrvo() -> [u8; 1024] {
|
||||
let mut buf = [0; 1024];
|
||||
init(&mut buf);
|
||||
buf
|
||||
}
|
||||
|
||||
// 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.
|
||||
const BUF: [u8; 1024] = nrvo(init);
|
||||
const BUF: [u8; 1024] = nrvo();
|
||||
|
||||
fn main() {
|
||||
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