| //@ skip-filecheck | |
| // Make sure that the MIR inliner does not loop indefinitely on polymorphic recursion. | |
| //@ compile-flags: --crate-type lib | |
| // Randomize `def_path_hash` by defining them under a module with different names | |
| macro_rules! emit { | |
| ($($m:ident)*) => {$( | |
| pub mod $m { | |
| pub trait Tr { type Next: Tr; } | |
| pub fn hoge<const N: usize, T: Tr>() { | |
| inner::<N, T>(); | |
| } | |
| #[inline(always)] | |
| fn inner<const N: usize, T: Tr>() | |
| { | |
| inner::<N, T::Next>(); | |
| inner::<N, T::Next>(); | |
| } | |
| } | |
| )*}; | |
| } | |
| // Increase the chance of triggering the bug | |
| emit!(m00 m01 m02 m03 m04 m05 m06 m07 m08 m09 m10 m11 m12 m13 m14 m15 m16 m17 m18 m19); |