diff options
| author | Ben Kimock <kimockb@gmail.com> | 2023-05-27 14:52:41 -0400 |
|---|---|---|
| committer | Ben Kimock <kimockb@gmail.com> | 2023-05-27 14:54:15 -0400 |
| commit | 783b1ce99c86106456329d7fc51c149bc27a282a (patch) | |
| tree | 710100951df1f310a62b889af4801e46792a3ef4 /compiler/rustc_mir_transform/src/check_alignment.rs | |
| parent | de4dddf155ca599ca4c888bb4ee29989394c24d6 (diff) | |
| download | rust-783b1ce99c86106456329d7fc51c149bc27a282a.tar.gz rust-783b1ce99c86106456329d7fc51c149bc27a282a.zip | |
Exclude Rvalue::AddressOf for raw pointer deref alignment checks
Diffstat (limited to 'compiler/rustc_mir_transform/src/check_alignment.rs')
| -rw-r--r-- | compiler/rustc_mir_transform/src/check_alignment.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/check_alignment.rs b/compiler/rustc_mir_transform/src/check_alignment.rs index d60184e0ebe..1fe8ea07892 100644 --- a/compiler/rustc_mir_transform/src/check_alignment.rs +++ b/compiler/rustc_mir_transform/src/check_alignment.rs @@ -75,6 +75,14 @@ struct PointerFinder<'tcx, 'a> { } impl<'tcx, 'a> Visitor<'tcx> for PointerFinder<'tcx, 'a> { + fn visit_rvalue(&mut self, rvalue: &Rvalue<'tcx>, location: Location) { + if let Rvalue::AddressOf(..) = rvalue { + // Ignore dereferences inside of an AddressOf + return; + } + self.super_rvalue(rvalue, location); + } + fn visit_place(&mut self, place: &Place<'tcx>, context: PlaceContext, _location: Location) { if let PlaceContext::NonUse(_) = context { return; |
