Skip to content
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

Ensure nested statics have a HIR node to prevent various queries from ICEing #122719

Merged
merged 2 commits into from
Mar 19, 2024

Conversation

oli-obk
Copy link
Contributor

@oli-obk oli-obk commented Mar 19, 2024

@rustbot
Copy link
Collaborator

rustbot commented Mar 19, 2024

r? @fee1-dead

rustbot has assigned @fee1-dead.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Mar 19, 2024
@rustbot
Copy link
Collaborator

rustbot commented Mar 19, 2024

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung
Copy link
Member

RalfJung commented Mar 19, 2024 via email

@oli-obk
Copy link
Contributor Author

oli-obk commented Mar 19, 2024

oh fun. I didn't check.

@oli-obk
Copy link
Contributor Author

oli-obk commented Mar 19, 2024

I removed the test. The change is useful on its own. We should always have HIR available for all DefIds

@RalfJung
Copy link
Member

RalfJung commented Mar 19, 2024 via email

@oli-obk
Copy link
Contributor Author

oli-obk commented Mar 19, 2024

no, this PR just makes better ICEs

@@ -3531,7 +3526,8 @@ pub enum Node<'hir> {
WhereBoundPredicate(&'hir WhereBoundPredicate<'hir>),
// FIXME: Merge into `Node::Infer`.
ArrayLenInfer(&'hir InferArg),
AssocOpaqueTy(&'hir AssocOpaqueTy),
// Created by query feeding
Synthetic,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In #120206 and #120943 I specifically wanted to avoid having a non-specific "dummy" node kind.
If we have some HirId or DefId then it's better to know whether it refers to an associated opaque type, or implicit static, or some specific non-synthesized HIR node, at least for debugging.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can give it a field where we can encode the kind of synthetic node that we have here. Then it can be handled the same everywhere and get custom handling where desirable

We usually can get this information by asking for the DefId and then the DefKind, but that's not always immediately there I guess

Copy link
Member

@fee1-dead fee1-dead left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. FWIW, I don't think it is necessary to add any info that distinguishes nested statics from associated types coming from RPITITs, since the def_kind already has it, and we rarely print the HIR after the queries are fed.

r=me

@oli-obk
Copy link
Contributor Author

oli-obk commented Mar 19, 2024

@bors r=fee1-dead

I'll revisit when we have an actual ICE where it isn't obvious from the query stack already

@bors
Copy link
Contributor

bors commented Mar 19, 2024

📌 Commit 3a09680 has been approved by fee1-dead

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Mar 19, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Mar 19, 2024
…iaskrgr

Rollup of 10 pull requests

Successful merges:

 - rust-lang#122435 (Don't trigger `unused_qualifications` on global paths)
 - rust-lang#122556 (Extend format arg help for simple tuple index access expression)
 - rust-lang#122634 (compiletest: Add support for `//@ aux-bin: foo.rs`)
 - rust-lang#122677 (Fix incorrect mutable suggestion information for binding in ref pattern.)
 - rust-lang#122691 (Fix ICE: `global_asm!()` Don't Panic When Unable to Evaluate Constant)
 - rust-lang#122695 (Change only_local to a enum type.)
 - rust-lang#122717 (Ensure stack before parsing dot-or-call)
 - rust-lang#122719 (Ensure nested statics have a HIR node to prevent various queries from ICEing)
 - rust-lang#122720 ([doc]:fix error code example)
 - rust-lang#122724 (add test for casting pointer to union with unsized tail)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 671a2f7 into rust-lang:master Mar 19, 2024
11 checks passed
@rustbot rustbot added this to the 1.79.0 milestone Mar 19, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Mar 19, 2024
Rollup merge of rust-lang#122719 - oli-obk:nested_static_feed_hir, r=fee1-dead

Ensure nested statics have a HIR node to prevent various queries from ICEing

fixes rust-lang/miri#3389
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ICE: hir: index out of bounds
6 participants