File: shared-generics.rs

package info (click to toggle)
rustc 1.85.0%2Bdfsg2-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 893,176 kB
  • sloc: xml: 158,127; python: 35,830; javascript: 19,497; cpp: 19,002; sh: 17,245; ansic: 13,127; asm: 4,376; makefile: 1,051; lisp: 29; perl: 29; ruby: 19; sql: 11
file content (26 lines) | stat: -rw-r--r-- 1,063 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//@ no-prefer-dynamic
// NOTE: We always compile this test with -Copt-level=0 because higher opt-levels
//       prevent drop-glue from participating in share-generics.
//@ incremental
//@ compile-flags:-Zprint-mono-items=eager -Zshare-generics=yes -Copt-level=0

#![crate_type = "rlib"]

//@ aux-build:shared_generics_aux.rs
extern crate shared_generics_aux;

//~ MONO_ITEM fn foo
pub fn foo() {
    //~ MONO_ITEM fn shared_generics_aux::generic_fn::<u16> @@ shared_generics_aux-in-shared_generics.volatile[External]
    let _ = shared_generics_aux::generic_fn(0u16, 1u16);

    // This should not generate a monomorphization because it's already
    // available in `shared_generics_aux`.
    let _ = shared_generics_aux::generic_fn(0.0f32, 3.0f32);

    // The following line will drop an instance of `Foo`, generating a call to
    // Foo's drop-glue function. However, share-generics should take care of
    // reusing the drop-glue from the upstream crate, so we do not expect a
    // mono item for the drop-glue
    let _ = shared_generics_aux::Foo(1);
}