mirror of https://github.com/rust-lang/rust
34 lines
818 B
Rust
34 lines
818 B
Rust
// Test to make sure that inner functions within a polymorphic outer function
|
|
// don't get re-codegened when the outer function is monomorphized. The test
|
|
// code monomorphizes the outer functions several times, but the magic constants
|
|
// used in the inner functions should each appear only once in the generated IR.
|
|
|
|
// issue: rust-lang/rust#7349
|
|
//@ compile-flags: -Cno-prepopulate-passes -Copt-level=0
|
|
|
|
// CHECK-COUNT-1: ret i32 8675309
|
|
// CHECK-COUNT-1: ret i32 11235813
|
|
|
|
fn outer<T>() {
|
|
#[allow(dead_code)]
|
|
fn inner() -> u32 {
|
|
8675309
|
|
}
|
|
inner();
|
|
}
|
|
|
|
extern "C" fn outer_foreign<T>() {
|
|
#[allow(dead_code)]
|
|
fn inner() -> u32 {
|
|
11235813
|
|
}
|
|
inner();
|
|
}
|
|
|
|
fn main() {
|
|
outer::<isize>();
|
|
outer::<usize>();
|
|
outer_foreign::<isize>();
|
|
outer_foreign::<usize>();
|
|
}
|