Skip to content

Fix ICE with #[repr(simd)] on enum #86444

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

Merged
merged 1 commit into from
Jun 19, 2021
Merged

Conversation

FabianWolff
Copy link
Contributor

This pull request fixes #83505. #[repr(simd)] may only be applied to structs, which correctly causes E0517 for the example given in #83505, but the compiler attempts to recover from this error, which leads to an ICE later, when .non_enum_variant() is called on the AdtDef. I have added a check that prevents this from happening.

@rust-highfive
Copy link
Contributor

r? @petrochenkov

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 18, 2021
Copy link
Contributor

@LeSeulArtichaut LeSeulArtichaut left a comment

Choose a reason for hiding this comment

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

One less ICE in the compiler!

@LeSeulArtichaut
Copy link
Contributor

@bors r+
r? @LeSeulArtichaut

@bors
Copy link
Collaborator

bors commented Jun 18, 2021

📌 Commit e7a1186 has been approved by LeSeulArtichaut

@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 Jun 18, 2021
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Jun 19, 2021
…tichaut

Fix ICE with `#[repr(simd)]` on enum

This pull request fixes rust-lang#83505. `#[repr(simd)]` may only be applied to structs, which correctly causes `E0517` for the example given in rust-lang#83505, but the compiler attempts to recover from this error, which leads to an ICE later, when `.non_enum_variant()` is called on the `AdtDef`. I have added a check that prevents this from happening.
bors added a commit to rust-lang-ci/rust that referenced this pull request Jun 19, 2021
Rollup of 9 pull requests

Successful merges:

 - rust-lang#86136 (Stabilize span_open() and span_close().)
 - rust-lang#86359 (Use as_secs_f64 in JunitFormatter)
 - rust-lang#86370 (Fix rustdoc stabilized versions layout)
 - rust-lang#86397 (Alter std::cell::Cell::get_mut documentation)
 - rust-lang#86407 (Use `map_or` instead of open-coding it)
 - rust-lang#86425 (Update rustversion to 1.0.5)
 - rust-lang#86440 (Update library tracking issue for libs-api rename.)
 - rust-lang#86444 (Fix ICE with `#[repr(simd)]` on enum)
 - rust-lang#86453 (stdlib: Fix typo in internal RefCell docs )

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 84d6c68 into rust-lang:master Jun 19, 2021
@rustbot rustbot added this to the 1.55.0 milestone Jun 19, 2021
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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ICE: assertion failed: self.is_struct() || self.is_union()', compiler/rustc_middle/src/ty/adt.rs:
6 participants