mirror of
https://github.com/rust-lang/rust
synced 2024-09-22 01:42:55 +00:00
Drive-by-cleanup: Don't emit thir::ExprKind::NeverToAny
for ! -> !
This commit is contained in:
parent
f542778533
commit
140cdcbc9d
|
@ -130,6 +130,7 @@ fn apply_adjustment(
|
|||
ExprKind::Pointer { cast: PointerCast::Unsize, source: self.thir.exprs.push(expr) }
|
||||
}
|
||||
Adjust::Pointer(cast) => ExprKind::Pointer { cast, source: self.thir.exprs.push(expr) },
|
||||
Adjust::NeverToAny if adjustment.target.is_never() => return expr,
|
||||
Adjust::NeverToAny => ExprKind::NeverToAny { source: self.thir.exprs.push(expr) },
|
||||
Adjust::Deref(None) => {
|
||||
adjust_span(&mut expr);
|
||||
|
|
|
@ -6,10 +6,8 @@
|
|||
|
||||
fn main() {
|
||||
let y = &5;
|
||||
let x: ! = unsafe {
|
||||
*(y as *const _ as *const !) //~ ERROR: entering unreachable code
|
||||
};
|
||||
f(x)
|
||||
let x: ! = unsafe { *(y as *const _ as *const !) };
|
||||
f(x) //~ ERROR: entering unreachable code
|
||||
}
|
||||
|
||||
fn f(x: !) -> ! {
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
error: Undefined Behavior: entering unreachable code
|
||||
--> $DIR/never_say_never.rs:LL:CC
|
||||
|
|
||||
LL | *(y as *const _ as *const !)
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ entering unreachable code
|
||||
LL | f(x)
|
||||
| ^^^^ entering unreachable code
|
||||
|
|
||||
= help: this indicates a bug in the program: it performed an invalid operation, and caused Undefined Behavior
|
||||
= help: see https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html for further information
|
||||
|
|
|
@ -3,24 +3,20 @@
|
|||
|
||||
fn unreachable_box() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
let _2: std::boxed::Box<Never>; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:16
|
||||
let _1: std::boxed::Box<Never>; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _2 = const 1_usize as std::boxed::Box<Never> (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _2 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _1 = const 1_usize as std::boxed::Box<Never> (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _1 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ // mir::Constant
|
||||
+ // + span: no-location
|
||||
+ // + literal: Const { ty: Box<Never>, val: Value(Scalar(0x00000001)) }
|
||||
StorageLive(_3); // scope 1 at $DIR/transmute.rs:+2:5: +2:16
|
||||
unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,24 +3,20 @@
|
|||
|
||||
fn unreachable_box() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
let _2: std::boxed::Box<Never>; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:16
|
||||
let _1: std::boxed::Box<Never>; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _2 = const 1_usize as std::boxed::Box<Never> (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _2 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _1 = const 1_usize as std::boxed::Box<Never> (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _1 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ // mir::Constant
|
||||
+ // + span: no-location
|
||||
+ // + literal: Const { ty: Box<Never>, val: Value(Scalar(0x0000000000000001)) }
|
||||
StorageLive(_3); // scope 1 at $DIR/transmute.rs:+2:5: +2:16
|
||||
unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,22 +3,19 @@
|
|||
|
||||
fn unreachable_direct() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:39: +0:40
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:41: +3:2
|
||||
let _2: Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: (); // in scope 0 at $DIR/transmute.rs:+1:39: +1:41
|
||||
let mut _4: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:15
|
||||
let _1: Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _2: (); // in scope 0 at $DIR/transmute.rs:+1:39: +1:41
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:41: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_3); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_3 = (); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_2 = move _3 as Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:29: +1:42
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_2); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_2 = (); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_1 = move _2 as Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:29: +1:42
|
||||
unreachable; // scope 2 at $DIR/transmute.rs:+1:29: +1:42
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,22 +3,19 @@
|
|||
|
||||
fn unreachable_direct() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:39: +0:40
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:41: +3:2
|
||||
let _2: Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: (); // in scope 0 at $DIR/transmute.rs:+1:39: +1:41
|
||||
let mut _4: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:15
|
||||
let _1: Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _2: (); // in scope 0 at $DIR/transmute.rs:+1:39: +1:41
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:41: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_3); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_3 = (); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_2 = move _3 as Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:29: +1:42
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_2); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_2 = (); // scope 2 at $DIR/transmute.rs:+1:39: +1:41
|
||||
_1 = move _2 as Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:29: +1:42
|
||||
unreachable; // scope 2 at $DIR/transmute.rs:+1:29: +1:42
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,28 +3,24 @@
|
|||
|
||||
fn unreachable_mut() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
let _2: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
let mut _4: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:16
|
||||
let _1: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _2: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_3); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
- _3 = const 1_usize as &mut Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _3 = const {0x1 as &mut Never}; // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
- _2 = const 1_usize as &mut Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _2 = const {0x1 as &mut Never}; // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ // mir::Constant
|
||||
+ // + span: no-location
|
||||
+ // + literal: Const { ty: &mut Never, val: Value(Scalar(0x00000001)) }
|
||||
_2 = &mut (*_3); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageDead(_3); // scope 0 at $DIR/transmute.rs:+1:54: +1:55
|
||||
StorageLive(_4); // scope 1 at $DIR/transmute.rs:+2:5: +2:16
|
||||
_1 = &mut (*_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageDead(_2); // scope 0 at $DIR/transmute.rs:+1:54: +1:55
|
||||
unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,28 +3,24 @@
|
|||
|
||||
fn unreachable_mut() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
let _2: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
let mut _4: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:16
|
||||
let _1: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _2: &mut Never; // in scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_3); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
- _3 = const 1_usize as &mut Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _3 = const {0x1 as &mut Never}; // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
- _2 = const 1_usize as &mut Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ _2 = const {0x1 as &mut Never}; // scope 2 at $DIR/transmute.rs:+1:34: +1:52
|
||||
+ // mir::Constant
|
||||
+ // + span: no-location
|
||||
+ // + literal: Const { ty: &mut Never, val: Value(Scalar(0x0000000000000001)) }
|
||||
_2 = &mut (*_3); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageDead(_3); // scope 0 at $DIR/transmute.rs:+1:54: +1:55
|
||||
StorageLive(_4); // scope 1 at $DIR/transmute.rs:+2:5: +2:16
|
||||
_1 = &mut (*_2); // scope 0 at $DIR/transmute.rs:+1:34: +1:52
|
||||
StorageDead(_2); // scope 0 at $DIR/transmute.rs:+1:54: +1:55
|
||||
unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,24 +3,20 @@
|
|||
|
||||
fn unreachable_ref() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
let _2: &Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:16
|
||||
let _1: &Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _2 = const 1_usize as &Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
+ _2 = const {0x1 as &Never}; // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _1 = const 1_usize as &Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
+ _1 = const {0x1 as &Never}; // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
+ // mir::Constant
|
||||
+ // + span: no-location
|
||||
+ // + literal: Const { ty: &Never, val: Value(Scalar(0x00000001)) }
|
||||
StorageLive(_3); // scope 1 at $DIR/transmute.rs:+2:5: +2:16
|
||||
unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,24 +3,20 @@
|
|||
|
||||
fn unreachable_ref() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/transmute.rs:+0:36: +0:37
|
||||
let mut _1: !; // in scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
let _2: &Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
let mut _3: !; // in scope 0 at $DIR/transmute.rs:+2:5: +2:16
|
||||
let _1: &Never; // in scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/transmute.rs:+1:9: +1:10
|
||||
}
|
||||
scope 2 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+0:38: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _2 = const 1_usize as &Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
+ _2 = const {0x1 as &Never}; // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
StorageLive(_1); // scope 0 at $DIR/transmute.rs:+1:9: +1:10
|
||||
- _1 = const 1_usize as &Never (Transmute); // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
+ _1 = const {0x1 as &Never}; // scope 2 at $DIR/transmute.rs:+1:30: +1:48
|
||||
+ // mir::Constant
|
||||
+ // + span: no-location
|
||||
+ // + literal: Const { ty: &Never, val: Value(Scalar(0x0000000000000001)) }
|
||||
StorageLive(_3); // scope 1 at $DIR/transmute.rs:+2:5: +2:16
|
||||
unreachable; // scope 1 at $DIR/transmute.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,27 +3,13 @@
|
|||
fn f(_1: Void) -> ! {
|
||||
debug v => _1; // in scope 0 at $DIR/issue_72181_1.rs:+0:6: +0:7
|
||||
let mut _0: !; // return place in scope 0 at $DIR/issue_72181_1.rs:+0:18: +0:19
|
||||
let mut _2: !; // in scope 0 at $DIR/issue_72181_1.rs:+0:20: +2:2
|
||||
let mut _3: !; // in scope 0 at $DIR/issue_72181_1.rs:+1:5: +1:15
|
||||
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/issue_72181_1.rs:+0:20: +2:2
|
||||
StorageLive(_3); // scope 0 at $DIR/issue_72181_1.rs:+1:5: +1:15
|
||||
FakeRead(ForMatchedPlace(None), _1); // scope 0 at $DIR/issue_72181_1.rs:+1:11: +1:12
|
||||
unreachable; // scope 0 at $DIR/issue_72181_1.rs:+1:11: +1:12
|
||||
}
|
||||
|
||||
bb1: {
|
||||
unreachable; // scope 0 at $DIR/issue_72181_1.rs:+1:5: +1:15
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageDead(_3); // scope 0 at $DIR/issue_72181_1.rs:+1:14: +1:15
|
||||
unreachable; // scope 0 at $DIR/issue_72181_1.rs:+0:20: +2:2
|
||||
}
|
||||
|
||||
bb3: {
|
||||
StorageDead(_2); // scope 0 at $DIR/issue_72181_1.rs:+2:1: +2:2
|
||||
return; // scope 0 at $DIR/issue_72181_1.rs:+2:2: +2:2
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,26 +3,22 @@
|
|||
|
||||
fn transmute_to_box_uninhabited() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50
|
||||
let mut _1: !; // in scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
||||
let _2: std::boxed::Box<Never>; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
let mut _3: !; // in scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
||||
let _1: std::boxed::Box<Never>; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
- _2 = transmute::<usize, Box<Never>>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
- _1 = transmute::<usize, Box<Never>>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
- // mir::Constant
|
||||
- // + span: $DIR/lower_intrinsics.rs:70:25: 70:44
|
||||
- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> Box<Never> {transmute::<usize, Box<Never>>}, val: Value(<ZST>) }
|
||||
+ _2 = const 1_usize as std::boxed::Box<Never> (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
+ _1 = const 1_usize as std::boxed::Box<Never> (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
||||
unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,26 +3,22 @@
|
|||
|
||||
fn transmute_to_mut_uninhabited() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50
|
||||
let mut _1: !; // in scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
||||
let _2: &mut Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
let mut _3: !; // in scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
||||
let _1: &mut Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
- _2 = transmute::<usize, &mut Never>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
- _1 = transmute::<usize, &mut Never>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
- // mir::Constant
|
||||
- // + span: $DIR/lower_intrinsics.rs:64:25: 64:44
|
||||
- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> &mut Never {transmute::<usize, &mut Never>}, val: Value(<ZST>) }
|
||||
+ _2 = const 1_usize as &mut Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
+ _1 = const 1_usize as &mut Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:25: +1:52
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
||||
unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,26 +3,22 @@
|
|||
|
||||
fn transmute_to_ref_uninhabited() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:49: +0:50
|
||||
let mut _1: !; // in scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
||||
let _2: &Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
let mut _3: !; // in scope 0 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
||||
let _1: &Never; // in scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
scope 1 {
|
||||
debug x => _2; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
debug x => _1; // in scope 1 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+0:51: +3:2
|
||||
StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
- _2 = transmute::<usize, &Never>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48
|
||||
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:9: +1:10
|
||||
- _1 = transmute::<usize, &Never>(const 1_usize) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48
|
||||
- // mir::Constant
|
||||
- // + span: $DIR/lower_intrinsics.rs:58:21: 58:40
|
||||
- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(usize) -> &Never {transmute::<usize, &Never>}, val: Value(<ZST>) }
|
||||
+ _2 = const 1_usize as &Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48
|
||||
+ _1 = const 1_usize as &Never (Transmute); // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48
|
||||
+ goto -> bb1; // scope 0 at $DIR/lower_intrinsics.rs:+1:21: +1:48
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+2:5: +2:16
|
||||
unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+2:11: +2:13
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,16 +3,15 @@
|
|||
|
||||
fn unreachable() -> ! {
|
||||
let mut _0: !; // return place in scope 0 at $DIR/lower_intrinsics.rs:+0:25: +0:26
|
||||
let mut _1: !; // in scope 0 at $DIR/lower_intrinsics.rs:+0:27: +2:2
|
||||
let _2: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
let mut _3: !; // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
let _1: (); // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
let mut _2: !; // in scope 0 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
scope 1 {
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:47
|
||||
StorageLive(_3); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
- _3 = std::intrinsics::unreachable() -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
StorageLive(_1); // scope 0 at $DIR/lower_intrinsics.rs:+1:5: +1:47
|
||||
StorageLive(_2); // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
- _2 = std::intrinsics::unreachable() -> unwind unreachable; // scope 1 at $DIR/lower_intrinsics.rs:+1:14: +1:45
|
||||
- // mir::Constant
|
||||
- // + span: $DIR/lower_intrinsics.rs:31:14: 31:43
|
||||
- // + literal: Const { ty: unsafe extern "rust-intrinsic" fn() -> ! {std::intrinsics::unreachable}, val: Value(<ZST>) }
|
||||
|
|
Loading…
Reference in a new issue