1
1
// min-llvm-version: 15.0
2
- // compile-flags: -C opt-level=3 -C target-cpu=native
2
+ // compile-flags: -C opt-level=3
3
3
4
4
// The below two functions ensure that both `String::new()` and `"".to_string()`
5
5
// produce the identical code.
6
6
7
7
#![ crate_type = "lib" ]
8
8
9
9
// CHECK-LABEL: @string_new = unnamed_addr alias void (ptr), ptr @empty_to_string
10
- // CHECK: define void @empty_to_string
11
10
#[ no_mangle]
12
11
pub fn string_new ( ) -> String {
13
12
String :: new ( )
14
13
}
15
14
15
+ // CHECK-LABEL: define void @empty_to_string
16
16
#[ no_mangle]
17
17
pub fn empty_to_string ( ) -> String {
18
18
// CHECK-NOT: load i8
19
- // CHECK: store i64
19
+ // CHECK: store i{{32|64}}
20
20
// CHECK-NEXT: getelementptr
21
21
// CHECK-NEXT: store ptr
22
22
// CHECK-NEXT: getelementptr
23
- // CHECK-NOT: store i8
24
- // CHECK-NEXT: store i64
23
+ // CHECK-NEXT: store i{{32|64}}
25
24
// CHECK-NEXT: ret void
26
25
"" . to_string ( )
27
26
}
@@ -32,25 +31,25 @@ pub fn empty_to_string() -> String {
32
31
// CHECK-LABEL: @empty_vec
33
32
#[ no_mangle]
34
33
pub fn empty_vec ( ) -> Vec < u8 > {
35
- // CHECK: store i64
34
+ // CHECK: store i{{32|64}}
36
35
// CHECK-NOT: load i8
37
36
// CHECK-NEXT: getelementptr
38
37
// CHECK-NEXT: store ptr
39
38
// CHECK-NEXT: getelementptr
40
- // CHECK-NEXT: store i64
39
+ // CHECK-NEXT: store i{{32|64}}
41
40
// CHECK-NEXT: ret void
42
41
vec ! [ ]
43
42
}
44
43
45
44
// CHECK-LABEL: @empty_vec_clone
46
45
#[ no_mangle]
47
46
pub fn empty_vec_clone ( ) -> Vec < u8 > {
48
- // CHECK: store i64
47
+ // CHECK: store i{{32|64}}
49
48
// CHECK-NOT: load i8
50
49
// CHECK-NEXT: getelementptr
51
50
// CHECK-NEXT: store ptr
52
51
// CHECK-NEXT: getelementptr
53
- // CHECK-NEXT: store i64
52
+ // CHECK-NEXT: store i{{32|64}}
54
53
// CHECK-NEXT: ret void
55
54
vec ! [ ] . clone ( )
56
55
}
0 commit comments