File tree Expand file tree Collapse file tree 1 file changed +10
-8
lines changed
compiler/rustc_mir_transform/src Expand file tree Collapse file tree 1 file changed +10
-8
lines changed Original file line number Diff line number Diff line change @@ -33,24 +33,26 @@ impl<'tcx> crate::MirPass<'tcx> for CopyProp {
33
33
debug!(borrowed_locals = ?ssa.borrowed_locals());
34
34
debug!(copy_classes = ?ssa.copy_classes());
35
35
36
- let fully_moved = fully_moved_locals(&ssa, body);
37
- debug!(?fully_moved);
38
-
39
- let mut storage_to_remove = DenseBitSet::new_empty(fully_moved.domain_size());
36
+ let mut any_replacement = false;
37
+ let mut storage_to_remove = DenseBitSet::new_empty(body.local_decls.len());
40
38
for (local, &head) in ssa.copy_classes().iter_enumerated() {
41
39
if local != head {
40
+ any_replacement = true;
42
41
storage_to_remove.insert(head);
43
42
}
44
43
}
45
44
46
- let any_replacement = ssa.copy_classes().iter_enumerated().any(|(l, &h)| l != h);
45
+ if !any_replacement {
46
+ return;
47
+ }
48
+
49
+ let fully_moved = fully_moved_locals(&ssa, body);
50
+ debug!(?fully_moved);
47
51
48
52
Replacer { tcx, copy_classes: ssa.copy_classes(), fully_moved, storage_to_remove }
49
53
.visit_body_preserves_cfg(body);
50
54
51
- if any_replacement {
52
- crate::simplify::remove_unused_definitions(body);
53
- }
55
+ crate::simplify::remove_unused_definitions(body);
54
56
}
55
57
56
58
fn is_required(&self) -> bool {
You can’t perform that action at this time.
0 commit comments