| // 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>(); |
| } |