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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
// MIR for `unchecked_shr_signed_smaller` after PreCodegen
fn unchecked_shr_signed_smaller(_1: i16, _2: u32) -> i16 {
debug a => _1; // in scope 0 at $DIR/unchecked_shifts.rs:+0:44: +0:45
debug b => _2; // in scope 0 at $DIR/unchecked_shifts.rs:+0:52: +0:53
let mut _0: i16; // return place in scope 0 at $DIR/unchecked_shifts.rs:+0:63: +0:66
scope 1 (inlined core::num::<impl i16>::unchecked_shr) { // at $DIR/unchecked_shifts.rs:17:7: 17:23
debug self => _1; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
debug rhs => _2; // in scope 1 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
let mut _3: i16; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL
let mut _4: (u32,); // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL
let mut _5: u32; // in scope 1 at $SRC_DIR/core/src/num/mod.rs:LL:COL
scope 2 {
scope 3 (inlined core::num::<impl i16>::unchecked_shr::conv) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
debug x => _5; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL
let mut _6: std::option::Option<i16>; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL
let mut _7: std::result::Result<i16, std::num::TryFromIntError>; // in scope 3 at $SRC_DIR/core/src/num/mod.rs:LL:COL
scope 4 {
scope 5 (inlined <u32 as TryInto<i16>>::try_into) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
debug self => _5; // in scope 5 at $SRC_DIR/core/src/convert/mod.rs:LL:COL
scope 6 (inlined convert::num::<impl TryFrom<u32> for i16>::try_from) { // at $SRC_DIR/core/src/convert/mod.rs:LL:COL
debug u => _5; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
let mut _8: bool; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
let mut _9: u32; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
let mut _10: i16; // in scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
}
}
scope 7 (inlined Result::<i16, TryFromIntError>::ok) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
debug self => _7; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
let mut _11: isize; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
let _12: i16; // in scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
scope 8 {
debug x => _12; // in scope 8 at $SRC_DIR/core/src/result.rs:LL:COL
}
}
scope 9 (inlined #[track_caller] Option::<i16>::unwrap_unchecked) { // at $SRC_DIR/core/src/num/mod.rs:LL:COL
debug self => _6; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
let mut _13: &std::option::Option<i16>; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
let mut _14: isize; // in scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
scope 10 {
debug val => _3; // in scope 10 at $SRC_DIR/core/src/option.rs:LL:COL
}
scope 11 {
scope 13 (inlined unreachable_unchecked) { // at $SRC_DIR/core/src/option.rs:LL:COL
scope 14 {
scope 15 (inlined unreachable_unchecked::runtime) { // at $SRC_DIR/core/src/intrinsics.rs:LL:COL
}
}
}
}
scope 12 (inlined Option::<i16>::is_some) { // at $SRC_DIR/core/src/option.rs:LL:COL
debug self => _13; // in scope 12 at $SRC_DIR/core/src/option.rs:LL:COL
}
}
}
}
}
}
bb0: {
StorageLive(_3); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageLive(_4); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
_4 = (_2,); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageLive(_5); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
_5 = move (_4.0: u32); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageLive(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageLive(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageLive(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
StorageLive(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
_9 = const 32767_u32; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
_8 = Gt(_5, move _9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
StorageDead(_9); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
switchInt(move _8) -> [0: bb3, otherwise: bb2]; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
}
bb1: {
StorageDead(_3); // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
return; // scope 0 at $DIR/unchecked_shifts.rs:+2:2: +2:2
}
bb2: {
_7 = Result::<i16, TryFromIntError>::Err(const TryFromIntError(())); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
// mir::Constant
// + span: no-location
// + literal: Const { ty: TryFromIntError, val: Value(<ZST>) }
goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
}
bb3: {
StorageLive(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
_10 = _5 as i16 (IntToInt); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
_7 = Result::<i16, TryFromIntError>::Ok(move _10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
StorageDead(_10); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
goto -> bb4; // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
}
bb4: {
StorageDead(_8); // scope 6 at $SRC_DIR/core/src/convert/num.rs:LL:COL
StorageLive(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
_11 = discriminant(_7); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
switchInt(move _11) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
}
bb5: {
_6 = Option::<i16>::None; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
}
bb6: {
unreachable; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
}
bb7: {
_12 = move ((_7 as Ok).0: i16); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
_6 = Option::<i16>::Some(move _12); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL
goto -> bb8; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
}
bb8: {
StorageDead(_12); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageDead(_7); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageLive(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
_14 = discriminant(_6); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
switchInt(move _14) -> [1: bb9, otherwise: bb6]; // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
}
bb9: {
_3 = move ((_6 as Some).0: i16); // scope 9 at $SRC_DIR/core/src/option.rs:LL:COL
StorageDead(_13); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageDead(_6); // scope 4 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageDead(_5); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
StorageDead(_4); // scope 2 at $SRC_DIR/core/src/num/mod.rs:LL:COL
_0 = unchecked_shr::<i16>(_1, move _3) -> [return: bb1, unwind unreachable]; // scope 2 at $SRC_DIR/core/src/num/int_macros.rs:LL:COL
// mir::Constant
// + span: $SRC_DIR/core/src/num/int_macros.rs:LL:COL
// + literal: Const { ty: unsafe extern "rust-intrinsic" fn(i16, i16) -> i16 {unchecked_shr::<i16>}, val: Value(<ZST>) }
}
}
|