]>
git.proxmox.com Git - rustc.git/blob - tests/codegen/issue-86106.rs
1 // min-llvm-version: 15.0
2 // compile-flags: -C opt-level=3 -Z merge-functions=disabled
4 // The below two functions ensure that both `String::new()` and `"".to_string()`
5 // produce the identical code.
9 // CHECK-LABEL: define void @string_new
11 pub fn string_new() -> String
{
13 // CHECK: store i{{32|64}}
14 // CHECK-NEXT: getelementptr
15 // CHECK-NEXT: store ptr
16 // CHECK-NEXT: getelementptr
17 // CHECK-NEXT: store i{{32|64}}
18 // CHECK-NEXT: ret void
22 // CHECK-LABEL: define void @empty_to_string
24 pub fn empty_to_string() -> String
{
26 // CHECK: store i{{32|64}}
27 // CHECK-NEXT: getelementptr
28 // CHECK-NEXT: store ptr
29 // CHECK-NEXT: getelementptr
30 // CHECK-NEXT: store i{{32|64}}
31 // CHECK-NEXT: ret void
35 // The below two functions ensure that both `vec![]` and `vec![].clone()`
36 // produce the identical code.
38 // CHECK-LABEL: @empty_vec
40 pub fn empty_vec() -> Vec
<u8> {
41 // CHECK: store i{{32|64}}
43 // CHECK-NEXT: getelementptr
44 // CHECK-NEXT: store ptr
45 // CHECK-NEXT: getelementptr
46 // CHECK-NEXT: store i{{32|64}}
47 // CHECK-NEXT: ret void
51 // CHECK-LABEL: @empty_vec_clone
53 pub fn empty_vec_clone() -> Vec
<u8> {
54 // CHECK: store i{{32|64}}
56 // CHECK-NEXT: getelementptr
57 // CHECK-NEXT: store ptr
58 // CHECK-NEXT: getelementptr
59 // CHECK-NEXT: store i{{32|64}}
60 // CHECK-NEXT: ret void