From 3d5a1e330fb48c5f64b078cf755cbb44ee73343e Mon Sep 17 00:00:00 2001 From: Simon Vandel Sillesen Date: Sun, 15 Nov 2020 22:34:50 +0100 Subject: [PATCH] Only go through the body if something can be optimized --- compiler/rustc_mir/src/transform/instcombine.rs | 15 +++++++++++++-- 1 file 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>, unneeded_deref: FxHashMap>, } + +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() + } +}