X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=compiler%2Frustc_codegen_ssa%2Fsrc%2Fmir%2Fintrinsic.rs;h=1fffa3beaaa85174dc5b0745e901b7e310da35f6;hb=399e020b96b0194e734c698d3ef4eee5c5fa59ea;hp=645afae30d88729b518c338f656330a0670f84bd;hpb=103b8602b7e3cfc8301ab9e0981563bde3789ea7;p=rust.git diff --git a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs index 645afae30d8..1fffa3beaaa 100644 --- a/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs +++ b/compiler/rustc_codegen_ssa/src/mir/intrinsic.rs @@ -3,6 +3,7 @@ use super::FunctionCx; use crate::common::{span_invalid_monomorphization_error, IntPredicate}; use crate::glue; +use crate::meth; use crate::traits::*; use crate::MemFlags; @@ -102,6 +103,15 @@ pub fn codegen_intrinsic_call( bx.const_usize(bx.layout_of(tp_ty).align.abi.bytes()) } } + sym::vtable_size | sym::vtable_align => { + let vtable = args[0].immediate(); + let idx = match name { + sym::vtable_size => ty::COMMON_VTABLE_ENTRIES_SIZE, + sym::vtable_align => ty::COMMON_VTABLE_ENTRIES_ALIGN, + _ => bug!(), + }; + meth::VirtualIndex::from_index(idx).get_usize(bx, vtable) + } sym::pref_align_of | sym::needs_drop | sym::type_id