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