// NOTE: We always compile this test with -Copt-level=0 because higher opt-levels // prevent drop-glue from participating in share-generics. //@ compile-flags:-Zshare-generics=yes -Copt-level=0 //@ no-prefer-dynamic #![crate_type = "rlib"] pub fn generic_fn(x: T, y: T) -> (T, T) { (x, y) } pub fn use_generic_fn_f32() -> (f32, f32) { // This line causes drop glue for Foo to be instantiated. We want to make // sure that this crate exports an instance to be re-used by share-generics. let _ = Foo(0); generic_fn(0.0f32, 1.0f32) } pub struct Foo(pub u32); impl Drop for Foo { fn drop(&mut self) { println!("foo"); } }