Revert "Use record_operands_moved
more aggresively"
This reverts commit 7f3e8551dde7f14641618cdb8fda2f99ff1d74b6.
This commit is contained in:
parent
a71a819480
commit
bed69c6134
@ -12,8 +12,6 @@ use rustc_middle::mir::*;
|
||||
use rustc_middle::ty::{self, Ty, UpvarSubsts};
|
||||
use rustc_span::Span;
|
||||
|
||||
use std::slice;
|
||||
|
||||
impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
/// Returns an rvalue suitable for use until the end of the current
|
||||
/// scope expression.
|
||||
@ -120,9 +118,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
block =
|
||||
this.into(this.hir.tcx().mk_place_deref(Place::from(result)), block, value)
|
||||
);
|
||||
let result_operand = Operand::Move(Place::from(result));
|
||||
this.record_operands_moved(slice::from_ref(&result_operand));
|
||||
block.and(Rvalue::Use(result_operand))
|
||||
block.and(Rvalue::Use(Operand::Move(Place::from(result))))
|
||||
}
|
||||
ExprKind::Cast { source } => {
|
||||
let source = unpack!(block = this.as_operand(block, scope, source));
|
||||
@ -166,7 +162,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
.map(|f| unpack!(block = this.as_operand(block, scope, f)))
|
||||
.collect();
|
||||
|
||||
this.record_operands_moved(&fields);
|
||||
block.and(Rvalue::Aggregate(box AggregateKind::Array(el_ty), fields))
|
||||
}
|
||||
ExprKind::Tuple { fields } => {
|
||||
@ -177,7 +172,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
.map(|f| unpack!(block = this.as_operand(block, scope, f)))
|
||||
.collect();
|
||||
|
||||
this.record_operands_moved(&fields);
|
||||
block.and(Rvalue::Aggregate(box AggregateKind::Tuple, fields))
|
||||
}
|
||||
ExprKind::Closure { closure_id, substs, upvars, movability } => {
|
||||
@ -229,7 +223,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
}
|
||||
UpvarSubsts::Closure(substs) => box AggregateKind::Closure(closure_id, substs),
|
||||
};
|
||||
this.record_operands_moved(&operands);
|
||||
block.and(Rvalue::Aggregate(result, operands))
|
||||
}
|
||||
ExprKind::Assign { .. } | ExprKind::AssignOp { .. } => {
|
||||
|
@ -10,8 +10,6 @@ use rustc_hir as hir;
|
||||
use rustc_middle::mir::*;
|
||||
use rustc_middle::ty::CanonicalUserTypeAnnotation;
|
||||
|
||||
use std::slice;
|
||||
|
||||
impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
/// Compile `expr`, storing the result into `destination`, which
|
||||
/// is assumed to be uninitialized.
|
||||
@ -277,6 +275,7 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
let fields: Vec<_> = if let Some(FruInfo { base, field_types }) = base {
|
||||
let place_builder = unpack!(block = this.as_place_builder(block, base));
|
||||
|
||||
|
||||
// MIR does not natively support FRU, so for each
|
||||
// base-supplied field, generate an operand that
|
||||
// reads it from the base.
|
||||
@ -314,7 +313,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
user_ty,
|
||||
active_field_index,
|
||||
);
|
||||
this.record_operands_moved(&fields);
|
||||
this.cfg.push_assign(
|
||||
block,
|
||||
source_info,
|
||||
@ -441,7 +439,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
let scope = this.local_scope();
|
||||
let value = unpack!(block = this.as_operand(block, Some(scope), value));
|
||||
let resume = this.cfg.start_new_block();
|
||||
this.record_operands_moved(slice::from_ref(&value));
|
||||
this.cfg.terminate(
|
||||
block,
|
||||
source_info,
|
||||
|
@ -3,7 +3,6 @@ use crate::build::{BlockAnd, BlockAndExtension, BlockFrame, Builder};
|
||||
use crate::thir::*;
|
||||
use rustc_middle::middle::region;
|
||||
use rustc_middle::mir::*;
|
||||
use std::slice;
|
||||
|
||||
impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
/// Builds a block of MIR statements to evaluate the THIR `expr`.
|
||||
@ -47,7 +46,6 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
|
||||
if this.hir.needs_drop(lhs.ty) {
|
||||
let rhs = unpack!(block = this.as_local_operand(block, rhs));
|
||||
let lhs = unpack!(block = this.as_place(block, lhs));
|
||||
this.record_operands_moved(slice::from_ref(&rhs));
|
||||
unpack!(block = this.build_drop_and_replace(block, lhs_span, lhs, rhs));
|
||||
} else {
|
||||
let rhs = unpack!(block = this.as_local_rvalue(block, rhs));
|
||||
|
@ -1352,7 +1352,7 @@ impl<'tcx> DropTreeBuilder<'tcx> for Unwind {
|
||||
| TerminatorKind::Yield { .. }
|
||||
| TerminatorKind::GeneratorDrop
|
||||
| TerminatorKind::FalseEdge { .. }
|
||||
| TerminatorKind::InlineAsm { .. } => {
|
||||
| TerminatorKind::InlineAsm {.. } => {
|
||||
span_bug!(term.source_info.span, "cannot unwind from {:?}", term.kind)
|
||||
}
|
||||
}
|
||||
|
@ -41,36 +41,44 @@ fn main() -> () {
|
||||
StorageLive(_5); // scope 3 at $DIR/basic_assignment.rs:19:9: 19:15
|
||||
StorageLive(_6); // scope 4 at $DIR/basic_assignment.rs:23:14: 23:20
|
||||
_6 = move _4; // scope 4 at $DIR/basic_assignment.rs:23:14: 23:20
|
||||
replace(_5 <- move _6) -> [return: bb1, unwind: bb4]; // scope 4 at $DIR/basic_assignment.rs:23:5: 23:11
|
||||
replace(_5 <- move _6) -> [return: bb1, unwind: bb5]; // scope 4 at $DIR/basic_assignment.rs:23:5: 23:11
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageDead(_6); // scope 4 at $DIR/basic_assignment.rs:23:19: 23:20
|
||||
_0 = const (); // scope 0 at $DIR/basic_assignment.rs:10:11: 24:2
|
||||
drop(_5) -> [return: bb2, unwind: bb5]; // scope 3 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
drop(_6) -> [return: bb2, unwind: bb6]; // scope 4 at $DIR/basic_assignment.rs:23:19: 23:20
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageDead(_5); // scope 3 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
drop(_4) -> [return: bb3, unwind: bb6]; // scope 2 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
StorageDead(_6); // scope 4 at $DIR/basic_assignment.rs:23:19: 23:20
|
||||
_0 = const (); // scope 0 at $DIR/basic_assignment.rs:10:11: 24:2
|
||||
drop(_5) -> [return: bb3, unwind: bb7]; // scope 3 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
}
|
||||
|
||||
bb3: {
|
||||
StorageDead(_5); // scope 3 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
drop(_4) -> [return: bb4, unwind: bb8]; // scope 2 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
}
|
||||
|
||||
bb4: {
|
||||
StorageDead(_4); // scope 2 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
StorageDead(_2); // scope 1 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
StorageDead(_1); // scope 0 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
return; // scope 0 at $DIR/basic_assignment.rs:24:2: 24:2
|
||||
}
|
||||
|
||||
bb4 (cleanup): {
|
||||
drop(_5) -> bb5; // scope 3 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
}
|
||||
|
||||
bb5 (cleanup): {
|
||||
drop(_4) -> bb6; // scope 2 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
drop(_6) -> bb6; // scope 4 at $DIR/basic_assignment.rs:23:19: 23:20
|
||||
}
|
||||
|
||||
bb6 (cleanup): {
|
||||
drop(_5) -> bb7; // scope 3 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
}
|
||||
|
||||
bb7 (cleanup): {
|
||||
drop(_4) -> bb8; // scope 2 at $DIR/basic_assignment.rs:24:1: 24:2
|
||||
}
|
||||
|
||||
bb8 (cleanup): {
|
||||
resume; // scope 0 at $DIR/basic_assignment.rs:10:1: 24:2
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ fn main() -> () {
|
||||
StorageLive(_1); // scope 0 at $DIR/box_expr.rs:7:9: 7:10
|
||||
StorageLive(_2); // scope 0 at $DIR/box_expr.rs:7:13: 7:25
|
||||
_2 = Box(S); // scope 0 at $DIR/box_expr.rs:7:13: 7:25
|
||||
(*_2) = S::new() -> [return: bb1, unwind: bb5]; // scope 0 at $DIR/box_expr.rs:7:17: 7:25
|
||||
(*_2) = S::new() -> [return: bb1, unwind: bb6]; // scope 0 at $DIR/box_expr.rs:7:17: 7:25
|
||||
// mir::Constant
|
||||
// + span: $DIR/box_expr.rs:7:17: 7:23
|
||||
// + literal: Const { ty: fn() -> S {S::new}, val: Value(Scalar(<ZST>)) }
|
||||
@ -22,37 +22,41 @@ fn main() -> () {
|
||||
|
||||
bb1: {
|
||||
_1 = move _2; // scope 0 at $DIR/box_expr.rs:7:13: 7:25
|
||||
drop(_2) -> bb2; // scope 0 at $DIR/box_expr.rs:7:24: 7:25
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageDead(_2); // scope 0 at $DIR/box_expr.rs:7:24: 7:25
|
||||
StorageLive(_3); // scope 1 at $DIR/box_expr.rs:8:5: 8:12
|
||||
StorageLive(_4); // scope 1 at $DIR/box_expr.rs:8:10: 8:11
|
||||
_4 = move _1; // scope 1 at $DIR/box_expr.rs:8:10: 8:11
|
||||
_3 = std::mem::drop::<Box<S>>(move _4) -> [return: bb2, unwind: bb4]; // scope 1 at $DIR/box_expr.rs:8:5: 8:12
|
||||
_3 = std::mem::drop::<Box<S>>(move _4) -> [return: bb3, unwind: bb5]; // scope 1 at $DIR/box_expr.rs:8:5: 8:12
|
||||
// mir::Constant
|
||||
// + span: $DIR/box_expr.rs:8:5: 8:9
|
||||
// + literal: Const { ty: fn(std::boxed::Box<S>) {std::mem::drop::<std::boxed::Box<S>>}, val: Value(Scalar(<ZST>)) }
|
||||
}
|
||||
|
||||
bb2: {
|
||||
bb3: {
|
||||
StorageDead(_4); // scope 1 at $DIR/box_expr.rs:8:11: 8:12
|
||||
StorageDead(_3); // scope 1 at $DIR/box_expr.rs:8:12: 8:13
|
||||
_0 = const (); // scope 0 at $DIR/box_expr.rs:6:11: 9:2
|
||||
drop(_1) -> bb3; // scope 0 at $DIR/box_expr.rs:9:1: 9:2
|
||||
drop(_1) -> bb4; // scope 0 at $DIR/box_expr.rs:9:1: 9:2
|
||||
}
|
||||
|
||||
bb3: {
|
||||
bb4: {
|
||||
StorageDead(_1); // scope 0 at $DIR/box_expr.rs:9:1: 9:2
|
||||
return; // scope 0 at $DIR/box_expr.rs:9:2: 9:2
|
||||
}
|
||||
|
||||
bb4 (cleanup): {
|
||||
drop(_1) -> bb6; // scope 0 at $DIR/box_expr.rs:9:1: 9:2
|
||||
}
|
||||
|
||||
bb5 (cleanup): {
|
||||
drop(_2) -> bb6; // scope 0 at $DIR/box_expr.rs:7:24: 7:25
|
||||
drop(_1) -> bb7; // scope 0 at $DIR/box_expr.rs:9:1: 9:2
|
||||
}
|
||||
|
||||
bb6 (cleanup): {
|
||||
drop(_2) -> bb7; // scope 0 at $DIR/box_expr.rs:7:24: 7:25
|
||||
}
|
||||
|
||||
bb7 (cleanup): {
|
||||
resume; // scope 0 at $DIR/box_expr.rs:6:1: 9:2
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ fn test() -> () {
|
||||
StorageLive(_3); // scope 2 at $DIR/issue-41110.rs:17:5: 17:12
|
||||
StorageLive(_4); // scope 2 at $DIR/issue-41110.rs:17:10: 17:11
|
||||
_4 = move _2; // scope 2 at $DIR/issue-41110.rs:17:10: 17:11
|
||||
_3 = std::mem::drop::<S>(move _4) -> [return: bb1, unwind: bb5]; // scope 2 at $DIR/issue-41110.rs:17:5: 17:12
|
||||
_3 = std::mem::drop::<S>(move _4) -> [return: bb1, unwind: bb7]; // scope 2 at $DIR/issue-41110.rs:17:5: 17:12
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41110.rs:17:5: 17:9
|
||||
// + literal: Const { ty: fn(S) {std::mem::drop::<S>}, val: Value(Scalar(<ZST>)) }
|
||||
@ -37,53 +37,61 @@ fn test() -> () {
|
||||
StorageLive(_5); // scope 2 at $DIR/issue-41110.rs:18:9: 18:10
|
||||
_6 = const false; // scope 2 at $DIR/issue-41110.rs:18:9: 18:10
|
||||
_5 = move _1; // scope 2 at $DIR/issue-41110.rs:18:9: 18:10
|
||||
goto -> bb9; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
goto -> bb11; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageDead(_5); // scope 2 at $DIR/issue-41110.rs:18:9: 18:10
|
||||
_0 = const (); // scope 0 at $DIR/issue-41110.rs:14:15: 19:2
|
||||
drop(_2) -> [return: bb3, unwind: bb6]; // scope 1 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
goto -> bb3; // scope 2 at $DIR/issue-41110.rs:18:9: 18:10
|
||||
}
|
||||
|
||||
bb3: {
|
||||
StorageDead(_2); // scope 1 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
goto -> bb4; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
StorageDead(_5); // scope 2 at $DIR/issue-41110.rs:18:9: 18:10
|
||||
_0 = const (); // scope 0 at $DIR/issue-41110.rs:14:15: 19:2
|
||||
drop(_2) -> [return: bb4, unwind: bb8]; // scope 1 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
}
|
||||
|
||||
bb4: {
|
||||
StorageDead(_2); // scope 1 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
goto -> bb5; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_6 = const false; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
StorageDead(_1); // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
return; // scope 0 at $DIR/issue-41110.rs:19:2: 19:2
|
||||
}
|
||||
|
||||
bb5 (cleanup): {
|
||||
goto -> bb6; // scope 1 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
}
|
||||
|
||||
bb6 (cleanup): {
|
||||
goto -> bb11; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
goto -> bb7; // scope 2 at $DIR/issue-41110.rs:18:9: 18:10
|
||||
}
|
||||
|
||||
bb7 (cleanup): {
|
||||
resume; // scope 0 at $DIR/issue-41110.rs:14:1: 19:2
|
||||
goto -> bb8; // scope 1 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
}
|
||||
|
||||
bb8 (cleanup): {
|
||||
_2 = move _5; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
goto -> bb5; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
goto -> bb13; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
}
|
||||
|
||||
bb9: {
|
||||
bb9 (cleanup): {
|
||||
resume; // scope 0 at $DIR/issue-41110.rs:14:1: 19:2
|
||||
}
|
||||
|
||||
bb10 (cleanup): {
|
||||
_2 = move _5; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
goto -> bb6; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
}
|
||||
|
||||
bb11: {
|
||||
_2 = move _5; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
goto -> bb2; // scope 2 at $DIR/issue-41110.rs:18:5: 18:6
|
||||
}
|
||||
|
||||
bb10 (cleanup): {
|
||||
drop(_1) -> bb7; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
bb12 (cleanup): {
|
||||
drop(_1) -> bb9; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
}
|
||||
|
||||
bb11 (cleanup): {
|
||||
switchInt(_6) -> [false: bb7, otherwise: bb10]; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
bb13 (cleanup): {
|
||||
switchInt(_6) -> [false: bb9, otherwise: bb12]; // scope 0 at $DIR/issue-41110.rs:19:1: 19:2
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ fn main() -> () {
|
||||
_8 = const false; // scope 0 at $DIR/issue-41888.rs:7:9: 7:10
|
||||
StorageLive(_1); // scope 0 at $DIR/issue-41888.rs:7:9: 7:10
|
||||
StorageLive(_2); // scope 1 at $DIR/issue-41888.rs:8:8: 8:14
|
||||
_2 = cond() -> [return: bb1, unwind: bb9]; // scope 1 at $DIR/issue-41888.rs:8:8: 8:14
|
||||
_2 = cond() -> [return: bb1, unwind: bb11]; // scope 1 at $DIR/issue-41888.rs:8:8: 8:14
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-41888.rs:8:8: 8:12
|
||||
// + literal: Const { ty: fn() -> bool {cond}, val: Value(Scalar(<ZST>)) }
|
||||
@ -42,40 +42,44 @@ fn main() -> () {
|
||||
_4 = K; // scope 1 at $DIR/issue-41888.rs:9:18: 9:19
|
||||
_3 = E::F(move _4); // scope 1 at $DIR/issue-41888.rs:9:13: 9:20
|
||||
StorageDead(_4); // scope 1 at $DIR/issue-41888.rs:9:19: 9:20
|
||||
goto -> bb12; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
goto -> bb14; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_0 = const (); // scope 1 at $DIR/issue-41888.rs:14:6: 14:6
|
||||
goto -> bb7; // scope 1 at $DIR/issue-41888.rs:8:5: 14:6
|
||||
goto -> bb8; // scope 1 at $DIR/issue-41888.rs:8:5: 14:6
|
||||
}
|
||||
|
||||
bb4: {
|
||||
StorageDead(_3); // scope 1 at $DIR/issue-41888.rs:9:19: 9:20
|
||||
_5 = discriminant(_1); // scope 1 at $DIR/issue-41888.rs:10:16: 10:24
|
||||
switchInt(move _5) -> [0_isize: bb6, otherwise: bb5]; // scope 1 at $DIR/issue-41888.rs:10:16: 10:24
|
||||
goto -> bb5; // scope 1 at $DIR/issue-41888.rs:9:19: 9:20
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_0 = const (); // scope 1 at $DIR/issue-41888.rs:13:10: 13:10
|
||||
goto -> bb7; // scope 1 at $DIR/issue-41888.rs:10:9: 13:10
|
||||
StorageDead(_3); // scope 1 at $DIR/issue-41888.rs:9:19: 9:20
|
||||
_5 = discriminant(_1); // scope 1 at $DIR/issue-41888.rs:10:16: 10:24
|
||||
switchInt(move _5) -> [0_isize: bb7, otherwise: bb6]; // scope 1 at $DIR/issue-41888.rs:10:16: 10:24
|
||||
}
|
||||
|
||||
bb6: {
|
||||
_0 = const (); // scope 1 at $DIR/issue-41888.rs:13:10: 13:10
|
||||
goto -> bb8; // scope 1 at $DIR/issue-41888.rs:10:9: 13:10
|
||||
}
|
||||
|
||||
bb7: {
|
||||
StorageLive(_6); // scope 1 at $DIR/issue-41888.rs:10:21: 10:23
|
||||
_9 = const false; // scope 1 at $DIR/issue-41888.rs:10:21: 10:23
|
||||
_6 = move ((_1 as F).0: K); // scope 1 at $DIR/issue-41888.rs:10:21: 10:23
|
||||
_0 = const (); // scope 2 at $DIR/issue-41888.rs:10:29: 13:10
|
||||
StorageDead(_6); // scope 1 at $DIR/issue-41888.rs:13:9: 13:10
|
||||
goto -> bb7; // scope 1 at $DIR/issue-41888.rs:10:9: 13:10
|
||||
}
|
||||
|
||||
bb7: {
|
||||
StorageDead(_2); // scope 1 at $DIR/issue-41888.rs:14:5: 14:6
|
||||
goto -> bb18; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
goto -> bb8; // scope 1 at $DIR/issue-41888.rs:10:9: 13:10
|
||||
}
|
||||
|
||||
bb8: {
|
||||
StorageDead(_2); // scope 1 at $DIR/issue-41888.rs:14:5: 14:6
|
||||
goto -> bb20; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb9: {
|
||||
_7 = const false; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
_8 = const false; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
_9 = const false; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
@ -83,23 +87,27 @@ fn main() -> () {
|
||||
return; // scope 0 at $DIR/issue-41888.rs:15:2: 15:2
|
||||
}
|
||||
|
||||
bb9 (cleanup): {
|
||||
goto -> bb10; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb10 (cleanup): {
|
||||
resume; // scope 0 at $DIR/issue-41888.rs:6:1: 15:2
|
||||
goto -> bb11; // scope 1 at $DIR/issue-41888.rs:9:19: 9:20
|
||||
}
|
||||
|
||||
bb11 (cleanup): {
|
||||
goto -> bb12; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb12 (cleanup): {
|
||||
resume; // scope 0 at $DIR/issue-41888.rs:6:1: 15:2
|
||||
}
|
||||
|
||||
bb13 (cleanup): {
|
||||
_7 = const true; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
_8 = const true; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
_9 = const true; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
_1 = move _3; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
goto -> bb9; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
goto -> bb10; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
}
|
||||
|
||||
bb12: {
|
||||
bb14: {
|
||||
_7 = const true; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
_8 = const true; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
_9 = const true; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
@ -107,38 +115,38 @@ fn main() -> () {
|
||||
goto -> bb4; // scope 1 at $DIR/issue-41888.rs:9:9: 9:10
|
||||
}
|
||||
|
||||
bb13: {
|
||||
_7 = const false; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
goto -> bb8; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb14 (cleanup): {
|
||||
goto -> bb10; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb15: {
|
||||
drop(_1) -> [return: bb13, unwind: bb10]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
_7 = const false; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
goto -> bb9; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb16 (cleanup): {
|
||||
drop(_1) -> bb10; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
goto -> bb12; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb17: {
|
||||
drop(_1) -> [return: bb15, unwind: bb12]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb18 (cleanup): {
|
||||
drop(_1) -> bb12; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb19: {
|
||||
_10 = discriminant(_1); // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _10) -> [0_isize: bb13, otherwise: bb15]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _10) -> [0_isize: bb15, otherwise: bb17]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb18: {
|
||||
switchInt(_7) -> [false: bb13, otherwise: bb17]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
bb20: {
|
||||
switchInt(_7) -> [false: bb15, otherwise: bb19]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb19 (cleanup): {
|
||||
bb21 (cleanup): {
|
||||
_11 = discriminant(_1); // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _11) -> [0_isize: bb14, otherwise: bb16]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
switchInt(move _11) -> [0_isize: bb16, otherwise: bb18]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
|
||||
bb20 (cleanup): {
|
||||
switchInt(_7) -> [false: bb10, otherwise: bb19]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
bb22 (cleanup): {
|
||||
switchInt(_7) -> [false: bb12, otherwise: bb21]; // scope 0 at $DIR/issue-41888.rs:15:1: 15:2
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ fn test() -> Option<Box<u32>> {
|
||||
StorageLive(_3); // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
|
||||
StorageLive(_4); // scope 0 at $DIR/issue-62289.rs:9:15: 9:19
|
||||
_4 = Option::<u32>::None; // scope 0 at $DIR/issue-62289.rs:9:15: 9:19
|
||||
_3 = <Option<u32> as Try>::into_result(move _4) -> [return: bb1, unwind: bb9]; // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
|
||||
_3 = <Option<u32> as Try>::into_result(move _4) -> [return: bb1, unwind: bb12]; // scope 0 at $DIR/issue-62289.rs:9:15: 9:20
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-62289.rs:9:15: 9:20
|
||||
// + literal: Const { ty: fn(std::option::Option<u32>) -> std::result::Result<<std::option::Option<u32> as std::ops::Try>::Ok, <std::option::Option<u32> as std::ops::Try>::Error> {<std::option::Option<u32> as std::ops::Try>::into_result}, val: Value(Scalar(<ZST>)) }
|
||||
@ -48,11 +48,7 @@ fn test() -> Option<Box<u32>> {
|
||||
(*_2) = _10; // scope 4 at $DIR/issue-62289.rs:9:15: 9:20
|
||||
StorageDead(_10); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
_1 = move _2; // scope 0 at $DIR/issue-62289.rs:9:10: 9:21
|
||||
StorageDead(_2); // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
_0 = Option::<Box<u32>>::Some(move _1); // scope 0 at $DIR/issue-62289.rs:9:5: 9:22
|
||||
StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
|
||||
StorageDead(_3); // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
|
||||
goto -> bb8; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
|
||||
drop(_2) -> [return: bb7, unwind: bb11]; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
}
|
||||
|
||||
bb3: {
|
||||
@ -65,7 +61,7 @@ fn test() -> Option<Box<u32>> {
|
||||
StorageLive(_8); // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
StorageLive(_9); // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
_9 = _6; // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
_8 = <NoneError as From<NoneError>>::from(move _9) -> [return: bb5, unwind: bb9]; // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
_8 = <NoneError as From<NoneError>>::from(move _9) -> [return: bb5, unwind: bb12]; // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-62289.rs:9:19: 9:20
|
||||
// + literal: Const { ty: fn(std::option::NoneError) -> std::option::NoneError {<std::option::NoneError as std::convert::From<std::option::NoneError>>::from}, val: Value(Scalar(<ZST>)) }
|
||||
@ -73,7 +69,7 @@ fn test() -> Option<Box<u32>> {
|
||||
|
||||
bb5: {
|
||||
StorageDead(_9); // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
_0 = <Option<Box<u32>> as Try>::from_error(move _8) -> [return: bb6, unwind: bb9]; // scope 2 at $DIR/issue-62289.rs:9:15: 9:20
|
||||
_0 = <Option<Box<u32>> as Try>::from_error(move _8) -> [return: bb6, unwind: bb12]; // scope 2 at $DIR/issue-62289.rs:9:15: 9:20
|
||||
// mir::Constant
|
||||
// + span: $DIR/issue-62289.rs:9:15: 9:20
|
||||
// + literal: Const { ty: fn(<std::option::Option<std::boxed::Box<u32>> as std::ops::Try>::Error) -> std::option::Option<std::boxed::Box<u32>> {<std::option::Option<std::boxed::Box<u32>> as std::ops::Try>::from_error}, val: Value(Scalar(<ZST>)) }
|
||||
@ -82,25 +78,41 @@ fn test() -> Option<Box<u32>> {
|
||||
bb6: {
|
||||
StorageDead(_8); // scope 2 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
StorageDead(_6); // scope 0 at $DIR/issue-62289.rs:9:19: 9:20
|
||||
drop(_2) -> bb7; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
drop(_2) -> bb9; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
}
|
||||
|
||||
bb7: {
|
||||
StorageDead(_2); // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
|
||||
StorageDead(_3); // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
|
||||
goto -> bb8; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
|
||||
_0 = Option::<Box<u32>>::Some(move _1); // scope 0 at $DIR/issue-62289.rs:9:5: 9:22
|
||||
drop(_1) -> bb8; // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
|
||||
}
|
||||
|
||||
bb8: {
|
||||
StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
|
||||
StorageDead(_3); // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
|
||||
goto -> bb10; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
|
||||
}
|
||||
|
||||
bb9: {
|
||||
StorageDead(_2); // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
|
||||
StorageDead(_3); // scope 0 at $DIR/issue-62289.rs:10:1: 10:2
|
||||
goto -> bb10; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
|
||||
}
|
||||
|
||||
bb10: {
|
||||
return; // scope 0 at $DIR/issue-62289.rs:10:2: 10:2
|
||||
}
|
||||
|
||||
bb9 (cleanup): {
|
||||
drop(_2) -> bb10; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
bb11 (cleanup): {
|
||||
drop(_1) -> bb13; // scope 0 at $DIR/issue-62289.rs:9:21: 9:22
|
||||
}
|
||||
|
||||
bb10 (cleanup): {
|
||||
bb12 (cleanup): {
|
||||
drop(_2) -> bb13; // scope 0 at $DIR/issue-62289.rs:9:20: 9:21
|
||||
}
|
||||
|
||||
bb13 (cleanup): {
|
||||
resume; // scope 0 at $DIR/issue-62289.rs:8:1: 10:2
|
||||
}
|
||||
}
|
||||
|
@ -22,38 +22,62 @@ fn move_out_by_subslice() -> () {
|
||||
_3 = Box(i32); // scope 0 at $DIR/uniform_array_move_out.rs:11:14: 11:19
|
||||
(*_3) = const 1_i32; // scope 0 at $DIR/uniform_array_move_out.rs:11:18: 11:19
|
||||
_2 = move _3; // scope 0 at $DIR/uniform_array_move_out.rs:11:14: 11:19
|
||||
drop(_3) -> [return: bb1, unwind: bb9]; // scope 0 at $DIR/uniform_array_move_out.rs:11:18: 11:19
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageDead(_3); // scope 0 at $DIR/uniform_array_move_out.rs:11:18: 11:19
|
||||
StorageLive(_4); // scope 0 at $DIR/uniform_array_move_out.rs:11:21: 11:26
|
||||
StorageLive(_5); // scope 0 at $DIR/uniform_array_move_out.rs:11:21: 11:26
|
||||
_5 = Box(i32); // scope 0 at $DIR/uniform_array_move_out.rs:11:21: 11:26
|
||||
(*_5) = const 2_i32; // scope 0 at $DIR/uniform_array_move_out.rs:11:25: 11:26
|
||||
_4 = move _5; // scope 0 at $DIR/uniform_array_move_out.rs:11:21: 11:26
|
||||
drop(_5) -> [return: bb2, unwind: bb8]; // scope 0 at $DIR/uniform_array_move_out.rs:11:25: 11:26
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageDead(_5); // scope 0 at $DIR/uniform_array_move_out.rs:11:25: 11:26
|
||||
_1 = [move _2, move _4]; // scope 0 at $DIR/uniform_array_move_out.rs:11:13: 11:27
|
||||
drop(_4) -> [return: bb3, unwind: bb9]; // scope 0 at $DIR/uniform_array_move_out.rs:11:26: 11:27
|
||||
}
|
||||
|
||||
bb3: {
|
||||
StorageDead(_4); // scope 0 at $DIR/uniform_array_move_out.rs:11:26: 11:27
|
||||
drop(_2) -> [return: bb4, unwind: bb10]; // scope 0 at $DIR/uniform_array_move_out.rs:11:26: 11:27
|
||||
}
|
||||
|
||||
bb4: {
|
||||
StorageDead(_2); // scope 0 at $DIR/uniform_array_move_out.rs:11:26: 11:27
|
||||
FakeRead(ForLet, _1); // scope 0 at $DIR/uniform_array_move_out.rs:11:9: 11:10
|
||||
StorageLive(_6); // scope 1 at $DIR/uniform_array_move_out.rs:12:10: 12:17
|
||||
_6 = move _1[0..2]; // scope 1 at $DIR/uniform_array_move_out.rs:12:10: 12:17
|
||||
_0 = const (); // scope 0 at $DIR/uniform_array_move_out.rs:10:27: 13:2
|
||||
drop(_6) -> [return: bb1, unwind: bb3]; // scope 1 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
drop(_6) -> [return: bb5, unwind: bb7]; // scope 1 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
}
|
||||
|
||||
bb1: {
|
||||
bb5: {
|
||||
StorageDead(_6); // scope 1 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
drop(_1) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
drop(_1) -> [return: bb6, unwind: bb10]; // scope 0 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
}
|
||||
|
||||
bb2: {
|
||||
bb6: {
|
||||
StorageDead(_1); // scope 0 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
return; // scope 0 at $DIR/uniform_array_move_out.rs:13:2: 13:2
|
||||
}
|
||||
|
||||
bb3 (cleanup): {
|
||||
drop(_1) -> bb4; // scope 0 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
bb7 (cleanup): {
|
||||
drop(_1) -> bb10; // scope 0 at $DIR/uniform_array_move_out.rs:13:1: 13:2
|
||||
}
|
||||
|
||||
bb4 (cleanup): {
|
||||
bb8 (cleanup): {
|
||||
drop(_4) -> bb9; // scope 0 at $DIR/uniform_array_move_out.rs:11:26: 11:27
|
||||
}
|
||||
|
||||
bb9 (cleanup): {
|
||||
drop(_2) -> bb10; // scope 0 at $DIR/uniform_array_move_out.rs:11:26: 11:27
|
||||
}
|
||||
|
||||
bb10 (cleanup): {
|
||||
resume; // scope 0 at $DIR/uniform_array_move_out.rs:10:1: 13:2
|
||||
}
|
||||
}
|
||||
|
@ -22,38 +22,62 @@ fn move_out_from_end() -> () {
|
||||
_3 = Box(i32); // scope 0 at $DIR/uniform_array_move_out.rs:5:14: 5:19
|
||||
(*_3) = const 1_i32; // scope 0 at $DIR/uniform_array_move_out.rs:5:18: 5:19
|
||||
_2 = move _3; // scope 0 at $DIR/uniform_array_move_out.rs:5:14: 5:19
|
||||
drop(_3) -> [return: bb1, unwind: bb9]; // scope 0 at $DIR/uniform_array_move_out.rs:5:18: 5:19
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageDead(_3); // scope 0 at $DIR/uniform_array_move_out.rs:5:18: 5:19
|
||||
StorageLive(_4); // scope 0 at $DIR/uniform_array_move_out.rs:5:21: 5:26
|
||||
StorageLive(_5); // scope 0 at $DIR/uniform_array_move_out.rs:5:21: 5:26
|
||||
_5 = Box(i32); // scope 0 at $DIR/uniform_array_move_out.rs:5:21: 5:26
|
||||
(*_5) = const 2_i32; // scope 0 at $DIR/uniform_array_move_out.rs:5:25: 5:26
|
||||
_4 = move _5; // scope 0 at $DIR/uniform_array_move_out.rs:5:21: 5:26
|
||||
drop(_5) -> [return: bb2, unwind: bb8]; // scope 0 at $DIR/uniform_array_move_out.rs:5:25: 5:26
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageDead(_5); // scope 0 at $DIR/uniform_array_move_out.rs:5:25: 5:26
|
||||
_1 = [move _2, move _4]; // scope 0 at $DIR/uniform_array_move_out.rs:5:13: 5:27
|
||||
drop(_4) -> [return: bb3, unwind: bb9]; // scope 0 at $DIR/uniform_array_move_out.rs:5:26: 5:27
|
||||
}
|
||||
|
||||
bb3: {
|
||||
StorageDead(_4); // scope 0 at $DIR/uniform_array_move_out.rs:5:26: 5:27
|
||||
drop(_2) -> [return: bb4, unwind: bb10]; // scope 0 at $DIR/uniform_array_move_out.rs:5:26: 5:27
|
||||
}
|
||||
|
||||
bb4: {
|
||||
StorageDead(_2); // scope 0 at $DIR/uniform_array_move_out.rs:5:26: 5:27
|
||||
FakeRead(ForLet, _1); // scope 0 at $DIR/uniform_array_move_out.rs:5:9: 5:10
|
||||
StorageLive(_6); // scope 1 at $DIR/uniform_array_move_out.rs:6:14: 6:16
|
||||
_6 = move _1[1 of 2]; // scope 1 at $DIR/uniform_array_move_out.rs:6:14: 6:16
|
||||
_0 = const (); // scope 0 at $DIR/uniform_array_move_out.rs:4:24: 7:2
|
||||
drop(_6) -> [return: bb1, unwind: bb3]; // scope 1 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
drop(_6) -> [return: bb5, unwind: bb7]; // scope 1 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
}
|
||||
|
||||
bb1: {
|
||||
bb5: {
|
||||
StorageDead(_6); // scope 1 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
drop(_1) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
drop(_1) -> [return: bb6, unwind: bb10]; // scope 0 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
}
|
||||
|
||||
bb2: {
|
||||
bb6: {
|
||||
StorageDead(_1); // scope 0 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
return; // scope 0 at $DIR/uniform_array_move_out.rs:7:2: 7:2
|
||||
}
|
||||
|
||||
bb3 (cleanup): {
|
||||
drop(_1) -> bb4; // scope 0 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
bb7 (cleanup): {
|
||||
drop(_1) -> bb10; // scope 0 at $DIR/uniform_array_move_out.rs:7:1: 7:2
|
||||
}
|
||||
|
||||
bb4 (cleanup): {
|
||||
bb8 (cleanup): {
|
||||
drop(_4) -> bb9; // scope 0 at $DIR/uniform_array_move_out.rs:5:26: 5:27
|
||||
}
|
||||
|
||||
bb9 (cleanup): {
|
||||
drop(_2) -> bb10; // scope 0 at $DIR/uniform_array_move_out.rs:5:26: 5:27
|
||||
}
|
||||
|
||||
bb10 (cleanup): {
|
||||
resume; // scope 0 at $DIR/uniform_array_move_out.rs:4:1: 7:2
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user