// Check KCFI extra mangling works correctly on v0 //@ needs-sanitizer-kcfi //@ no-prefer-dynamic //@ compile-flags: -C panic=abort -Zsanitizer=kcfi -C symbol-mangling-version=v0 //@ build-pass trait Foo { fn foo(&self); } struct Bar; impl Foo for Bar { fn foo(&self) {} } struct Baz; impl Foo for Baz { #[track_caller] fn foo(&self) {} } fn main() { // Produces `ReifyShim(_, ReifyReason::FnPtr)` let f: fn(&Bar) = Bar::foo; f(&Bar); // Produces `ReifyShim(_, ReifyReason::Vtable)` let v: &dyn Foo = &Baz as _; v.foo(); }