use super::FunctionCx;
use crate::common::{span_invalid_monomorphization_error, IntPredicate};
use crate::glue;
+use crate::meth;
use crate::traits::*;
use crate::MemFlags;
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
};
let ty = substs.type_at(0);
- if int_type_width_signed(ty, bx.tcx()).is_some()
- || (ty.is_unsafe_ptr() && op == "xchg")
- {
+ if int_type_width_signed(ty, bx.tcx()).is_some() || ty.is_unsafe_ptr() {
let mut ptr = args[0].immediate();
let mut val = args[1].immediate();
if ty.is_unsafe_ptr() {