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 {
3333 debug ! ( borrowed_locals = ?ssa. borrowed_locals( ) ) ;
3434 debug ! ( copy_classes = ?ssa. copy_classes( ) ) ;
3535
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 ( ) ) ;
4038 for ( local, & head) in ssa. copy_classes ( ) . iter_enumerated ( ) {
4139 if local != head {
40+ any_replacement = true ;
4241 storage_to_remove. insert ( head) ;
4342 }
4443 }
4544
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) ;
4751
4852 Replacer { tcx, copy_classes : ssa. copy_classes ( ) , fully_moved, storage_to_remove }
4953 . visit_body_preserves_cfg ( body) ;
5054
51- if any_replacement {
52- crate :: simplify:: remove_unused_definitions ( body) ;
53- }
55+ crate :: simplify:: remove_unused_definitions ( body) ;
5456 }
5557
5658 fn is_required ( & self ) -> bool {
You can’t perform that action at this time.
0 commit comments