From 94a0819fe3a0d679c3042a77bfe6a2afc505daea Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:11:28 +0200 Subject: Adding upstream version 1.66.0+dfsg1. Signed-off-by: Daniel Baumann --- .../ui/mir/issue-100476-recursion-check-blewup.rs | 42 ---------------------- 1 file changed, 42 deletions(-) delete mode 100644 src/test/ui/mir/issue-100476-recursion-check-blewup.rs (limited to 'src/test/ui/mir/issue-100476-recursion-check-blewup.rs') diff --git a/src/test/ui/mir/issue-100476-recursion-check-blewup.rs b/src/test/ui/mir/issue-100476-recursion-check-blewup.rs deleted file mode 100644 index bc2f32f4c..000000000 --- a/src/test/ui/mir/issue-100476-recursion-check-blewup.rs +++ /dev/null @@ -1,42 +0,0 @@ -// check-pass - -// compile-flags: --emit=mir,link -O - -// At one point the MIR inlining, when guarding against infinitely (or even just -// excessive) recursion, was using `ty::Instance` as the basis for its history -// check. The problem is that when you have polymorphic recursion, you can have -// distinct instances of the same code (because you're inlining the same code -// with differing substitutions), causing the amount of inlining to blow up -// exponentially. -// -// This test illustrates an example of that filed in issue rust#100476. - -#![allow(unconditional_recursion)] -#![feature(decl_macro)] - -macro emit($($m:ident)*) {$( - // Randomize `def_path_hash` by defining them under a module with - // different names - pub mod $m { - pub trait Tr { - type Next: Tr; - } - - pub fn hoge() { - inner::(); - } - - #[inline(always)] - fn inner() { - inner::(); - } - } -)*} - -// 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 -); - -fn main() { } -- cgit v1.2.3