1
Fork 0
rust/tests/ui/lint/large_assignments/move_into_fn.rs
Martin Nordholts e2979a8b8c large_assignments: Allow moves into functions
Moves into functions are typically implemented with pointer passing
rather than memcpy's at the llvm-ir level, so allow moves into
functions.
2024-02-10 16:17:00 +01:00

22 lines
632 B
Rust

// build-fail
#![feature(large_assignments)]
#![move_size_limit = "1000"]
#![deny(large_assignments)]
#![allow(unused)]
// Note: This type does not implement Copy.
struct Data([u8; 9999]);
fn main() {
// Looking at llvm-ir output, we can see a memcpy'd into Data, so we want
// the lint to trigger here.
let data = Data([100; 9999]); //~ ERROR large_assignments
// Looking at llvm-ir output, we can see that there is no memcpy involved in
// this function call. Instead, just a pointer is passed to the function. So
// the lint shall not trigger here.
take_data(data);
}
fn take_data(data: Data) {}