diff options
| author | Ralf Jung <post@ralfj.de> | 2022-07-20 10:45:09 -0400 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2022-07-20 17:12:08 -0400 |
| commit | 9cbd1066d711ef4b5de00fc105f05ee6a3db9ae9 (patch) | |
| tree | e611d267c4cd0db3cb6e6a780696c04f5dc82a6b | |
| parent | 399e020b96b0194e734c698d3ef4eee5c5fa59ea (diff) | |
| download | rust-9cbd1066d711ef4b5de00fc105f05ee6a3db9ae9.tar.gz rust-9cbd1066d711ef4b5de00fc105f05ee6a3db9ae9.zip | |
add range metadata to alignment loads
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/mir/intrinsic.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs index 1fffa3beaaa..0a8bd914823 100644 --- a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs +++ b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs @@ -9,7 +9,7 @@ use crate::MemFlags; use rustc_middle::ty::{self, Ty, TyCtxt}; use rustc_span::{sym, Span}; -use rustc_target::abi::call::{FnAbi, PassMode}; +use rustc_target::abi::{WrappingRange, call::{FnAbi, PassMode}}; fn copy_intrinsic<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>( bx: &mut Bx, @@ -110,7 +110,12 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { sym::vtable_align => ty::COMMON_VTABLE_ENTRIES_ALIGN, _ => bug!(), }; - meth::VirtualIndex::from_index(idx).get_usize(bx, vtable) + let value = meth::VirtualIndex::from_index(idx).get_usize(bx, vtable); + if name == sym::vtable_align { + // Alignment is always nonzero. + bx.range_metadata(value, WrappingRange { start: 1, end: !0 }); + }; + value } sym::pref_align_of | sym::needs_drop |
