Remove DesugaringKind::Replace.
This commit is contained in:
parent
d300bffa4f
commit
844c1cc5fe
26 changed files with 78 additions and 82 deletions
|
@ -80,7 +80,7 @@ fn add_move_for_packed_drop<'tcx>(
|
|||
is_cleanup: bool,
|
||||
) {
|
||||
debug!("add_move_for_packed_drop({:?} @ {:?})", terminator, loc);
|
||||
let TerminatorKind::Drop { ref place, target, unwind } = terminator.kind else {
|
||||
let TerminatorKind::Drop { ref place, target, unwind, replace } = terminator.kind else {
|
||||
unreachable!();
|
||||
};
|
||||
|
||||
|
@ -98,6 +98,11 @@ fn add_move_for_packed_drop<'tcx>(
|
|||
patch.add_assign(loc, Place::from(temp), Rvalue::Use(Operand::Move(*place)));
|
||||
patch.patch_terminator(
|
||||
loc.block,
|
||||
TerminatorKind::Drop { place: Place::from(temp), target: storage_dead_block, unwind },
|
||||
TerminatorKind::Drop {
|
||||
place: Place::from(temp),
|
||||
target: storage_dead_block,
|
||||
unwind,
|
||||
replace,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ use rustc_mir_dataflow::un_derefer::UnDerefer;
|
|||
use rustc_mir_dataflow::MoveDataParamEnv;
|
||||
use rustc_mir_dataflow::{on_all_children_bits, on_all_drop_children_bits};
|
||||
use rustc_mir_dataflow::{Analysis, ResultsCursor};
|
||||
use rustc_span::{DesugaringKind, Span};
|
||||
use rustc_span::Span;
|
||||
use rustc_target::abi::{FieldIdx, VariantIdx};
|
||||
use std::fmt;
|
||||
|
||||
|
@ -401,7 +401,7 @@ impl<'b, 'tcx> ElaborateDropsCtxt<'b, 'tcx> {
|
|||
let terminator = data.terminator();
|
||||
|
||||
match terminator.kind {
|
||||
TerminatorKind::Drop { mut place, target, unwind } => {
|
||||
TerminatorKind::Drop { mut place, target, unwind, replace } => {
|
||||
if let Some(new_place) = self.un_derefer.derefer(place.as_ref(), self.body) {
|
||||
place = new_place;
|
||||
}
|
||||
|
@ -434,10 +434,7 @@ impl<'b, 'tcx> ElaborateDropsCtxt<'b, 'tcx> {
|
|||
)
|
||||
}
|
||||
LookupResult::Parent(..) => {
|
||||
if !matches!(
|
||||
terminator.source_info.span.desugaring_kind(),
|
||||
Some(DesugaringKind::Replace),
|
||||
) {
|
||||
if !replace {
|
||||
self.tcx.sess.delay_span_bug(
|
||||
terminator.source_info.span,
|
||||
format!("drop of untracked value {:?}", bb),
|
||||
|
|
|
@ -1045,7 +1045,10 @@ fn elaborate_generator_drops<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
|||
|
||||
for (block, block_data) in body.basic_blocks.iter_enumerated() {
|
||||
let (target, unwind, source_info) = match block_data.terminator() {
|
||||
Terminator { source_info, kind: TerminatorKind::Drop { place, target, unwind } } => {
|
||||
Terminator {
|
||||
source_info,
|
||||
kind: TerminatorKind::Drop { place, target, unwind, replace: _ },
|
||||
} => {
|
||||
if let Some(local) = place.as_local() {
|
||||
if local == SELF_ARG {
|
||||
(target, unwind, source_info)
|
||||
|
@ -1304,6 +1307,7 @@ fn insert_clean_drop(body: &mut Body<'_>) -> BasicBlock {
|
|||
place: Place::from(SELF_ARG),
|
||||
target: return_block,
|
||||
unwind: UnwindAction::Continue,
|
||||
replace: false,
|
||||
};
|
||||
let source_info = SourceInfo::outermost(body.span);
|
||||
|
||||
|
|
|
@ -450,7 +450,7 @@ impl<'tcx> Inliner<'tcx> {
|
|||
checker.visit_basic_block_data(bb, blk);
|
||||
|
||||
let term = blk.terminator();
|
||||
if let TerminatorKind::Drop { ref place, target, unwind } = term.kind {
|
||||
if let TerminatorKind::Drop { ref place, target, unwind, replace: _ } = term.kind {
|
||||
work_list.push(target);
|
||||
|
||||
// If the place doesn't actually need dropping, treat it like a regular goto.
|
||||
|
@ -458,8 +458,8 @@ impl<'tcx> Inliner<'tcx> {
|
|||
.callee
|
||||
.subst_mir(self.tcx, ty::EarlyBinder(&place.ty(callee_body, tcx).ty));
|
||||
if ty.needs_drop(tcx, self.param_env) && let UnwindAction::Cleanup(unwind) = unwind {
|
||||
work_list.push(unwind);
|
||||
}
|
||||
work_list.push(unwind);
|
||||
}
|
||||
} else if callee_attrs.instruction_set != self.codegen_fn_attrs.instruction_set
|
||||
&& matches!(term.kind, TerminatorKind::InlineAsm { .. })
|
||||
{
|
||||
|
|
|
@ -544,6 +544,7 @@ impl<'tcx> CloneShimBuilder<'tcx> {
|
|||
place: dest_field,
|
||||
target: unwind,
|
||||
unwind: UnwindAction::Terminate,
|
||||
replace: false,
|
||||
},
|
||||
true,
|
||||
);
|
||||
|
@ -800,6 +801,7 @@ fn build_call_shim<'tcx>(
|
|||
place: rcvr_place(),
|
||||
target: BasicBlock::new(2),
|
||||
unwind: UnwindAction::Continue,
|
||||
replace: false,
|
||||
},
|
||||
false,
|
||||
);
|
||||
|
@ -815,6 +817,7 @@ fn build_call_shim<'tcx>(
|
|||
place: rcvr_place(),
|
||||
target: BasicBlock::new(4),
|
||||
unwind: UnwindAction::Terminate,
|
||||
replace: false,
|
||||
},
|
||||
true,
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue