Stop deaggregating enums in MIR.
This commit is contained in:
parent
b62a9da0c8
commit
6a0b218161
41 changed files with 166 additions and 440 deletions
|
@ -8,10 +8,10 @@ use rustc_middle::mir::interpret::Scalar;
|
|||
use rustc_middle::mir::visit::NonUseContext::VarDebugInfo;
|
||||
use rustc_middle::mir::visit::{PlaceContext, Visitor};
|
||||
use rustc_middle::mir::{
|
||||
traversal, AggregateKind, BasicBlock, BinOp, Body, BorrowKind, CastKind, CopyNonOverlapping,
|
||||
Local, Location, MirPass, MirPhase, NonDivergingIntrinsic, Operand, Place, PlaceElem, PlaceRef,
|
||||
ProjectionElem, RetagKind, RuntimePhase, Rvalue, SourceScope, Statement, StatementKind,
|
||||
Terminator, TerminatorKind, UnOp, START_BLOCK,
|
||||
traversal, BasicBlock, BinOp, Body, BorrowKind, CastKind, CopyNonOverlapping, Local, Location,
|
||||
MirPass, MirPhase, NonDivergingIntrinsic, Operand, Place, PlaceElem, PlaceRef, ProjectionElem,
|
||||
RetagKind, RuntimePhase, Rvalue, SourceScope, Statement, StatementKind, Terminator,
|
||||
TerminatorKind, UnOp, START_BLOCK,
|
||||
};
|
||||
use rustc_middle::ty::{self, InstanceDef, ParamEnv, Ty, TyCtxt};
|
||||
use rustc_mir_dataflow::impls::MaybeStorageLive;
|
||||
|
@ -423,19 +423,7 @@ impl<'a, 'tcx> Visitor<'tcx> for TypeChecker<'a, 'tcx> {
|
|||
};
|
||||
}
|
||||
match rvalue {
|
||||
Rvalue::Use(_) | Rvalue::CopyForDeref(_) => {}
|
||||
Rvalue::Aggregate(agg_kind, _) => {
|
||||
let disallowed = match **agg_kind {
|
||||
AggregateKind::Array(..) => false,
|
||||
_ => self.mir_phase >= MirPhase::Runtime(RuntimePhase::PostCleanup),
|
||||
};
|
||||
if disallowed {
|
||||
self.fail(
|
||||
location,
|
||||
format!("{:?} have been lowered to field assignments", rvalue),
|
||||
)
|
||||
}
|
||||
}
|
||||
Rvalue::Use(_) | Rvalue::CopyForDeref(_) | Rvalue::Aggregate(..) => {}
|
||||
Rvalue::Ref(_, BorrowKind::Shallow, _) => {
|
||||
if self.mir_phase >= MirPhase::Runtime(RuntimePhase::Initial) {
|
||||
self.fail(
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::util::expand_aggregate;
|
||||
use crate::MirPass;
|
||||
use rustc_hir::def::DefKind;
|
||||
use rustc_middle::mir::*;
|
||||
use rustc_middle::ty::TyCtxt;
|
||||
|
||||
|
@ -11,16 +12,19 @@ impl<'tcx> MirPass<'tcx> for Deaggregator {
|
|||
for bb in basic_blocks {
|
||||
bb.expand_statements(|stmt| {
|
||||
// FIXME(eddyb) don't match twice on `stmt.kind` (post-NLL).
|
||||
match stmt.kind {
|
||||
// FIXME(#48193) Deaggregate arrays when it's cheaper to do so.
|
||||
StatementKind::Assign(box (
|
||||
_,
|
||||
Rvalue::Aggregate(box AggregateKind::Array(_), _),
|
||||
)) => {
|
||||
return None;
|
||||
}
|
||||
StatementKind::Assign(box (_, Rvalue::Aggregate(_, _))) => {}
|
||||
_ => return None,
|
||||
let StatementKind::Assign(box (
|
||||
_, Rvalue::Aggregate(box ref kind, _))
|
||||
) = stmt.kind else { return None };
|
||||
|
||||
// FIXME(#48193) Deaggregate arrays when it's cheaper to do so.
|
||||
if let AggregateKind::Array(_) = kind {
|
||||
return None;
|
||||
}
|
||||
|
||||
if let AggregateKind::Adt(def_id, ..) = kind
|
||||
&& matches!(tcx.def_kind(def_id), DefKind::Enum)
|
||||
{
|
||||
return None;
|
||||
}
|
||||
|
||||
let stmt = stmt.replace_nop();
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
|
||||
use crate::deref_separator::deref_finder;
|
||||
use crate::simplify;
|
||||
use crate::util::expand_aggregate;
|
||||
use crate::MirPass;
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||
use rustc_errors::pluralize;
|
||||
|
@ -272,31 +271,26 @@ impl<'tcx> TransformVisitor<'tcx> {
|
|||
assert_eq!(self.state_adt_ref.variant(idx).fields.len(), 0);
|
||||
|
||||
// FIXME(swatinem): assert that `val` is indeed unit?
|
||||
statements.extend(expand_aggregate(
|
||||
Place::return_place(),
|
||||
std::iter::empty(),
|
||||
kind,
|
||||
statements.push(Statement {
|
||||
kind: StatementKind::Assign(Box::new((
|
||||
Place::return_place(),
|
||||
Rvalue::Aggregate(Box::new(kind), vec![]),
|
||||
))),
|
||||
source_info,
|
||||
self.tcx,
|
||||
));
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// else: `Poll::Ready(x)`, `GeneratorState::Yielded(x)` or `GeneratorState::Complete(x)`
|
||||
assert_eq!(self.state_adt_ref.variant(idx).fields.len(), 1);
|
||||
|
||||
let ty = self
|
||||
.tcx
|
||||
.bound_type_of(self.state_adt_ref.variant(idx).fields[0].did)
|
||||
.subst(self.tcx, self.state_substs);
|
||||
|
||||
statements.extend(expand_aggregate(
|
||||
Place::return_place(),
|
||||
std::iter::once((val, ty)),
|
||||
kind,
|
||||
statements.push(Statement {
|
||||
kind: StatementKind::Assign(Box::new((
|
||||
Place::return_place(),
|
||||
Rvalue::Aggregate(Box::new(kind), vec![val]),
|
||||
))),
|
||||
source_info,
|
||||
self.tcx,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
// Create a Place referencing a generator struct field
|
||||
|
|
|
@ -15,7 +15,6 @@ use rustc_target::spec::abi::Abi;
|
|||
use std::fmt;
|
||||
use std::iter;
|
||||
|
||||
use crate::util::expand_aggregate;
|
||||
use crate::{
|
||||
abort_unwinding_calls, add_call_guards, add_moves_for_packed_drops, deref_separator,
|
||||
pass_manager as pm, remove_noop_landing_pads, simplify,
|
||||
|
@ -831,19 +830,23 @@ pub fn build_adt_ctor(tcx: TyCtxt<'_>, ctor_id: DefId) -> Body<'_> {
|
|||
// return;
|
||||
debug!("build_ctor: variant_index={:?}", variant_index);
|
||||
|
||||
let statements = expand_aggregate(
|
||||
Place::return_place(),
|
||||
adt_def.variant(variant_index).fields.iter().enumerate().map(|(idx, field_def)| {
|
||||
(Operand::Move(Place::from(Local::new(idx + 1))), field_def.ty(tcx, substs))
|
||||
}),
|
||||
AggregateKind::Adt(adt_def.did(), variant_index, substs, None, None),
|
||||
let kind = AggregateKind::Adt(adt_def.did(), variant_index, substs, None, None);
|
||||
let variant = adt_def.variant(variant_index);
|
||||
let statement = Statement {
|
||||
kind: StatementKind::Assign(Box::new((
|
||||
Place::return_place(),
|
||||
Rvalue::Aggregate(
|
||||
Box::new(kind),
|
||||
(0..variant.fields.len())
|
||||
.map(|idx| Operand::Move(Place::from(Local::new(idx + 1))))
|
||||
.collect(),
|
||||
),
|
||||
))),
|
||||
source_info,
|
||||
tcx,
|
||||
)
|
||||
.collect();
|
||||
};
|
||||
|
||||
let start_block = BasicBlockData {
|
||||
statements,
|
||||
statements: vec![statement],
|
||||
terminator: Some(Terminator { source_info, kind: TerminatorKind::Return }),
|
||||
is_cleanup: false,
|
||||
};
|
||||
|
|
|
@ -24,9 +24,7 @@ fn a::{closure#0}(_1: Pin<&mut [async fn body@$DIR/async_await.rs:11:14: 11:16]>
|
|||
bb1: {
|
||||
_4 = move _2; // scope 0 at $DIR/async_await.rs:+0:14: +0:16
|
||||
_3 = const (); // scope 0 at $DIR/async_await.rs:+0:14: +0:16
|
||||
Deinit(_0); // scope 0 at $DIR/async_await.rs:+0:16: +0:16
|
||||
((_0 as Ready).0: ()) = move _3; // scope 0 at $DIR/async_await.rs:+0:16: +0:16
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/async_await.rs:+0:16: +0:16
|
||||
_0 = Poll::<()>::Ready(move _3); // scope 0 at $DIR/async_await.rs:+0:16: +0:16
|
||||
discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:11:14: 11:16]))) = 1; // scope 0 at $DIR/async_await.rs:+0:16: +0:16
|
||||
return; // scope 0 at $DIR/async_await.rs:+0:16: +0:16
|
||||
}
|
||||
|
|
|
@ -167,8 +167,7 @@ fn b::{closure#0}(_1: Pin<&mut [async fn body@$DIR/async_await.rs:14:18: 17:2]>,
|
|||
StorageLive(_19); // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
StorageLive(_20); // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
_20 = (); // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
Deinit(_0); // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
discriminant(_0) = 1; // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
_0 = Poll::<()>::Pending; // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 3; // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
return; // scope 1 at $DIR/async_await.rs:+1:8: +1:14
|
||||
}
|
||||
|
@ -276,8 +275,7 @@ fn b::{closure#0}(_1: Pin<&mut [async fn body@$DIR/async_await.rs:14:18: 17:2]>,
|
|||
StorageLive(_35); // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
StorageLive(_36); // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
_36 = (); // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
Deinit(_0); // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
discriminant(_0) = 1; // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
_0 = Poll::<()>::Pending; // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 4; // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
return; // scope 4 at $DIR/async_await.rs:+2:8: +2:14
|
||||
}
|
||||
|
@ -317,9 +315,7 @@ fn b::{closure#0}(_1: Pin<&mut [async fn body@$DIR/async_await.rs:14:18: 17:2]>,
|
|||
}
|
||||
|
||||
bb26: {
|
||||
Deinit(_0); // scope 0 at $DIR/async_await.rs:+3:2: +3:2
|
||||
((_0 as Ready).0: ()) = move _37; // scope 0 at $DIR/async_await.rs:+3:2: +3:2
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/async_await.rs:+3:2: +3:2
|
||||
_0 = Poll::<()>::Ready(move _37); // scope 0 at $DIR/async_await.rs:+3:2: +3:2
|
||||
discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:14:18: 17:2]))) = 1; // scope 0 at $DIR/async_await.rs:+3:2: +3:2
|
||||
return; // scope 0 at $DIR/async_await.rs:+3:2: +3:2
|
||||
}
|
||||
|
|
|
@ -79,9 +79,7 @@
|
|||
_15 = const false; // scope 5 at $DIR/const_debuginfo.rs:+8:13: +8:34
|
||||
_16 = const 123_u32; // scope 5 at $DIR/const_debuginfo.rs:+8:13: +8:34
|
||||
StorageLive(_10); // scope 6 at $DIR/const_debuginfo.rs:+10:9: +10:10
|
||||
Deinit(_10); // scope 6 at $DIR/const_debuginfo.rs:+10:13: +10:24
|
||||
((_10 as Some).0: u16) = const 99_u16; // scope 6 at $DIR/const_debuginfo.rs:+10:13: +10:24
|
||||
discriminant(_10) = 1; // scope 6 at $DIR/const_debuginfo.rs:+10:13: +10:24
|
||||
_10 = Option::<u16>::Some(const 99_u16); // scope 6 at $DIR/const_debuginfo.rs:+10:13: +10:24
|
||||
StorageLive(_17); // scope 7 at $DIR/const_debuginfo.rs:+12:9: +12:10
|
||||
StorageLive(_18); // scope 7 at $DIR/const_debuginfo.rs:+12:9: +12:10
|
||||
Deinit(_17); // scope 7 at $DIR/const_debuginfo.rs:+12:13: +12:35
|
||||
|
|
|
@ -17,17 +17,20 @@
|
|||
StorageLive(_1); // scope 0 at $DIR/discriminant.rs:+1:9: +1:10
|
||||
StorageLive(_2); // scope 0 at $DIR/discriminant.rs:+1:13: +1:64
|
||||
StorageLive(_3); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
Deinit(_3); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
((_3 as Some).0: bool) = const true; // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
discriminant(_3) = 1; // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
- _3 = Option::<bool>::Some(const true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
- _4 = discriminant(_3); // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
- switchInt(move _4) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
+ _3 = const Option::<bool>::Some(true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/discriminant.rs:12:34: 12:44
|
||||
+ // + literal: Const { ty: Option<bool>, val: Value(Scalar(0x01)) }
|
||||
+ _4 = const 1_isize; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
+ switchInt(const 1_isize) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
}
|
||||
|
||||
bb1: {
|
||||
switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
- switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
+ switchInt(const true) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
}
|
||||
|
||||
bb2: {
|
||||
|
|
|
@ -17,17 +17,20 @@
|
|||
StorageLive(_1); // scope 0 at $DIR/discriminant.rs:+1:9: +1:10
|
||||
StorageLive(_2); // scope 0 at $DIR/discriminant.rs:+1:13: +1:64
|
||||
StorageLive(_3); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
Deinit(_3); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
((_3 as Some).0: bool) = const true; // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
discriminant(_3) = 1; // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
- _3 = Option::<bool>::Some(const true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
- _4 = discriminant(_3); // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
- switchInt(move _4) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
+ _3 = const Option::<bool>::Some(true); // scope 2 at $DIR/discriminant.rs:+1:34: +1:44
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/discriminant.rs:12:34: 12:44
|
||||
+ // + literal: Const { ty: Option<bool>, val: Value(Scalar(0x01)) }
|
||||
+ _4 = const 1_isize; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
+ switchInt(const 1_isize) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
}
|
||||
|
||||
bb1: {
|
||||
switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
- switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
+ switchInt(const true) -> [0: bb3, otherwise: bb2]; // scope 2 at $DIR/discriminant.rs:+1:21: +1:31
|
||||
}
|
||||
|
||||
bb2: {
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
let _5: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:32: +2:33
|
||||
let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34
|
||||
let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34
|
||||
let mut _9: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
let mut _9: Point; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
scope 1 {
|
||||
debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10
|
||||
let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10
|
||||
|
@ -52,9 +52,8 @@
|
|||
StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35
|
||||
StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10
|
||||
StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
Deinit(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
_9 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
- _8 = _9; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38
|
||||
_9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38
|
||||
+ _8 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38
|
||||
StorageDead(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39
|
||||
StorageDead(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+4:1: +4:2
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
let mut _6: usize; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34
|
||||
let mut _7: bool; // in scope 0 at $DIR/optimizes_into_variable.rs:+2:13: +2:34
|
||||
let mut _9: Point; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ let mut _10: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ let mut _11: u32; // in scope 0 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
scope 1 {
|
||||
debug x => _1; // in scope 1 at $DIR/optimizes_into_variable.rs:+1:9: +1:10
|
||||
let _3: i32; // in scope 1 at $DIR/optimizes_into_variable.rs:+2:9: +2:10
|
||||
|
@ -47,21 +45,10 @@
|
|||
StorageDead(_5); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35
|
||||
StorageDead(_4); // scope 1 at $DIR/optimizes_into_variable.rs:+2:34: +2:35
|
||||
StorageLive(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+3:9: +3:10
|
||||
- StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
- Deinit(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
- (_9.0: u32) = const 12_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
- (_9.1: u32) = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
- _8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38
|
||||
- StorageDead(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39
|
||||
+ StorageLive(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ StorageLive(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ Deinit(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ Deinit(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ _10 = const 12_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ _11 = const 42_u32; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
+ _8 = _11; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38
|
||||
+ StorageDead(_10); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39
|
||||
+ StorageDead(_11); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39
|
||||
StorageLive(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
_9 = Point { x: const 12_u32, y: const 42_u32 }; // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:36
|
||||
_8 = (_9.1: u32); // scope 2 at $DIR/optimizes_into_variable.rs:+3:13: +3:38
|
||||
StorageDead(_9); // scope 2 at $DIR/optimizes_into_variable.rs:+3:38: +3:39
|
||||
nop; // scope 0 at $DIR/optimizes_into_variable.rs:+0:11: +4:2
|
||||
StorageDead(_8); // scope 2 at $DIR/optimizes_into_variable.rs:+4:1: +4:2
|
||||
StorageDead(_3); // scope 1 at $DIR/optimizes_into_variable.rs:+4:1: +4:2
|
||||
|
|
|
@ -23,9 +23,7 @@
|
|||
|
||||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/enum.rs:+1:9: +1:10
|
||||
Deinit(_1); // scope 0 at $DIR/enum.rs:+1:13: +1:21
|
||||
((_1 as V1).0: i32) = const 0_i32; // scope 0 at $DIR/enum.rs:+1:13: +1:21
|
||||
discriminant(_1) = 0; // scope 0 at $DIR/enum.rs:+1:13: +1:21
|
||||
_1 = E::V1(const 0_i32); // scope 0 at $DIR/enum.rs:+1:13: +1:21
|
||||
StorageLive(_2); // scope 1 at $DIR/enum.rs:+2:9: +2:10
|
||||
_3 = discriminant(_1); // scope 1 at $DIR/enum.rs:+2:19: +2:20
|
||||
switchInt(move _3) -> [0: bb3, 1: bb1, otherwise: bb2]; // scope 1 at $DIR/enum.rs:+2:13: +2:20
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
- // MIR for `bar` before Deaggregator
|
||||
+ // MIR for `bar` after Deaggregator
|
||||
|
||||
fn bar(_1: usize) -> Baz {
|
||||
debug a => _1; // in scope 0 at $DIR/deaggregator_test_enum.rs:+0:8: +0:9
|
||||
let mut _0: Baz; // return place in scope 0 at $DIR/deaggregator_test_enum.rs:+0:21: +0:24
|
||||
let mut _2: usize; // in scope 0 at $DIR/deaggregator_test_enum.rs:+1:19: +1:20
|
||||
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/deaggregator_test_enum.rs:+1:19: +1:20
|
||||
_2 = _1; // scope 0 at $DIR/deaggregator_test_enum.rs:+1:19: +1:20
|
||||
- _0 = Baz::Foo { x: move _2 }; // scope 0 at $DIR/deaggregator_test_enum.rs:+1:5: +1:22
|
||||
+ Deinit(_0); // scope 0 at $DIR/deaggregator_test_enum.rs:+1:5: +1:22
|
||||
+ ((_0 as Foo).0: usize) = move _2; // scope 0 at $DIR/deaggregator_test_enum.rs:+1:5: +1:22
|
||||
+ discriminant(_0) = 1; // scope 0 at $DIR/deaggregator_test_enum.rs:+1:5: +1:22
|
||||
StorageDead(_2); // scope 0 at $DIR/deaggregator_test_enum.rs:+1:21: +1:22
|
||||
return; // scope 0 at $DIR/deaggregator_test_enum.rs:+2:2: +2:2
|
||||
}
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
// unit-test: Deaggregator
|
||||
|
||||
enum Baz {
|
||||
Empty,
|
||||
Foo { x: usize },
|
||||
}
|
||||
|
||||
// EMIT_MIR deaggregator_test_enum.bar.Deaggregator.diff
|
||||
fn bar(a: usize) -> Baz {
|
||||
Baz::Foo { x: a }
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let x = bar(10);
|
||||
match x {
|
||||
Baz::Empty => println!("empty"),
|
||||
Baz::Foo { x } => println!("{}", x),
|
||||
};
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
// unit-test: Deaggregator
|
||||
// Test that deaggregate fires in more than one basic block
|
||||
|
||||
enum Foo {
|
||||
A(i32),
|
||||
B(i32),
|
||||
}
|
||||
|
||||
// EMIT_MIR deaggregator_test_enum_2.test1.Deaggregator.diff
|
||||
fn test1(x: bool, y: i32) -> Foo {
|
||||
if x {
|
||||
Foo::A(y)
|
||||
} else {
|
||||
Foo::B(y)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Make sure the function actually gets instantiated.
|
||||
test1(false, 0);
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
- // MIR for `test1` before Deaggregator
|
||||
+ // MIR for `test1` after Deaggregator
|
||||
|
||||
fn test1(_1: bool, _2: i32) -> Foo {
|
||||
debug x => _1; // in scope 0 at $DIR/deaggregator_test_enum_2.rs:+0:10: +0:11
|
||||
debug y => _2; // in scope 0 at $DIR/deaggregator_test_enum_2.rs:+0:19: +0:20
|
||||
let mut _0: Foo; // return place in scope 0 at $DIR/deaggregator_test_enum_2.rs:+0:30: +0:33
|
||||
let mut _3: bool; // in scope 0 at $DIR/deaggregator_test_enum_2.rs:+1:8: +1:9
|
||||
let mut _4: i32; // in scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:16: +2:17
|
||||
let mut _5: i32; // in scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:16: +4:17
|
||||
|
||||
bb0: {
|
||||
StorageLive(_3); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+1:8: +1:9
|
||||
_3 = _1; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+1:8: +1:9
|
||||
switchInt(move _3) -> [0: bb2, otherwise: bb1]; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+1:8: +1:9
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_4); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:16: +2:17
|
||||
_4 = _2; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:16: +2:17
|
||||
- _0 = Foo::A(move _4); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:9: +2:18
|
||||
+ Deinit(_0); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:9: +2:18
|
||||
+ ((_0 as A).0: i32) = move _4; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:9: +2:18
|
||||
+ discriminant(_0) = 0; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:9: +2:18
|
||||
StorageDead(_4); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+2:17: +2:18
|
||||
goto -> bb3; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+1:5: +5:6
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageLive(_5); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:16: +4:17
|
||||
_5 = _2; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:16: +4:17
|
||||
- _0 = Foo::B(move _5); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:9: +4:18
|
||||
+ Deinit(_0); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:9: +4:18
|
||||
+ ((_0 as B).0: i32) = move _5; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:9: +4:18
|
||||
+ discriminant(_0) = 1; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:9: +4:18
|
||||
StorageDead(_5); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+4:17: +4:18
|
||||
goto -> bb3; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+1:5: +5:6
|
||||
}
|
||||
|
||||
bb3: {
|
||||
StorageDead(_3); // scope 0 at $DIR/deaggregator_test_enum_2.rs:+5:5: +5:6
|
||||
return; // scope 0 at $DIR/deaggregator_test_enum_2.rs:+6:2: +6:2
|
||||
}
|
||||
}
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
// unit-test: Deaggregator
|
||||
// Test that deaggregate fires more than once per block
|
||||
|
||||
enum Foo {
|
||||
A(i32),
|
||||
B,
|
||||
}
|
||||
|
||||
// EMIT_MIR deaggregator_test_multiple.test.Deaggregator.diff
|
||||
fn test(x: i32) -> [Foo; 2] {
|
||||
[Foo::A(x), Foo::A(x)]
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Make sure the function actually gets instantiated.
|
||||
test(0);
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
- // MIR for `test` before Deaggregator
|
||||
+ // MIR for `test` after Deaggregator
|
||||
|
||||
fn test(_1: i32) -> [Foo; 2] {
|
||||
debug x => _1; // in scope 0 at $DIR/deaggregator_test_multiple.rs:+0:9: +0:10
|
||||
let mut _0: [Foo; 2]; // return place in scope 0 at $DIR/deaggregator_test_multiple.rs:+0:20: +0:28
|
||||
let mut _2: Foo; // in scope 0 at $DIR/deaggregator_test_multiple.rs:+1:6: +1:15
|
||||
let mut _3: i32; // in scope 0 at $DIR/deaggregator_test_multiple.rs:+1:13: +1:14
|
||||
let mut _4: Foo; // in scope 0 at $DIR/deaggregator_test_multiple.rs:+1:17: +1:26
|
||||
let mut _5: i32; // in scope 0 at $DIR/deaggregator_test_multiple.rs:+1:24: +1:25
|
||||
|
||||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:6: +1:15
|
||||
StorageLive(_3); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:13: +1:14
|
||||
_3 = _1; // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:13: +1:14
|
||||
- _2 = Foo::A(move _3); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:6: +1:15
|
||||
+ Deinit(_2); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:6: +1:15
|
||||
+ ((_2 as A).0: i32) = move _3; // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:6: +1:15
|
||||
+ discriminant(_2) = 0; // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:6: +1:15
|
||||
StorageDead(_3); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:14: +1:15
|
||||
StorageLive(_4); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:17: +1:26
|
||||
StorageLive(_5); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:24: +1:25
|
||||
_5 = _1; // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:24: +1:25
|
||||
- _4 = Foo::A(move _5); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:17: +1:26
|
||||
+ Deinit(_4); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:17: +1:26
|
||||
+ ((_4 as A).0: i32) = move _5; // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:17: +1:26
|
||||
+ discriminant(_4) = 0; // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:17: +1:26
|
||||
StorageDead(_5); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:25: +1:26
|
||||
_0 = [move _2, move _4]; // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:5: +1:27
|
||||
StorageDead(_4); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:26: +1:27
|
||||
StorageDead(_2); // scope 0 at $DIR/deaggregator_test_multiple.rs:+1:26: +1:27
|
||||
return; // scope 0 at $DIR/deaggregator_test_multiple.rs:+2:2: +2:2
|
||||
}
|
||||
}
|
||||
|
|
@ -92,9 +92,7 @@
|
|||
bb2: {
|
||||
StorageLive(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:25: +10:27
|
||||
Deinit(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:25: +10:27
|
||||
Deinit(_0); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:21: +10:28
|
||||
((_0 as Err).0: ()) = move _33; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:21: +10:28
|
||||
discriminant(_0) = 1; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:21: +10:28
|
||||
_0 = Result::<ViewportPercentageLength, ()>::Err(move _33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:21: +10:28
|
||||
StorageDead(_33); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+10:27: +10:28
|
||||
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+11:6: +11:7
|
||||
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:1: +12:2
|
||||
|
@ -134,9 +132,7 @@
|
|||
_14 = Add(move _15, move _16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:38: +6:49
|
||||
StorageDead(_16); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:48: +6:49
|
||||
StorageDead(_15); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:48: +6:49
|
||||
Deinit(_3); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:35: +6:50
|
||||
((_3 as Vw).0: f32) = move _14; // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:35: +6:50
|
||||
discriminant(_3) = 0; // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:35: +6:50
|
||||
_3 = ViewportPercentageLength::Vw(move _14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:35: +6:50
|
||||
StorageDead(_14); // scope 1 at $DIR/early_otherwise_branch_68867.rs:+6:49: +6:50
|
||||
StorageDead(_13); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:49: +6:50
|
||||
StorageDead(_12); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+6:49: +6:50
|
||||
|
@ -158,9 +154,7 @@
|
|||
_19 = Add(move _20, move _21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:38: +7:49
|
||||
StorageDead(_21); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:48: +7:49
|
||||
StorageDead(_20); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:48: +7:49
|
||||
Deinit(_3); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:35: +7:50
|
||||
((_3 as Vh).0: f32) = move _19; // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:35: +7:50
|
||||
discriminant(_3) = 1; // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:35: +7:50
|
||||
_3 = ViewportPercentageLength::Vh(move _19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:35: +7:50
|
||||
StorageDead(_19); // scope 2 at $DIR/early_otherwise_branch_68867.rs:+7:49: +7:50
|
||||
StorageDead(_18); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:49: +7:50
|
||||
StorageDead(_17); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+7:49: +7:50
|
||||
|
@ -182,9 +176,7 @@
|
|||
_24 = Add(move _25, move _26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:44: +8:55
|
||||
StorageDead(_26); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:54: +8:55
|
||||
StorageDead(_25); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:54: +8:55
|
||||
Deinit(_3); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:39: +8:56
|
||||
((_3 as Vmin).0: f32) = move _24; // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:39: +8:56
|
||||
discriminant(_3) = 2; // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:39: +8:56
|
||||
_3 = ViewportPercentageLength::Vmin(move _24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:39: +8:56
|
||||
StorageDead(_24); // scope 3 at $DIR/early_otherwise_branch_68867.rs:+8:55: +8:56
|
||||
StorageDead(_23); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:55: +8:56
|
||||
StorageDead(_22); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+8:55: +8:56
|
||||
|
@ -206,9 +198,7 @@
|
|||
_29 = Add(move _30, move _31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:44: +9:55
|
||||
StorageDead(_31); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:54: +9:55
|
||||
StorageDead(_30); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:54: +9:55
|
||||
Deinit(_3); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:39: +9:56
|
||||
((_3 as Vmax).0: f32) = move _29; // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:39: +9:56
|
||||
discriminant(_3) = 3; // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:39: +9:56
|
||||
_3 = ViewportPercentageLength::Vmax(move _29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:39: +9:56
|
||||
StorageDead(_29); // scope 4 at $DIR/early_otherwise_branch_68867.rs:+9:55: +9:56
|
||||
StorageDead(_28); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:55: +9:56
|
||||
StorageDead(_27); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+9:55: +9:56
|
||||
|
@ -216,9 +206,7 @@
|
|||
}
|
||||
|
||||
bb10: {
|
||||
Deinit(_0); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:5: +11:7
|
||||
((_0 as Ok).0: ViewportPercentageLength) = move _3; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:5: +11:7
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:5: +11:7
|
||||
_0 = Result::<ViewportPercentageLength, ()>::Ok(move _3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+5:5: +11:7
|
||||
StorageDead(_3); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+11:6: +11:7
|
||||
StorageDead(_4); // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:1: +12:2
|
||||
goto -> bb11; // scope 0 at $DIR/early_otherwise_branch_68867.rs:+12:2: +12:2
|
||||
|
|
|
@ -51,14 +51,20 @@
|
|||
}
|
||||
|
||||
bb2: {
|
||||
Deinit(_6); // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41
|
||||
discriminant(_6) = 1; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41
|
||||
- _6 = MinusPlus; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41
|
||||
+ _6 = const MinusPlus; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/funky_arms.rs:21:17: 21:41
|
||||
+ // + literal: Const { ty: Sign, val: Value(Scalar(0x01)) }
|
||||
goto -> bb4; // scope 1 at $DIR/funky_arms.rs:+10:17: +10:41
|
||||
}
|
||||
|
||||
bb3: {
|
||||
Deinit(_6); // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38
|
||||
discriminant(_6) = 0; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38
|
||||
- _6 = Minus; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38
|
||||
+ _6 = const Minus; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38
|
||||
+ // mir::Constant
|
||||
+ // + span: $DIR/funky_arms.rs:20:18: 20:38
|
||||
+ // + literal: Const { ty: Sign, val: Value(Scalar(0x00)) }
|
||||
goto -> bb4; // scope 1 at $DIR/funky_arms.rs:+9:18: +9:38
|
||||
}
|
||||
|
||||
|
|
|
@ -54,9 +54,7 @@ fn main::{closure#0}(_1: Pin<&mut [generator@$DIR/generator_tiny.rs:19:16: 19:24
|
|||
StorageLive(_6); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
StorageLive(_7); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
_7 = (); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
Deinit(_0); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
((_0 as Yielded).0: ()) = move _7; // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
discriminant(_0) = 0; // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
_0 = GeneratorState::<(), ()>::Yielded(move _7); // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
discriminant((*(_1.0: &mut [generator@$DIR/generator_tiny.rs:19:16: 19:24]))) = 3; // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
return; // scope 1 at $DIR/generator_tiny.rs:+3:13: +3:18
|
||||
}
|
||||
|
|
|
@ -106,9 +106,7 @@
|
|||
+ }
|
||||
+
|
||||
+ bb6: {
|
||||
+ Deinit(_1); // scope 6 at $DIR/inline_generator.rs:15:11: 15:39
|
||||
+ ((_1 as Yielded).0: i32) = move _8; // scope 6 at $DIR/inline_generator.rs:15:11: 15:39
|
||||
+ discriminant(_1) = 0; // scope 6 at $DIR/inline_generator.rs:15:11: 15:39
|
||||
+ _1 = GeneratorState::<i32, bool>::Yielded(move _8); // scope 6 at $DIR/inline_generator.rs:15:11: 15:39
|
||||
+ _11 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:11: 15:39
|
||||
+ discriminant((*_11)) = 3; // scope 6 at $DIR/inline_generator.rs:15:11: 15:39
|
||||
+ goto -> bb1; // scope 0 at $DIR/inline_generator.rs:15:11: 15:39
|
||||
|
@ -117,9 +115,7 @@
|
|||
+ bb7: {
|
||||
+ StorageLive(_8); // scope 6 at $DIR/inline_generator.rs:15:5: 15:41
|
||||
+ StorageDead(_8); // scope 6 at $DIR/inline_generator.rs:15:38: 15:39
|
||||
+ Deinit(_1); // scope 6 at $DIR/inline_generator.rs:15:41: 15:41
|
||||
+ ((_1 as Complete).0: bool) = _7; // scope 6 at $DIR/inline_generator.rs:15:41: 15:41
|
||||
+ discriminant(_1) = 1; // scope 6 at $DIR/inline_generator.rs:15:41: 15:41
|
||||
+ _1 = GeneratorState::<i32, bool>::Complete(_7); // scope 6 at $DIR/inline_generator.rs:15:41: 15:41
|
||||
+ _12 = deref_copy (_2.0: &mut [generator@$DIR/inline_generator.rs:15:5: 15:8]); // scope 6 at $DIR/inline_generator.rs:15:41: 15:41
|
||||
+ discriminant((*_12)) = 1; // scope 6 at $DIR/inline_generator.rs:15:41: 15:41
|
||||
+ goto -> bb1; // scope 0 at $DIR/inline_generator.rs:15:41: 15:41
|
||||
|
|
|
@ -67,17 +67,14 @@
|
|||
|
||||
bb7: {
|
||||
StorageDead(_6); // scope 4 at $DIR/issue_75439.rs:+5:35: +5:36
|
||||
Deinit(_0); // scope 3 at $DIR/issue_75439.rs:+5:9: +5:39
|
||||
((_0 as Some).0: [u8; 4]) = move _5; // scope 3 at $DIR/issue_75439.rs:+5:9: +5:39
|
||||
discriminant(_0) = 1; // scope 3 at $DIR/issue_75439.rs:+5:9: +5:39
|
||||
_0 = Option::<[u8; 4]>::Some(move _5); // scope 3 at $DIR/issue_75439.rs:+5:9: +5:39
|
||||
StorageDead(_5); // scope 3 at $DIR/issue_75439.rs:+5:38: +5:39
|
||||
StorageDead(_4); // scope 1 at $DIR/issue_75439.rs:+6:5: +6:6
|
||||
goto -> bb9; // scope 1 at $DIR/issue_75439.rs:+4:5: +8:6
|
||||
}
|
||||
|
||||
bb8: {
|
||||
Deinit(_0); // scope 1 at $DIR/issue_75439.rs:+7:9: +7:13
|
||||
discriminant(_0) = 0; // scope 1 at $DIR/issue_75439.rs:+7:9: +7:13
|
||||
_0 = Option::<[u8; 4]>::None; // scope 1 at $DIR/issue_75439.rs:+7:9: +7:13
|
||||
goto -> bb9; // scope 1 at $DIR/issue_75439.rs:+4:5: +8:6
|
||||
}
|
||||
|
||||
|
|
|
@ -150,8 +150,7 @@ fn array_casts() -> () {
|
|||
|
||||
bb3: {
|
||||
StorageLive(_27); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
Deinit(_27); // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
discriminant(_27) = 0; // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
_27 = core::panicking::AssertKind::Eq; // scope 7 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
StorageLive(_28); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
StorageLive(_29); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
_29 = move _27; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
|
@ -164,8 +163,7 @@ fn array_casts() -> () {
|
|||
_33 = &(*_21); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
_32 = &(*_33); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
StorageLive(_34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
Deinit(_34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
discriminant(_34) = 0; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
_34 = Option::<Arguments<'_>>::None; // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
Retag(_34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
_28 = core::panicking::assert_failed::<usize, usize>(move _29, move _30, move _32, move _34); // scope 8 at $SRC_DIR/core/src/macros/mod.rs:LL:COL
|
||||
// mir::Constant
|
||||
|
|
|
@ -56,36 +56,31 @@
|
|||
StorageLive(_4); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:9
|
||||
_4 = _1; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:9
|
||||
_10 = discriminant(_4); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
- switchInt(move _10) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
+ switchInt(move _10) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
switchInt(move _10) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
}
|
||||
|
||||
bb1: {
|
||||
- StorageDead(_4); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
- _5 = discriminant(_3); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
- switchInt(move _5) -> [0: bb2, 1: bb4, otherwise: bb3]; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
- }
|
||||
-
|
||||
- bb2: {
|
||||
StorageDead(_4); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
_5 = discriminant(_3); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
switchInt(move _5) -> [0: bb2, 1: bb4, otherwise: bb3]; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageLive(_9); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
_9 = ((_3 as Continue).0: i32); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
_2 = _9; // scope 4 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
StorageDead(_9); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
Deinit(_0); // scope 0 at $DIR/separate_const_switch.rs:+1:5: +1:11
|
||||
((_0 as Ok).0: i32) = move _2; // scope 0 at $DIR/separate_const_switch.rs:+1:5: +1:11
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/separate_const_switch.rs:+1:5: +1:11
|
||||
_0 = Result::<i32, i32>::Ok(move _2); // scope 0 at $DIR/separate_const_switch.rs:+1:5: +1:11
|
||||
StorageDead(_2); // scope 0 at $DIR/separate_const_switch.rs:+1:10: +1:11
|
||||
StorageDead(_3); // scope 0 at $DIR/separate_const_switch.rs:+2:1: +2:2
|
||||
return; // scope 0 at $DIR/separate_const_switch.rs:+2:2: +2:2
|
||||
}
|
||||
|
||||
- bb3: {
|
||||
+ bb2: {
|
||||
bb3: {
|
||||
unreachable; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
}
|
||||
|
||||
- bb4: {
|
||||
+ bb3: {
|
||||
bb4: {
|
||||
StorageLive(_6); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
_6 = ((_3 as Break).0: std::result::Result<std::convert::Infallible, i32>); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
StorageLive(_8); // scope 2 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
|
@ -97,9 +92,7 @@
|
|||
_18 = move _16; // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_17 = move _18; // scope 10 at $SRC_DIR/core/src/convert/mod.rs:LL:COL
|
||||
StorageDead(_18); // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
Deinit(_0); // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
((_0 as Err).0: i32) = move _17; // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
discriminant(_0) = 1; // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_0 = Result::<i32, i32>::Err(move _17); // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_17); // scope 9 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_16); // scope 8 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_8); // scope 2 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
|
@ -109,48 +102,33 @@
|
|||
return; // scope 0 at $DIR/separate_const_switch.rs:+2:2: +2:2
|
||||
}
|
||||
|
||||
- bb5: {
|
||||
+ bb4: {
|
||||
bb5: {
|
||||
StorageLive(_13); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_13 = move ((_4 as Err).0: i32); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageLive(_14); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageLive(_15); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_15 = move _13; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
Deinit(_14); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
((_14 as Err).0: i32) = move _15; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
discriminant(_14) = 1; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_14 = Result::<Infallible, i32>::Err(move _15); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_15); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
Deinit(_3); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
((_3 as Break).0: std::result::Result<std::convert::Infallible, i32>) = move _14; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
discriminant(_3) = 1; // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_3 = ControlFlow::<Result<Infallible, i32>, i32>::Break(move _14); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_14); // scope 7 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_13); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
- goto -> bb1; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
+ StorageDead(_4); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
+ _5 = discriminant(_3); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
+ switchInt(move _5) -> [0: bb1, 1: bb3, otherwise: bb2]; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
goto -> bb1; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
}
|
||||
|
||||
- bb6: {
|
||||
+ bb5: {
|
||||
bb6: {
|
||||
unreachable; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
}
|
||||
|
||||
- bb7: {
|
||||
+ bb6: {
|
||||
bb7: {
|
||||
StorageLive(_11); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_11 = move ((_4 as Ok).0: i32); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageLive(_12); // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_12 = move _11; // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
Deinit(_3); // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
((_3 as Continue).0: i32) = move _12; // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
discriminant(_3) = 0; // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
_3 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(move _12); // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_12); // scope 6 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
StorageDead(_11); // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
- goto -> bb1; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
+ StorageDead(_4); // scope 0 at $DIR/separate_const_switch.rs:+1:9: +1:10
|
||||
+ _5 = discriminant(_3); // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
+ switchInt(move _5) -> [0: bb1, 1: bb3, otherwise: bb2]; // scope 0 at $DIR/separate_const_switch.rs:+1:8: +1:10
|
||||
goto -> bb1; // scope 5 at $SRC_DIR/core/src/result.rs:LL:COL
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -38,14 +38,10 @@
|
|||
_6 = ((_1 as Err).0: usize); // scope 0 at $DIR/separate_const_switch.rs:+8:17: +8:18
|
||||
StorageLive(_7); // scope 2 at $DIR/separate_const_switch.rs:+8:42: +8:43
|
||||
_7 = _6; // scope 2 at $DIR/separate_const_switch.rs:+8:42: +8:43
|
||||
Deinit(_2); // scope 2 at $DIR/separate_const_switch.rs:+8:23: +8:44
|
||||
((_2 as Break).0: usize) = move _7; // scope 2 at $DIR/separate_const_switch.rs:+8:23: +8:44
|
||||
discriminant(_2) = 1; // scope 2 at $DIR/separate_const_switch.rs:+8:23: +8:44
|
||||
_2 = ControlFlow::<usize, i32>::Break(move _7); // scope 2 at $DIR/separate_const_switch.rs:+8:23: +8:44
|
||||
StorageDead(_7); // scope 2 at $DIR/separate_const_switch.rs:+8:43: +8:44
|
||||
StorageDead(_6); // scope 0 at $DIR/separate_const_switch.rs:+8:43: +8:44
|
||||
- goto -> bb4; // scope 0 at $DIR/separate_const_switch.rs:+8:43: +8:44
|
||||
+ _8 = discriminant(_2); // scope 0 at $DIR/separate_const_switch.rs:+5:11: +10:6
|
||||
+ switchInt(move _8) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 0 at $DIR/separate_const_switch.rs:+5:5: +10:6
|
||||
goto -> bb4; // scope 0 at $DIR/separate_const_switch.rs:+8:43: +8:44
|
||||
}
|
||||
|
||||
bb2: {
|
||||
|
@ -57,53 +53,41 @@
|
|||
_4 = ((_1 as Ok).0: i32); // scope 0 at $DIR/separate_const_switch.rs:+7:16: +7:17
|
||||
StorageLive(_5); // scope 1 at $DIR/separate_const_switch.rs:+7:44: +7:45
|
||||
_5 = _4; // scope 1 at $DIR/separate_const_switch.rs:+7:44: +7:45
|
||||
Deinit(_2); // scope 1 at $DIR/separate_const_switch.rs:+7:22: +7:46
|
||||
((_2 as Continue).0: i32) = move _5; // scope 1 at $DIR/separate_const_switch.rs:+7:22: +7:46
|
||||
discriminant(_2) = 0; // scope 1 at $DIR/separate_const_switch.rs:+7:22: +7:46
|
||||
_2 = ControlFlow::<usize, i32>::Continue(move _5); // scope 1 at $DIR/separate_const_switch.rs:+7:22: +7:46
|
||||
StorageDead(_5); // scope 1 at $DIR/separate_const_switch.rs:+7:45: +7:46
|
||||
StorageDead(_4); // scope 0 at $DIR/separate_const_switch.rs:+7:45: +7:46
|
||||
- goto -> bb4; // scope 0 at $DIR/separate_const_switch.rs:+7:45: +7:46
|
||||
- }
|
||||
-
|
||||
- bb4: {
|
||||
_8 = discriminant(_2); // scope 0 at $DIR/separate_const_switch.rs:+5:11: +10:6
|
||||
- switchInt(move _8) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 0 at $DIR/separate_const_switch.rs:+5:5: +10:6
|
||||
+ switchInt(move _8) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 0 at $DIR/separate_const_switch.rs:+5:5: +10:6
|
||||
goto -> bb4; // scope 0 at $DIR/separate_const_switch.rs:+7:45: +7:46
|
||||
}
|
||||
|
||||
- bb5: {
|
||||
+ bb4: {
|
||||
bb4: {
|
||||
_8 = discriminant(_2); // scope 0 at $DIR/separate_const_switch.rs:+5:11: +10:6
|
||||
switchInt(move _8) -> [0: bb7, 1: bb5, otherwise: bb6]; // scope 0 at $DIR/separate_const_switch.rs:+5:5: +10:6
|
||||
}
|
||||
|
||||
bb5: {
|
||||
StorageLive(_11); // scope 0 at $DIR/separate_const_switch.rs:+12:28: +12:29
|
||||
_11 = ((_2 as Break).0: usize); // scope 0 at $DIR/separate_const_switch.rs:+12:28: +12:29
|
||||
Deinit(_0); // scope 4 at $DIR/separate_const_switch.rs:+12:34: +12:38
|
||||
discriminant(_0) = 0; // scope 4 at $DIR/separate_const_switch.rs:+12:34: +12:38
|
||||
_0 = Option::<i32>::None; // scope 4 at $DIR/separate_const_switch.rs:+12:34: +12:38
|
||||
StorageDead(_11); // scope 0 at $DIR/separate_const_switch.rs:+12:37: +12:38
|
||||
- goto -> bb8; // scope 0 at $DIR/separate_const_switch.rs:+12:37: +12:38
|
||||
+ goto -> bb7; // scope 0 at $DIR/separate_const_switch.rs:+12:37: +12:38
|
||||
goto -> bb8; // scope 0 at $DIR/separate_const_switch.rs:+12:37: +12:38
|
||||
}
|
||||
|
||||
- bb6: {
|
||||
+ bb5: {
|
||||
bb6: {
|
||||
unreachable; // scope 0 at $DIR/separate_const_switch.rs:+5:11: +10:6
|
||||
}
|
||||
|
||||
- bb7: {
|
||||
+ bb6: {
|
||||
bb7: {
|
||||
StorageLive(_9); // scope 0 at $DIR/separate_const_switch.rs:+11:31: +11:32
|
||||
_9 = ((_2 as Continue).0: i32); // scope 0 at $DIR/separate_const_switch.rs:+11:31: +11:32
|
||||
StorageLive(_10); // scope 3 at $DIR/separate_const_switch.rs:+11:42: +11:43
|
||||
_10 = _9; // scope 3 at $DIR/separate_const_switch.rs:+11:42: +11:43
|
||||
Deinit(_0); // scope 3 at $DIR/separate_const_switch.rs:+11:37: +11:44
|
||||
((_0 as Some).0: i32) = move _10; // scope 3 at $DIR/separate_const_switch.rs:+11:37: +11:44
|
||||
discriminant(_0) = 1; // scope 3 at $DIR/separate_const_switch.rs:+11:37: +11:44
|
||||
_0 = Option::<i32>::Some(move _10); // scope 3 at $DIR/separate_const_switch.rs:+11:37: +11:44
|
||||
StorageDead(_10); // scope 3 at $DIR/separate_const_switch.rs:+11:43: +11:44
|
||||
StorageDead(_9); // scope 0 at $DIR/separate_const_switch.rs:+11:43: +11:44
|
||||
- goto -> bb8; // scope 0 at $DIR/separate_const_switch.rs:+11:43: +11:44
|
||||
+ goto -> bb7; // scope 0 at $DIR/separate_const_switch.rs:+11:43: +11:44
|
||||
goto -> bb8; // scope 0 at $DIR/separate_const_switch.rs:+11:43: +11:44
|
||||
}
|
||||
|
||||
- bb8: {
|
||||
+ bb7: {
|
||||
bb8: {
|
||||
StorageDead(_2); // scope 0 at $DIR/separate_const_switch.rs:+14:1: +14:2
|
||||
return; // scope 0 at $DIR/separate_const_switch.rs:+14:2: +14:2
|
||||
}
|
||||
|
|
|
@ -25,8 +25,7 @@ fn ezmap(_1: Option<i32>) -> Option<i32> {
|
|||
}
|
||||
|
||||
bb1: {
|
||||
Deinit(_0); // scope 1 at $DIR/simple_option_map_e2e.rs:8:17: 8:21
|
||||
discriminant(_0) = 0; // scope 1 at $DIR/simple_option_map_e2e.rs:8:17: 8:21
|
||||
_0 = Option::<i32>::None; // scope 1 at $DIR/simple_option_map_e2e.rs:8:17: 8:21
|
||||
goto -> bb4; // scope 1 at $DIR/simple_option_map_e2e.rs:8:17: 8:21
|
||||
}
|
||||
|
||||
|
@ -38,9 +37,7 @@ fn ezmap(_1: Option<i32>) -> Option<i32> {
|
|||
_5 = move ((_1 as Some).0: i32); // scope 1 at $DIR/simple_option_map_e2e.rs:7:14: 7:15
|
||||
StorageLive(_4); // scope 2 at $DIR/simple_option_map_e2e.rs:7:25: 7:29
|
||||
_4 = Add(_5, const 1_i32); // scope 3 at $DIR/simple_option_map_e2e.rs:+1:16: +1:21
|
||||
Deinit(_0); // scope 2 at $DIR/simple_option_map_e2e.rs:7:20: 7:30
|
||||
((_0 as Some).0: i32) = move _4; // scope 2 at $DIR/simple_option_map_e2e.rs:7:20: 7:30
|
||||
discriminant(_0) = 1; // scope 2 at $DIR/simple_option_map_e2e.rs:7:20: 7:30
|
||||
_0 = Option::<i32>::Some(move _4); // scope 2 at $DIR/simple_option_map_e2e.rs:7:20: 7:30
|
||||
StorageDead(_4); // scope 2 at $DIR/simple_option_map_e2e.rs:7:29: 7:30
|
||||
goto -> bb4; // scope 1 at $DIR/simple_option_map_e2e.rs:10:1: 10:2
|
||||
}
|
||||
|
|
|
@ -9,8 +9,7 @@
|
|||
|
||||
bb0: {
|
||||
- StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+2:13: +2:17
|
||||
- Deinit(_1); // scope 0 at $DIR/simplify_locals.rs:+2:13: +2:17
|
||||
- discriminant(_1) = 0; // scope 0 at $DIR/simplify_locals.rs:+2:13: +2:17
|
||||
- _1 = E::A; // scope 0 at $DIR/simplify_locals.rs:+2:13: +2:17
|
||||
- StorageDead(_1); // scope 0 at $DIR/simplify_locals.rs:+2:17: +2:18
|
||||
_0 = const (); // scope 0 at $DIR/simplify_locals.rs:+0:9: +3:2
|
||||
return; // scope 0 at $DIR/simplify_locals.rs:+3:2: +3:2
|
||||
|
|
|
@ -9,12 +9,10 @@
|
|||
|
||||
bb0: {
|
||||
- StorageLive(_1); // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:26
|
||||
- Deinit(_1); // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:26
|
||||
- discriminant(_1) = 1; // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:26
|
||||
- _1 = E::B; // scope 0 at $DIR/simplify_locals.rs:+2:22: +2:26
|
||||
- StorageLive(_2); // scope 0 at $DIR/simplify_locals.rs:+2:5: +2:17
|
||||
- StorageLive(_3); // scope 0 at $DIR/simplify_locals.rs:+2:11: +2:15
|
||||
- Deinit(_3); // scope 0 at $DIR/simplify_locals.rs:+2:11: +2:15
|
||||
- discriminant(_3) = 0; // scope 0 at $DIR/simplify_locals.rs:+2:11: +2:15
|
||||
- _3 = E::A; // scope 0 at $DIR/simplify_locals.rs:+2:11: +2:15
|
||||
- Deinit(_2); // scope 0 at $DIR/simplify_locals.rs:+2:6: +2:16
|
||||
- (_2.0: i32) = const 10_i32; // scope 0 at $DIR/simplify_locals.rs:+2:6: +2:16
|
||||
- (_2.1: E) = move _3; // scope 0 at $DIR/simplify_locals.rs:+2:6: +2:16
|
||||
|
|
|
@ -18,11 +18,9 @@
|
|||
bb0: {
|
||||
StorageLive(_1); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69
|
||||
StorageLive(_2); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49
|
||||
Deinit(_2); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49
|
||||
discriminant(_2) = 0; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49
|
||||
_2 = Option::<u8>::None; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:31: +1:49
|
||||
StorageLive(_3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68
|
||||
Deinit(_3); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68
|
||||
discriminant(_3) = 0; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68
|
||||
_3 = Option::<T>::None; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:51: +1:68
|
||||
Deinit(_1); // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69
|
||||
(_1.0: std::option::Option<u8>) = move _2; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69
|
||||
(_1.1: std::option::Option<T>) = move _3; // scope 1 at $DIR/simplify_locals_fixedpoint.rs:+1:30: +1:69
|
||||
|
|
|
@ -26,9 +26,7 @@
|
|||
_3 = move ((_1 as Some).0: std::boxed::Box<()>); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:14: +3:15
|
||||
StorageLive(_4); // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:25: +3:26
|
||||
_4 = move _3; // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:25: +3:26
|
||||
Deinit(_0); // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:20: +3:27
|
||||
((_0 as Some).0: std::boxed::Box<()>) = move _4; // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:20: +3:27
|
||||
discriminant(_0) = 1; // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:20: +3:27
|
||||
_0 = Option::<Box<()>>::Some(move _4); // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:20: +3:27
|
||||
StorageDead(_4); // scope 1 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:26: +3:27
|
||||
StorageDead(_3); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:26: +3:27
|
||||
goto -> bb4; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+3:26: +3:27
|
||||
|
@ -39,8 +37,7 @@
|
|||
}
|
||||
|
||||
bb3: {
|
||||
Deinit(_0); // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+2:17: +2:21
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+2:17: +2:21
|
||||
_0 = Option::<Box<()>>::None; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+2:17: +2:21
|
||||
goto -> bb4; // scope 0 at $DIR/simplify_locals_removes_unused_discriminant_reads.rs:+2:17: +2:21
|
||||
}
|
||||
|
||||
|
|
|
@ -16,9 +16,7 @@
|
|||
StorageLive(_2); // scope 1 at $DIR/sroa.rs:+1:22: +1:29
|
||||
StorageLive(_3); // scope 1 at $DIR/sroa.rs:+1:27: +1:28
|
||||
_3 = _1; // scope 1 at $DIR/sroa.rs:+1:27: +1:28
|
||||
Deinit(_2); // scope 1 at $DIR/sroa.rs:+1:22: +1:29
|
||||
((_2 as Some).0: usize) = move _3; // scope 1 at $DIR/sroa.rs:+1:22: +1:29
|
||||
discriminant(_2) = 1; // scope 1 at $DIR/sroa.rs:+1:22: +1:29
|
||||
_2 = Option::<usize>::Some(move _3); // scope 1 at $DIR/sroa.rs:+1:22: +1:29
|
||||
StorageDead(_3); // scope 1 at $DIR/sroa.rs:+1:28: +1:29
|
||||
_4 = discriminant(_2); // scope 1 at $DIR/sroa.rs:+1:12: +1:19
|
||||
switchInt(move _4) -> [1: bb1, otherwise: bb2]; // scope 1 at $DIR/sroa.rs:+1:12: +1:19
|
||||
|
|
|
@ -38,9 +38,7 @@
|
|||
StorageLive(_6); // scope 0 at $DIR/sroa.rs:+1:45: +1:47
|
||||
Deinit(_6); // scope 0 at $DIR/sroa.rs:+1:45: +1:47
|
||||
StorageLive(_7); // scope 0 at $DIR/sroa.rs:+1:60: +1:68
|
||||
Deinit(_7); // scope 0 at $DIR/sroa.rs:+1:60: +1:68
|
||||
((_7 as Some).0: isize) = const -4_isize; // scope 0 at $DIR/sroa.rs:+1:60: +1:68
|
||||
discriminant(_7) = 1; // scope 0 at $DIR/sroa.rs:+1:60: +1:68
|
||||
_7 = Option::<isize>::Some(const -4_isize); // scope 0 at $DIR/sroa.rs:+1:60: +1:68
|
||||
- Deinit(_5); // scope 0 at $DIR/sroa.rs:+1:30: +1:70
|
||||
- (_5.0: u8) = const 5_u8; // scope 0 at $DIR/sroa.rs:+1:30: +1:70
|
||||
- (_5.1: ()) = move _6; // scope 0 at $DIR/sroa.rs:+1:30: +1:70
|
||||
|
|
|
@ -26,45 +26,40 @@ fn new(_1: Result<T, E>) -> Result<T, E> {
|
|||
bb0: {
|
||||
StorageLive(_2); // scope 0 at $DIR/try_identity_e2e.rs:+2:15: +7:10
|
||||
_3 = discriminant(_1); // scope 0 at $DIR/try_identity_e2e.rs:+3:19: +3:20
|
||||
switchInt(move _3) -> [0: bb2, 1: bb1, otherwise: bb4]; // scope 0 at $DIR/try_identity_e2e.rs:+3:13: +3:20
|
||||
switchInt(move _3) -> [0: bb2, 1: bb1, otherwise: bb5]; // scope 0 at $DIR/try_identity_e2e.rs:+3:13: +3:20
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_5 = move ((_1 as Err).0: E); // scope 0 at $DIR/try_identity_e2e.rs:+5:21: +5:22
|
||||
Deinit(_2); // scope 2 at $DIR/try_identity_e2e.rs:+5:27: +5:48
|
||||
((_2 as Break).0: E) = move _5; // scope 2 at $DIR/try_identity_e2e.rs:+5:27: +5:48
|
||||
discriminant(_2) = 1; // scope 2 at $DIR/try_identity_e2e.rs:+5:27: +5:48
|
||||
_6 = discriminant(_2); // scope 0 at $DIR/try_identity_e2e.rs:+2:15: +7:10
|
||||
switchInt(move _6) -> [0: bb5, 1: bb3, otherwise: bb4]; // scope 0 at $DIR/try_identity_e2e.rs:+2:9: +7:10
|
||||
_2 = ControlFlow::<E, T>::Break(move _5); // scope 2 at $DIR/try_identity_e2e.rs:+5:27: +5:48
|
||||
goto -> bb3; // scope 0 at $DIR/try_identity_e2e.rs:+5:47: +5:48
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_4 = move ((_1 as Ok).0: T); // scope 0 at $DIR/try_identity_e2e.rs:+4:20: +4:21
|
||||
Deinit(_2); // scope 1 at $DIR/try_identity_e2e.rs:+4:26: +4:50
|
||||
((_2 as Continue).0: T) = move _4; // scope 1 at $DIR/try_identity_e2e.rs:+4:26: +4:50
|
||||
discriminant(_2) = 0; // scope 1 at $DIR/try_identity_e2e.rs:+4:26: +4:50
|
||||
_6 = discriminant(_2); // scope 0 at $DIR/try_identity_e2e.rs:+2:15: +7:10
|
||||
switchInt(move _6) -> [0: bb5, 1: bb3, otherwise: bb4]; // scope 0 at $DIR/try_identity_e2e.rs:+2:9: +7:10
|
||||
_2 = ControlFlow::<E, T>::Continue(move _4); // scope 1 at $DIR/try_identity_e2e.rs:+4:26: +4:50
|
||||
goto -> bb3; // scope 0 at $DIR/try_identity_e2e.rs:+4:49: +4:50
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_6 = discriminant(_2); // scope 0 at $DIR/try_identity_e2e.rs:+2:15: +7:10
|
||||
switchInt(move _6) -> [0: bb6, 1: bb4, otherwise: bb5]; // scope 0 at $DIR/try_identity_e2e.rs:+2:9: +7:10
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_8 = move ((_2 as Break).0: E); // scope 0 at $DIR/try_identity_e2e.rs:+9:32: +9:33
|
||||
Deinit(_0); // scope 4 at $DIR/try_identity_e2e.rs:+9:45: +9:51
|
||||
((_0 as Err).0: E) = move _8; // scope 4 at $DIR/try_identity_e2e.rs:+9:45: +9:51
|
||||
discriminant(_0) = 1; // scope 4 at $DIR/try_identity_e2e.rs:+9:45: +9:51
|
||||
_0 = Result::<T, E>::Err(move _8); // scope 4 at $DIR/try_identity_e2e.rs:+9:45: +9:51
|
||||
StorageDead(_2); // scope 0 at $DIR/try_identity_e2e.rs:+12:1: +12:2
|
||||
return; // scope 0 at $DIR/try_identity_e2e.rs:+12:1: +12:2
|
||||
}
|
||||
|
||||
bb4: {
|
||||
bb5: {
|
||||
unreachable; // scope 0 at $DIR/try_identity_e2e.rs:+2:15: +7:10
|
||||
}
|
||||
|
||||
bb5: {
|
||||
bb6: {
|
||||
_7 = move ((_2 as Continue).0: T); // scope 0 at $DIR/try_identity_e2e.rs:+8:35: +8:36
|
||||
Deinit(_0); // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +11:6
|
||||
((_0 as Ok).0: T) = move _7; // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +11:6
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +11:6
|
||||
_0 = Result::<T, E>::Ok(move _7); // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +11:6
|
||||
StorageDead(_2); // scope 0 at $DIR/try_identity_e2e.rs:+12:1: +12:2
|
||||
return; // scope 0 at $DIR/try_identity_e2e.rs:+12:1: +12:2
|
||||
}
|
||||
|
|
|
@ -20,9 +20,7 @@ fn old(_1: Result<T, E>) -> Result<T, E> {
|
|||
|
||||
bb1: {
|
||||
_4 = move ((_1 as Err).0: E); // scope 0 at $DIR/try_identity_e2e.rs:+4:17: +4:18
|
||||
Deinit(_0); // scope 2 at $DIR/try_identity_e2e.rs:+4:30: +4:36
|
||||
((_0 as Err).0: E) = move _4; // scope 2 at $DIR/try_identity_e2e.rs:+4:30: +4:36
|
||||
discriminant(_0) = 1; // scope 2 at $DIR/try_identity_e2e.rs:+4:30: +4:36
|
||||
_0 = Result::<T, E>::Err(move _4); // scope 2 at $DIR/try_identity_e2e.rs:+4:30: +4:36
|
||||
return; // scope 0 at $DIR/try_identity_e2e.rs:+7:1: +7:2
|
||||
}
|
||||
|
||||
|
@ -32,9 +30,7 @@ fn old(_1: Result<T, E>) -> Result<T, E> {
|
|||
|
||||
bb3: {
|
||||
_3 = move ((_1 as Ok).0: T); // scope 0 at $DIR/try_identity_e2e.rs:+3:16: +3:17
|
||||
Deinit(_0); // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +6:6
|
||||
((_0 as Ok).0: T) = move _3; // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +6:6
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +6:6
|
||||
_0 = Result::<T, E>::Ok(move _3); // scope 0 at $DIR/try_identity_e2e.rs:+1:5: +6:6
|
||||
return; // scope 0 at $DIR/try_identity_e2e.rs:+7:1: +7:2
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,8 +15,7 @@ fn main() -> () {
|
|||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +5:6
|
||||
StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
Deinit(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
discriminant(_2) = 2; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
_2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
_3 = discriminant(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
switchInt(move _3) -> [2: bb1, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +1:19
|
||||
}
|
||||
|
@ -33,8 +32,7 @@ fn main() -> () {
|
|||
StorageDead(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+5:6: +5:7
|
||||
StorageLive(_6); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +10:6
|
||||
StorageLive(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
Deinit(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
discriminant(_7) = 0; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
_7 = Test2::D; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
_8 = discriminant(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
switchInt(move _8) -> [4: bb5, 5: bb3, otherwise: bb4]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +7:19
|
||||
}
|
||||
|
|
|
@ -16,8 +16,7 @@
|
|||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +5:6
|
||||
StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
Deinit(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
discriminant(_2) = 2; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
_2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
_3 = discriminant(_2); // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:11: +1:19
|
||||
- switchInt(move _3) -> [0: bb3, 1: bb4, 2: bb1, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +1:19
|
||||
+ switchInt(move _3) -> [2: bb1, otherwise: bb2]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+1:5: +1:19
|
||||
|
@ -62,8 +61,7 @@
|
|||
StorageDead(_1); // scope 0 at $DIR/uninhabited_enum_branching.rs:+5:6: +5:7
|
||||
StorageLive(_6); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +10:6
|
||||
StorageLive(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
Deinit(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
discriminant(_7) = 0; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
_7 = Test2::D; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
_8 = discriminant(_7); // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:11: +7:19
|
||||
switchInt(move _8) -> [4: bb8, 5: bb6, otherwise: bb7]; // scope 0 at $DIR/uninhabited_enum_branching.rs:+7:5: +7:19
|
||||
}
|
||||
|
|
|
@ -22,8 +22,7 @@ fn main() -> () {
|
|||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13
|
||||
StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
Deinit(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
discriminant(_2) = 2; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
_2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
Deinit(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48
|
||||
(_1.0: u32) = const 51_u32; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48
|
||||
(_1.1: Test1) = move _2; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48
|
||||
|
|
|
@ -23,8 +23,7 @@
|
|||
bb0: {
|
||||
StorageLive(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:9: +1:13
|
||||
StorageLive(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
Deinit(_2); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
discriminant(_2) = 2; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
_2 = Test1::C; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:38: +1:46
|
||||
Deinit(_1); // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48
|
||||
(_1.0: u32) = const 51_u32; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48
|
||||
(_1.1: Test1) = move _2; // scope 0 at $DIR/uninhabited_enum_branching2.rs:+1:16: +1:48
|
||||
|
|
|
@ -4,9 +4,7 @@ fn Test::X(_1: usize) -> Test {
|
|||
let mut _0: Test; // return place in scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6
|
||||
|
||||
bb0: {
|
||||
Deinit(_0); // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6
|
||||
((_0 as X).0: usize) = move _1; // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6
|
||||
discriminant(_0) = 0; // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6
|
||||
_0 = Test::X(move _1); // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6
|
||||
return; // scope 0 at $DIR/unusual_item_types.rs:+0:5: +0:6
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,7 @@
|
|||
StorageLive(_1); // scope 0 at $DIR/while_let_loops.rs:+1:9: +1:15
|
||||
_1 = const 0_i32; // scope 0 at $DIR/while_let_loops.rs:+1:18: +1:19
|
||||
StorageLive(_2); // scope 2 at $DIR/while_let_loops.rs:+2:28: +2:32
|
||||
Deinit(_2); // scope 2 at $DIR/while_let_loops.rs:+2:28: +2:32
|
||||
discriminant(_2) = 0; // scope 2 at $DIR/while_let_loops.rs:+2:28: +2:32
|
||||
_2 = Option::<u32>::None; // scope 2 at $DIR/while_let_loops.rs:+2:28: +2:32
|
||||
- _3 = discriminant(_2); // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25
|
||||
- switchInt(move _3) -> [1: bb1, otherwise: bb3]; // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25
|
||||
+ _3 = const 0_isize; // scope 2 at $DIR/while_let_loops.rs:+2:15: +2:25
|
||||
|
|
Loading…
Add table
Reference in a new issue