2023-10-16 12:36:39 -05:00
|
|
|
// skip-filecheck
|
2022-08-14 04:28:28 -05:00
|
|
|
// 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);
|