-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ICE with nightly on piston-examples #38790
Comments
Confirmed with PistonDevelopers/piston-examples@037b2aa with a successful beta:
and a failing nightly:
|
cc @rust-lang/compiler, seems to be a regression |
This might've been me. If someone wants to, they could try #38813 which completely removes inlined bodies from the HIR map (I'm on a different branch otherwise I would've tried it). |
triage: P-high |
I can verify that my local build w/ @eddyb's PR is able to build |
[11/n] Separate ty::Tables into one per each body. _This is part of a series ([prev](#38449) | [next]()) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well. If any motivation is unclear, please ask for additional PR description clarifications or code comments._ <hr> In order to track the results of type-checking and inference for incremental recompilation, they must be stored separately for each function or constant value, instead of lumped together. These side-`Tables` also have to be tracked by various passes, as they visit through bodies (all of which have `Tables`, even if closures share the ones from their parent functions). This is usually done by switching a `tables` field in an override of `visit_nested_body` before recursing through `visit_body`, to the relevant one and then restoring it - however, in many cases the nesting is unnecessary and creating the visitor for each body in the crate and then visiting that body, would be a much cleaner solution. To simplify handling of inlined HIR & its side-tables, their `NodeId` remapping and entries HIR map were fully stripped out, which means that `NodeId`s from inlined HIR must not be used where a local `NodeId` is expected. It might be possible to make the nodes (`Expr`, `Block`, `Pat`, etc.) that only show up within a `Body` have IDs that are scoped to that `Body`, which would also allow `Tables` to use `Vec`s. That last part also fixes #38790 which was accidentally introduced in a previous refactor.
Details
OS: Windows 10 x64
rustc: rustc 1.16.0-nightly (4ecc85b 2016-12-28)
cargo: cargo 0.17.0-nightly (740f9c0 2016-12-29)
To reproduce
Expected
With stable (rustc 1.14.0), the piston-examples does compile successfully.
Actual output
The text was updated successfully, but these errors were encountered: