@@ -13,8 +13,7 @@ pub struct Big([u64; 7]);
13
13
pub fn replace_big ( dst : & mut Big , src : Big ) -> Big {
14
14
// Back in 1.68, this emitted six `memcpy`s.
15
15
// `read_via_copy` in 1.69 got that down to three.
16
- // `write_via_move` it was originally down to the essential two, however
17
- // with nrvo disabled it is back at 3
16
+ // `write_via_move` and nvro get this down to the essential two.
18
17
std:: mem:: replace ( dst, src)
19
18
}
20
19
@@ -26,11 +25,9 @@ pub fn replace_big(dst: &mut Big, src: Big) -> Big {
26
25
// For a large type, we expect exactly three `memcpy`s
27
26
// CHECK-LABEL: define internal void @{{.+}}mem{{.+}}replace{{.+}}sret(%Big)
28
27
// CHECK-NOT: call void @llvm.memcpy
29
- // CHECK: call void @llvm.memcpy.{{.+}}({{i8\*|ptr}} align 8 %result , {{i8\*|ptr}} align 8 %dest, i{{.*}} 56, i1 false)
28
+ // CHECK: call void @llvm.memcpy.{{.+}}({{i8\*|ptr}} align 8 %0 , {{i8\*|ptr}} align 8 %dest, i{{.*}} 56, i1 false)
30
29
// CHECK-NOT: call void @llvm.memcpy
31
30
// CHECK: call void @llvm.memcpy.{{.+}}({{i8\*|ptr}} align 8 %dest, {{i8\*|ptr}} align 8 %src, i{{.*}} 56, i1 false)
32
31
// CHECK-NOT: call void @llvm.memcpy
33
- // CHECK: call void @llvm.memcpy.{{.+}}({{i8\*|ptr}} align 8 %0, {{i8\*|ptr}} align 8 %result, i{{.*}} 56, i1 false)
34
- // CHECK-NOT: call void @llvm.memcpy
35
32
36
33
// CHECK-NOT: call void @llvm.memcpy
0 commit comments