]> git.lizzy.rs Git - rust.git/blob - src/test/codegen/external-no-mangle-statics.rs
Suggest defining type parameter when appropriate
[rust.git] / src / test / codegen / external-no-mangle-statics.rs
1 // ignore-emscripten default visibility is hidden
2 // compile-flags: -O
3 // `#[no_mangle]`d static variables always have external linkage, i.e., no `internal` in their
4 // definitions
5
6 #![crate_type = "lib"]
7 #![no_std]
8
9 // CHECK: @A = local_unnamed_addr constant
10 #[no_mangle]
11 static A: u8 = 0;
12
13 // CHECK: @B = local_unnamed_addr global
14 #[no_mangle]
15 static mut B: u8 = 0;
16
17 // CHECK: @C = local_unnamed_addr constant
18 #[no_mangle]
19 pub static C: u8 = 0;
20
21 // CHECK: @D = local_unnamed_addr global
22 #[no_mangle]
23 pub static mut D: u8 = 0;
24
25 mod private {
26     // CHECK: @E = local_unnamed_addr constant
27     #[no_mangle]
28     static E: u8 = 0;
29
30     // CHECK: @F = local_unnamed_addr global
31     #[no_mangle]
32     static mut F: u8 = 0;
33
34     // CHECK: @G = local_unnamed_addr constant
35     #[no_mangle]
36     pub static G: u8 = 0;
37
38     // CHECK: @H = local_unnamed_addr global
39     #[no_mangle]
40     pub static mut H: u8 = 0;
41 }
42
43 const HIDDEN: () = {
44     // CHECK: @I = local_unnamed_addr constant
45     #[no_mangle]
46     static I: u8 = 0;
47
48     // CHECK: @J = local_unnamed_addr global
49     #[no_mangle]
50     static mut J: u8 = 0;
51
52     // CHECK: @K = local_unnamed_addr constant
53     #[no_mangle]
54     pub static K: u8 = 0;
55
56     // CHECK: @L = local_unnamed_addr global
57     #[no_mangle]
58     pub static mut L: u8 = 0;
59 };
60
61 // The surrounding item should not accidentally become external
62 fn x() {
63     // CHECK: @M = local_unnamed_addr constant
64     #[no_mangle]
65     static M: fn() = x;
66
67     // CHECK: @N = local_unnamed_addr global
68     #[no_mangle]
69     static mut N: u8 = 0;
70
71     // CHECK: @O = local_unnamed_addr constant
72     #[no_mangle]
73     pub static O: u8 = 0;
74
75     // CHECK: @P = local_unnamed_addr global
76     #[no_mangle]
77     pub static mut P: u8 = 0;
78 }
79 // CHECK-LABEL: ; external_no_mangle_statics::x
80 // CHECK-NEXT: ; Function Attrs:
81 // CHECK-NEXT: define internal