Rollup merge of #86362 - ptrojahn:insert_vars_and_temps, r=jackh726
Avoid cloning LocalDecls
This commit is contained in:
commit
175c8cb851
2 changed files with 6 additions and 7 deletions
|
@ -426,6 +426,11 @@ impl<'tcx> Body<'tcx> {
|
||||||
(arg_count + 1..local_count).map(Local::new)
|
(arg_count + 1..local_count).map(Local::new)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn drain_vars_and_temps<'a>(&'a mut self) -> impl Iterator<Item = LocalDecl<'tcx>> + 'a {
|
||||||
|
self.local_decls.drain(self.arg_count + 1..)
|
||||||
|
}
|
||||||
|
|
||||||
/// Changes a statement to a nop. This is both faster than deleting instructions and avoids
|
/// Changes a statement to a nop. This is both faster than deleting instructions and avoids
|
||||||
/// invalidating statement indices in `Location`s.
|
/// invalidating statement indices in `Location`s.
|
||||||
pub fn make_statement_nop(&mut self, location: Location) {
|
pub fn make_statement_nop(&mut self, location: Location) {
|
||||||
|
|
|
@ -607,13 +607,7 @@ impl Inliner<'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Insert all of the (mapped) parts of the callee body into the caller.
|
// Insert all of the (mapped) parts of the callee body into the caller.
|
||||||
caller_body.local_decls.extend(
|
caller_body.local_decls.extend(callee_body.drain_vars_and_temps());
|
||||||
// FIXME(eddyb) make `Range<Local>` iterable so that we can use
|
|
||||||
// `callee_body.local_decls.drain(callee_body.vars_and_temps())`
|
|
||||||
callee_body
|
|
||||||
.vars_and_temps_iter()
|
|
||||||
.map(|local| callee_body.local_decls[local].clone()),
|
|
||||||
);
|
|
||||||
caller_body.source_scopes.extend(&mut callee_body.source_scopes.drain(..));
|
caller_body.source_scopes.extend(&mut callee_body.source_scopes.drain(..));
|
||||||
caller_body.var_debug_info.append(&mut callee_body.var_debug_info);
|
caller_body.var_debug_info.append(&mut callee_body.var_debug_info);
|
||||||
caller_body.basic_blocks_mut().extend(callee_body.basic_blocks_mut().drain(..));
|
caller_body.basic_blocks_mut().extend(callee_body.basic_blocks_mut().drain(..));
|
||||||
|
|
Loading…
Add table
Reference in a new issue