/
const-promotion-extern-static.rs
73 lines (68 loc) · 1.78 KB
/
const-promotion-extern-static.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
extern "C" {
static X: i32;
}
static Y: i32 = 42;
static mut BAR: *const &'static i32 = [&Y].as_ptr();
static mut FOO: *const &'static i32 = [unsafe { &X }].as_ptr();
fn main() {}
// END RUST SOURCE
// START rustc.FOO.PromoteTemps.before.mir
// bb0: {
// ...
// _5 = const Scalar(alloc1+0) : &i32;
// _4 = &(*_5);
// _3 = [move _4];
// _2 = &_3;
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
// }
// ...
// bb2: {
// StorageDead(_5);
// StorageDead(_3);
// return;
// }
// END rustc.FOO.PromoteTemps.before.mir
// START rustc.BAR.PromoteTemps.before.mir
// bb0: {
// ...
// _5 = const Scalar(alloc0+0) : &i32;
// _4 = &(*_5);
// _3 = [move _4];
// _2 = &_3;
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
// }
// ...
// bb2: {
// StorageDead(_5);
// StorageDead(_3);
// return;
// }
// END rustc.BAR.PromoteTemps.before.mir
// START rustc.BAR.PromoteTemps.after.mir
// bb0: {
// ...
// _6 = const BAR::promoted[0];
// _2 = &(*_6);
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
// }
// ...
// bb2: {
// return;
// }
// END rustc.BAR.PromoteTemps.after.mir
// START rustc.FOO.PromoteTemps.after.mir
// bb0: {
// ...
// _6 = const FOO::promoted[0];
// _2 = &(*_6);
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
// }
// ...
// bb2: {
// return;
// }
// END rustc.FOO.PromoteTemps.after.mir