about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSantiago Pastorino <spastorino@gmail.com>2020-04-21 15:53:00 -0300
committerSantiago Pastorino <spastorino@gmail.com>2020-04-23 16:50:18 -0300
commitf925a03eadf5e875b36efaa1c5cc56aa0be78548 (patch)
tree9180a697f315028485535e29a46b9be421a5dadf
parent0107cecc01cf28bd298e33b44d6bacba6e4b3d77 (diff)
downloadrust-f925a03eadf5e875b36efaa1c5cc56aa0be78548.tar.gz
rust-f925a03eadf5e875b36efaa1c5cc56aa0be78548.zip
Make ConstPropagator only visit basic blocks when visiting body
Avoid exercising unevaluated constants and go straight to visit the
blocks.
-rw-r--r--src/librustc_mir/transform/const_prop.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs
index beabdf7f784..5b415cb806a 100644
--- a/src/librustc_mir/transform/const_prop.rs
+++ b/src/librustc_mir/transform/const_prop.rs
@@ -833,6 +833,12 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> {
         self.tcx
     }
 
+    fn visit_body(&mut self, body: &mut Body<'tcx>) {
+        for (bb, data) in body.basic_blocks_mut().iter_enumerated_mut() {
+            self.visit_basic_block_data(bb, data);
+        }
+    }
+
     fn visit_constant(&mut self, constant: &mut Constant<'tcx>, location: Location) {
         trace!("visit_constant: {:?}", constant);
         self.super_constant(constant, location);