Open
Description
Tracking issue #83518.
Doing cargo build --release
will activate -Zinline-mir
under the hood (through -Copt-level=3
). But it makes large_assignments
diagnostics unhelpful, because it can make diagnostics point to library code that the user can't change.
How to reproduce
src/main.rs
#![feature(large_assignments)]
#![deny(large_assignments)]
#![move_size_limit = "1000"]
pub fn main() {
let data = [10u8; 9999];
let cell = std::cell::UnsafeCell::new(data);
std::hint::black_box(cell);
}
# One of:
cargo +nightly build --release
cargo +nightly rustc -- -Zmir-opt-level=1 -Zinline-mir
Actual
Compiling minimal v0.1.0 (/home/martin/src/bin)
error: moving 9999 bytes
--> /home/martin/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cell.rs:2054:9
|
2054 | UnsafeCell { value }
| ^^^^^^^^^^^^^^^^^^^^ value moved from here
|
Expected
Compiling minimal v0.1.0 (/home/martin/src/bin)
error: moving 9999 bytes
--> src/main.rs:7:43
|
7 | let cell = std::cell::UnsafeCell::new(data);
| ^^^^ value moved from here
|
Remarks
The expected diagnostics is given with these commands. Note how -Zinline-mir
is deactivated in both cases:
# One of:
cargo +nightly build
cargo +nightly rustc -- -Zmir-opt-level=1
The above test case is ui-testified here.
CC E-mentor @oli-obk who maybe have an idea on how to fix this? (I currently don't.)
Metadata
Metadata
Assignees
Labels
Area: Messages for errors, warnings, and lintsArea: Lints (warnings about flaws in source code) such as unused_mut.Area: MIR inliningCategory: This is a bug.Diagnostics: Confusing error or lint that should be reworked.Lint: large_assignmentsRelevant to the compiler team, which will review and decide on the PR/issue.This issue requires a nightly compiler in some way.