diff options
| author | Wesley Wiser <wwiser@gmail.com> | 2019-06-12 21:06:07 -0400 |
|---|---|---|
| committer | Wesley Wiser <wwiser@gmail.com> | 2019-06-20 21:12:10 -0400 |
| commit | 573b61ae265c54a94fc33d9db6005a4c74a238da (patch) | |
| tree | d136c48e52f2bedc54c38ce3a63bd684e2dd1083 | |
| parent | 1d9981f04e8957345205c07adc2742886420ac37 (diff) | |
| download | rust-573b61ae265c54a94fc33d9db6005a4c74a238da.tar.gz rust-573b61ae265c54a94fc33d9db6005a4c74a238da.zip | |
[const-prop] Introduce getter/setter functions
| -rw-r--r-- | src/librustc_mir/transform/const_prop.rs | 16 |
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(_) => {} |
