8
8
#![ crate_type = "lib" ]
9
9
#![ feature( core_intrinsics) ]
10
10
11
- use std:: intrinsics:: typed_swap ;
11
+ use std:: intrinsics:: typed_swap_nonoverlapping ;
12
12
13
13
// CHECK-LABEL: @swap_unit(
14
14
#[ no_mangle]
15
15
pub unsafe fn swap_unit ( x : & mut ( ) , y : & mut ( ) ) {
16
16
// CHECK: start
17
17
// CHECK-NEXT: ret void
18
- typed_swap ( x, y)
18
+ typed_swap_nonoverlapping ( x, y)
19
19
}
20
20
21
21
// CHECK-LABEL: @swap_i32(
@@ -32,7 +32,7 @@ pub unsafe fn swap_i32(x: &mut i32, y: &mut i32) {
32
32
// OPT3: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %x, ptr align 4 %y, i64 4, i1 false)
33
33
// CHECK: store i32 %[[TEMP]], ptr %y, align 4
34
34
// CHECK: ret void
35
- typed_swap ( x, y)
35
+ typed_swap_nonoverlapping ( x, y)
36
36
}
37
37
38
38
// CHECK-LABEL: @swap_pair(
@@ -47,7 +47,7 @@ pub unsafe fn swap_pair(x: &mut (i32, u32), y: &mut (i32, u32)) {
47
47
// CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %x, ptr align 4 %y, i64 8, i1 false)
48
48
// CHECK: store i32
49
49
// CHECK: store i32
50
- typed_swap ( x, y)
50
+ typed_swap_nonoverlapping ( x, y)
51
51
}
52
52
53
53
// CHECK-LABEL: @swap_str(
@@ -63,7 +63,7 @@ pub unsafe fn swap_str<'a>(x: &mut &'a str, y: &mut &'a str) {
63
63
// CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %x, ptr align 8 %y, i64 16, i1 false)
64
64
// CHECK: store ptr
65
65
// CHECK: store i64
66
- typed_swap ( x, y)
66
+ typed_swap_nonoverlapping ( x, y)
67
67
}
68
68
69
69
// OPT0-LABEL: @swap_string(
@@ -73,5 +73,5 @@ pub unsafe fn swap_string(x: &mut String, y: &mut String) {
73
73
// OPT0: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %[[TEMP]], ptr align 8 %x, i64 24, i1 false)
74
74
// OPT0: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %x, ptr align 8 %y, i64 24, i1 false)
75
75
// OPT0: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %y, ptr align 8 %[[TEMP]], i64 24, i1 false)
76
- typed_swap ( x, y)
76
+ typed_swap_nonoverlapping ( x, y)
77
77
}
0 commit comments