This commit is contained in:
bjorn3 2025-02-08 22:12:13 +00:00
parent 3183b44a1e
commit 1fcae03369
287 changed files with 5888 additions and 4608 deletions

View file

@ -233,12 +233,15 @@ where
.patch_terminator(bb, TerminatorKind::Goto { target: self.succ });
}
DropStyle::Static => {
self.elaborator.patch().patch_terminator(bb, TerminatorKind::Drop {
place: self.place,
target: self.succ,
unwind: self.unwind.into_action(),
replace: false,
});
self.elaborator.patch().patch_terminator(
bb,
TerminatorKind::Drop {
place: self.place,
target: self.succ,
unwind: self.unwind.into_action(),
replace: false,
},
);
}
DropStyle::Conditional => {
let drop_bb = self.complete_drop(self.succ, self.unwind);
@ -729,12 +732,15 @@ where
};
let loop_block = self.elaborator.patch().new_block(loop_block);
self.elaborator.patch().patch_terminator(drop_block, TerminatorKind::Drop {
place: tcx.mk_place_deref(ptr),
target: loop_block,
unwind: unwind.into_action(),
replace: false,
});
self.elaborator.patch().patch_terminator(
drop_block,
TerminatorKind::Drop {
place: tcx.mk_place_deref(ptr),
target: loop_block,
unwind: unwind.into_action(),
replace: false,
},
);
loop_block
}

View file

@ -305,10 +305,11 @@ impl Direction for Forward {
// `exit_state`, so pass it directly to `apply_switch_int_edge_effect` to save
// a clone of the dataflow state.
let otherwise = targets.otherwise();
analysis.apply_switch_int_edge_effect(&mut data, exit_state, SwitchIntTarget {
value: None,
target: otherwise,
});
analysis.apply_switch_int_edge_effect(
&mut data,
exit_state,
SwitchIntTarget { value: None, target: otherwise },
);
propagate(otherwise, exit_state);
} else {
for target in targets.all_targets() {

View file

@ -670,10 +670,10 @@ where
r#"<td colspan="{colspan}" {fmt} align="left">{state}</td>"#,
colspan = this.style.num_state_columns(),
fmt = fmt,
state = dot::escape_html(&format!("{:?}", DebugWithAdapter {
this: state,
ctxt: analysis
})),
state = dot::escape_html(&format!(
"{:?}",
DebugWithAdapter { this: state, ctxt: analysis }
)),
)
})
}

View file

@ -30,26 +30,32 @@ fn mock_body<'tcx>() -> mir::Body<'tcx> {
block(4, mir::TerminatorKind::Return);
block(1, mir::TerminatorKind::Return);
block(2, mir::TerminatorKind::Call {
func: mir::Operand::Copy(dummy_place.clone()),
args: [].into(),
destination: dummy_place.clone(),
target: Some(mir::START_BLOCK),
unwind: mir::UnwindAction::Continue,
call_source: mir::CallSource::Misc,
fn_span: DUMMY_SP,
});
block(
2,
mir::TerminatorKind::Call {
func: mir::Operand::Copy(dummy_place.clone()),
args: [].into(),
destination: dummy_place.clone(),
target: Some(mir::START_BLOCK),
unwind: mir::UnwindAction::Continue,
call_source: mir::CallSource::Misc,
fn_span: DUMMY_SP,
},
);
block(3, mir::TerminatorKind::Return);
block(0, mir::TerminatorKind::Return);
block(4, mir::TerminatorKind::Call {
func: mir::Operand::Copy(dummy_place.clone()),
args: [].into(),
destination: dummy_place.clone(),
target: Some(mir::START_BLOCK),
unwind: mir::UnwindAction::Continue,
call_source: mir::CallSource::Misc,
fn_span: DUMMY_SP,
});
block(
4,
mir::TerminatorKind::Call {
func: mir::Operand::Copy(dummy_place.clone()),
args: [].into(),
destination: dummy_place.clone(),
target: Some(mir::START_BLOCK),
unwind: mir::UnwindAction::Continue,
call_source: mir::CallSource::Misc,
fn_span: DUMMY_SP,
},
);
mir::Body::new_cfg_only(blocks)
}