]> git.lizzy.rs Git - rust.git/blob - tests/codegen/issue-15953.rs
Rollup merge of #107700 - jyn514:tools-builder, r=Mark-Simulacrum
[rust.git] / tests / codegen / issue-15953.rs
1 // Test that llvm generates `memcpy` for moving a value
2 // inside a function and moving an argument.
3
4 struct Foo {
5     x: Vec<i32>,
6 }
7
8 #[inline(never)]
9 #[no_mangle]
10 // CHECK: memcpy
11 fn interior(x: Vec<i32>) -> Vec<i32> {
12     let Foo { x } = Foo { x: x };
13     x
14 }
15
16 #[inline(never)]
17 #[no_mangle]
18 // CHECK: memcpy
19 fn exterior(x: Vec<i32>) -> Vec<i32> {
20     x
21 }
22
23 fn main() {
24     let x = interior(Vec::new());
25     println!("{:?}", x);
26
27     let x = exterior(Vec::new());
28     println!("{:?}", x);
29 }