diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2023-07-01 09:41:06 +0000 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2023-07-10 16:01:19 +0000 |
| commit | b4c342edea675e5dce844e90af276a4e79834e3b (patch) | |
| tree | 54ded925f9a089d83363c31b41bfc2108fe70a63 | |
| parent | 6d7304167c204c813a8c45d4abcf1a1ee5cddae4 (diff) | |
| download | rust-b4c342edea675e5dce844e90af276a4e79834e3b.tar.gz rust-b4c342edea675e5dce844e90af276a4e79834e3b.zip | |
Simplify visit_place.
| -rw-r--r-- | compiler/rustc_mir_transform/src/ref_prop.rs | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/compiler/rustc_mir_transform/src/ref_prop.rs b/compiler/rustc_mir_transform/src/ref_prop.rs index cfbc22edf53..d296788d268 100644 --- a/compiler/rustc_mir_transform/src/ref_prop.rs +++ b/compiler/rustc_mir_transform/src/ref_prop.rs @@ -374,23 +374,22 @@ impl<'tcx> MutVisitor<'tcx> for Replacer<'tcx> { } fn visit_place(&mut self, place: &mut Place<'tcx>, ctxt: PlaceContext, loc: Location) { - if place.projection.first() != Some(&PlaceElem::Deref) { - return; - } - loop { - if let Value::Pointer(target, _) = self.targets[place.local] { - let perform_opt = matches!(ctxt, PlaceContext::NonUse(_)) - || self.allowed_replacements.contains(&(target.local, loc)); - - if perform_opt { - *place = target.project_deeper(&place.projection[1..], self.tcx); - self.any_replacement = true; - continue; - } + if place.projection.first() != Some(&PlaceElem::Deref) { + return; + } + + let Value::Pointer(target, _) = self.targets[place.local] else { return }; + + let perform_opt = matches!(ctxt, PlaceContext::NonUse(_)) + || self.allowed_replacements.contains(&(target.local, loc)); + + if !perform_opt { + return; } - break; + *place = target.project_deeper(&place.projection[1..], self.tcx); + self.any_replacement = true; } } |
