OS: Windows 10 x64 rustc: `rustc 1.9.0 (e4e8b6668 2016-05-18)` and `rustc 1.11.0-nightly (ab0b87458 2016-06-13)`. First of all I am sorry I was unable to come up with a minimal example. I tried a couple of times but it just didn't trigger the issue. I am working on a simple [game](https://github.com/aochagavia/snake/tree/cd1b56c39d02cb7b6a0aa06b32f3e02e36b986e3), but instead of compiling in <10 seconds (as usual), it hangs indefinetly (I gave up after about 5 minutes). ## Running with `time-passes` When compiling with nightly, the output of `cargo rustc -- -Ztime-passes` is: ``` time: 0.032; rss: 27MB parsing time: 0.000; rss: 27MB configuration 1 time: 0.000; rss: 27MB recursion limit time: 0.000; rss: 27MB crate injection time: 0.000; rss: 27MB plugin loading time: 0.000; rss: 27MB plugin registration time: 0.214; rss: 54MB expansion time: 0.000; rss: 54MB gated configuration checking time: 0.000; rss: 54MB maybe building test harness time: 0.000; rss: 54MB checking for inline asm in case the target doesn't support it time: 0.000; rss: 54MB complete gated feature checking time: 0.000; rss: 54MB assigning node ids time: 0.000; rss: 54MB collecting defs time: 0.849; rss: 131MB external crate/lib resolution time: 0.000; rss: 131MB early lint checks time: 0.000; rss: 131MB AST validation ^C ``` As you can see, the compiler is stuck after AST validation (note how I needed `^C` to kill Cargo). When compiling with stable, the output is: ``` time: 0.003; rss: 41MB parsing time: 0.000; rss: 42MB configuration 1 time: 0.000; rss: 42MB recursion limit time: 0.000; rss: 42MB gated macro checking time: 0.000; rss: 42MB crate injection time: 0.020; rss: 43MB macro loading time: 0.000; rss: 43MB plugin loading time: 0.000; rss: 43MB plugin registration time: 0.005; rss: 44MB expansion time: 0.000; rss: 44MB complete gated feature checking 1 time: 0.001; rss: 44MB configuration 2 time: 0.000; rss: 44MB gated configuration checking time: 0.000; rss: 44MB maybe building test harness time: 0.001; rss: 44MB prelude injection time: 0.000; rss: 44MB checking that all macro invocations are gone time: 0.000; rss: 44MB checking for inline asm in case the target doesn't support it time: 0.000; rss: 44MB complete gated feature checking 2 time: 0.000; rss: 44MB const fn bodies and arguments time: 0.000; rss: 44MB assigning node ids time: 0.000; rss: 44MB lowering ast -> hir time: 0.000; rss: 44MB indexing hir time: 0.000; rss: 44MB attribute checking time: 0.000; rss: 44MB early lint checks time: 0.144; rss: 50MB external crate/lib resolution time: 0.000; rss: 50MB language item collection ^C ``` ## Additional information (tested on stable): If I remove the `controllers::keyboard` module, the compiler runs without problems. If I replace [this line](https://github.com/aochagavia/snake/blob/cd1b56c39d02cb7b6a0aa06b32f3e02e36b986e3/src/controllers/keyboard.rs#L6) by `pub fn press(key: u8) {`, the output with `-Ztime-passes` changes: ``` time: 0.003; rss: 41MB parsing time: 0.000; rss: 42MB configuration 1 time: 0.000; rss: 42MB recursion limit time: 0.000; rss: 42MB gated macro checking time: 0.000; rss: 42MB crate injection time: 0.020; rss: 43MB macro loading time: 0.000; rss: 43MB plugin loading time: 0.000; rss: 43MB plugin registration time: 0.004; rss: 44MB expansion time: 0.000; rss: 44MB complete gated feature checking 1 time: 0.001; rss: 44MB configuration 2 time: 0.000; rss: 44MB gated configuration checking time: 0.000; rss: 44MB maybe building test harness time: 0.001; rss: 44MB prelude injection time: 0.000; rss: 44MB checking that all macro invocations are gone time: 0.000; rss: 44MB checking for inline asm in case the target doesn't support it time: 0.000; rss: 44MB complete gated feature checking 2 time: 0.000; rss: 44MB const fn bodies and arguments time: 0.000; rss: 44MB assigning node ids time: 0.000; rss: 44MB lowering ast -> hir time: 0.000; rss: 44MB indexing hir time: 0.000; rss: 44MB attribute checking time: 0.000; rss: 44MB early lint checks time: 0.144; rss: 50MB external crate/lib resolution time: 0.000; rss: 50MB language item collection time: 0.020; rss: 66MB resolution time: 0.000; rss: 66MB lifetime resolution time: 0.000; rss: 66MB looking for entry point time: 0.000; rss: 66MB looking for plugin registrar time: 0.000; rss: 66MB region resolution time: 0.000; rss: 66MB loop checking time: 0.000; rss: 66MB static item recursion checking time: 0.000; rss: 66MB load_dep_graph time: 0.003; rss: 66MB type collecting time: 0.000; rss: 66MB variance inference time: 0.094; rss: 101MB coherence checking time: 0.001; rss: 101MB wf checking time: 0.002; rss: 101MB item-types checking ^C ``` For whatever reason, rustc is able to go a little bit further in this case. ## Related issues Maybe this is a duplicate of https://github.com/rust-lang/rust/issues/33776