diff options
| -rw-r--r-- | compiler/rustc_mir/src/transform/instcombine.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/compiler/rustc_mir/src/transform/instcombine.rs b/compiler/rustc_mir/src/transform/instcombine.rs index b36633fbfb3..04ea2bb542e 100644 --- a/compiler/rustc_mir/src/transform/instcombine.rs +++ b/compiler/rustc_mir/src/transform/instcombine.rs @@ -29,8 +29,10 @@ impl<'tcx> MirPass<'tcx> for InstCombine { optimization_finder.optimizations }; - // Then carry out those optimizations. - MutVisitor::visit_body(&mut InstCombineVisitor { optimizations, tcx }, body); + if !optimizations.is_empty() { + // Then carry out those optimizations. + MutVisitor::visit_body(&mut InstCombineVisitor { optimizations, tcx }, body); + } } } @@ -296,3 +298,12 @@ struct OptimizationList<'tcx> { unneeded_equality_comparison: FxHashMap<Location, Operand<'tcx>>, unneeded_deref: FxHashMap<Location, Place<'tcx>>, } + +impl<'tcx> OptimizationList<'tcx> { + fn is_empty(&self) -> bool { + self.and_stars.is_empty() + && self.arrays_lengths.is_empty() + && self.unneeded_equality_comparison.is_empty() + && self.unneeded_deref.is_empty() + } +} |
