Exponential compile time with let in unsupported position within closure · Issue #104871 · rust-lang/rust (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

@jruderman

Description

@jruderman

Found with a modified fuzz-rustc

Code

Variant A: slow and high memory use

fn main () { let z = 0_u32;

let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
|| let _ =
z;

}

Variant B: slow only

fn main () { let _clos = || { let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = let _ = 0_u32; }; }

Where it's slow

From -Z time-passes:

From sample-head.txt:

Regression

Regression in nightly-2021-08-17, perhaps from #80357

Version

rustc 1.67.0-nightly (ff8c8dfbe 2022-11-22)
binary: rustc
commit-hash: ff8c8dfbe66701531e3e5e335c28c544d0fbc945
commit-date: 2022-11-22
host: x86_64-apple-darwin
release: 1.67.0-nightly
LLVM version: 15.0.4

(Doesn't reproduce on playground)

@rustbot label +I-compiletime