about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWesley Wiser <wwiser@gmail.com>2019-06-12 21:06:07 -0400
committerWesley Wiser <wwiser@gmail.com>2019-06-20 21:12:10 -0400
commit573b61ae265c54a94fc33d9db6005a4c74a238da (patch)
treed136c48e52f2bedc54c38ce3a63bd684e2dd1083
parent1d9981f04e8957345205c07adc2742886420ac37 (diff)
downloadrust-573b61ae265c54a94fc33d9db6005a4c74a238da.tar.gz
rust-573b61ae265c54a94fc33d9db6005a4c74a238da.zip
[const-prop] Introduce getter/setter functions
-rw-r--r--src/librustc_mir/transform/const_prop.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/librustc_mir/transform/const_prop.rs b/src/librustc_mir/transform/const_prop.rs
index 5b567512a7b..830f8239a09 100644
--- a/src/librustc_mir/transform/const_prop.rs
+++ b/src/librustc_mir/transform/const_prop.rs
@@ -147,6 +147,14 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
         }
     }
 
+    fn get_const(&self, local: Local) -> Option<Const<'tcx>> {
+        self.places[local]
+    }
+
+    fn set_const(&mut self, local: Local, c: Option<Const<'tcx>>) {
+        self.places[local] = c;
+    }
+
     fn use_ecx<F, T>(
         &mut self,
         source_info: SourceInfo,
@@ -296,7 +304,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> {
         trace!("eval_place(place={:?})", place);
         place.iterate(|place_base, place_projection| {
             let mut eval = match place_base {
-                PlaceBase::Local(loc) => self.places[*loc].clone()?,
+                PlaceBase::Local(loc) => self.get_const(*loc).clone()?,
                 PlaceBase::Static(box Static {kind: StaticKind::Promoted(promoted), ..}) => {
                     let generics = self.tcx.generics_of(self.source.def_id());
                     if generics.requires_monomorphization(self.tcx) {
@@ -699,8 +707,8 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> {
                         trace!("checking whether {:?} can be stored to {:?}", value, local);
                         if self.can_const_prop[local] {
                             trace!("storing {:?} to {:?}", value, local);
-                            assert!(self.places[local].is_none());
-                            self.places[local] = Some(value);
+                            assert!(self.get_const(local).is_none());
+                            self.set_const(local, Some(value));
 
                             if self.should_const_prop() {
                                 self.replace_with_const(
@@ -740,7 +748,7 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> {
                                     place = &proj.base;
                                 }
                                 if let Place::Base(PlaceBase::Local(local)) = *place {
-                                    self.places[local] = None;
+                                    self.set_const(local, None);
                                 }
                             },
                             Operand::Constant(_) => {}