2025-02-23 17:34:50 +01:00
|
|
|
//! Check that `vtable_size` gets overridden by llvm backend even if there is a
|
|
|
|
|
//! fallback body.
|
2024-11-07 08:59:43 +01:00
|
|
|
#![feature(intrinsics)]
|
2024-02-19 17:35:12 +00:00
|
|
|
//@run-pass
|
|
|
|
|
|
|
|
|
|
#[rustc_intrinsic]
|
|
|
|
|
pub unsafe fn vtable_size(_ptr: *const ()) -> usize {
|
|
|
|
|
panic!();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trait Trait {}
|
|
|
|
|
impl Trait for () {}
|
|
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
|
let x: &dyn Trait = &();
|
|
|
|
|
unsafe {
|
|
|
|
|
let (_data, vtable): (*const (), *const ()) = core::mem::transmute(x);
|
|
|
|
|
assert_eq!(vtable_size(vtable), 0);
|
|
|
|
|
}
|
|
|
|
|
}
|