]> git.lizzy.rs Git - rust.git/blob - tests/codegen/slice-init.rs
Rollup merge of #107769 - compiler-errors:pointer-like, r=eholk
[rust.git] / tests / codegen / slice-init.rs
1 // compile-flags: -C no-prepopulate-passes
2
3 #![crate_type = "lib"]
4
5 // CHECK-LABEL: @zero_sized_elem
6 #[no_mangle]
7 pub fn zero_sized_elem() {
8     // CHECK-NOT: br label %repeat_loop_header{{.*}}
9     // CHECK-NOT: call void @llvm.memset.p0
10     let x = [(); 4];
11     drop(&x);
12 }
13
14 // CHECK-LABEL: @zero_len_array
15 #[no_mangle]
16 pub fn zero_len_array() {
17     // CHECK-NOT: br label %repeat_loop_header{{.*}}
18     // CHECK-NOT: call void @llvm.memset.p0
19     let x = [4; 0];
20     drop(&x);
21 }
22
23 // CHECK-LABEL: @byte_array
24 #[no_mangle]
25 pub fn byte_array() {
26     // CHECK: call void @llvm.memset.{{.+}}({{i8\*|ptr}} {{.*}}, i8 7, i{{[0-9]+}} 4
27     // CHECK-NOT: br label %repeat_loop_header{{.*}}
28     let x = [7u8; 4];
29     drop(&x);
30 }
31
32 #[allow(dead_code)]
33 #[derive(Copy, Clone)]
34 enum Init {
35     Loop,
36     Memset,
37 }
38
39 // CHECK-LABEL: @byte_enum_array
40 #[no_mangle]
41 pub fn byte_enum_array() {
42     // CHECK: call void @llvm.memset.{{.+}}({{i8\*|ptr}} {{.*}}, i8 {{.*}}, i{{[0-9]+}} 4
43     // CHECK-NOT: br label %repeat_loop_header{{.*}}
44     let x = [Init::Memset; 4];
45     drop(&x);
46 }
47
48 // CHECK-LABEL: @zeroed_integer_array
49 #[no_mangle]
50 pub fn zeroed_integer_array() {
51     // CHECK: call void @llvm.memset.{{.+}}({{i8\*|ptr}} {{.*}}, i8 0, i{{[0-9]+}} 16
52     // CHECK-NOT: br label %repeat_loop_header{{.*}}
53     let x = [0u32; 4];
54     drop(&x);
55 }
56
57 // CHECK-LABEL: @nonzero_integer_array
58 #[no_mangle]
59 pub fn nonzero_integer_array() {
60     // CHECK: br label %repeat_loop_header{{.*}}
61     // CHECK-NOT: call void @llvm.memset.p0
62     let x = [0x1a_2b_3c_4d_u32; 4];
63     drop(&x);
64 }