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

Don't call FieldPlacement::count when count is too large #57042

Conversation

pnkfelix
Copy link
Member

Sidestep ICE in FieldPlacement::count by not calling it when count will not fit in host's usize.

(I briefly played with trying to fix this by changing FieldPlacement::count to return a u64. However, based on how FieldPlacement is used, it seems like this would be a largely pointless pursuit... I'm open to counter-arguments, however.)

Fix #57038

@rust-highfive
Copy link
Collaborator

r? @michaelwoerister

(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 Dec 21, 2018
@Mark-Simulacrum
Copy link
Member

Cc @eddyb

@pnkfelix
Copy link
Member Author

Note that this PR doesn't actually make it so that our test suite runs cleanly for a host=i686 adn target=x86_64.

Namely, I observe this failure on huge-enum.rs now atop this PR.

failures:

---- [ui] ui/huge-enum.rs stdout ----
diff of stderr:

-       error: the type `std::option::Option<[u32; N]>` is too big for the current architecture
+       error: the type `[u32; 35184372088831]` is too big for the current architecture
2
3       error: aborting due to previous error
4

So ... is this an improvement over the status quo (and we just should revise the test suite a touch, maybe)? Or should we consider a broader change so that we get closer behavior in these various contexts...?

@michaelwoerister
Copy link
Member

Let's merge it for now. It's definitely an improvement.

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Jan 9, 2019

📌 Commit 0eacf2c has been approved by michaelwoerister

@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 Jan 9, 2019
@bors
Copy link
Contributor

bors commented Jan 10, 2019

⌛ Testing commit 0eacf2c with merge 5edef531f2fdbfbdad7ea53fc4254d9cf747e7bd...

@bors
Copy link
Contributor

bors commented Jan 10, 2019

💔 Test failed - status-appveyor

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 10, 2019
@pietroalbini
Copy link
Member

@bors retry
AppVeyor... what's wrong with you today?

@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 Jan 10, 2019
Centril added a commit to Centril/rust that referenced this pull request Jan 12, 2019
…n-fieldplacement-count, r=michaelwoerister

Don't call `FieldPlacement::count` when count is too large

Sidestep ICE in `FieldPlacement::count` by not calling it when count will not fit in host's usize.

(I briefly played with trying to fix this by changing `FieldPlacement::count` to return a `u64`. However, based on how `FieldPlacement` is used, it seems like this would be a largely pointless pursuit... I'm open to counter-arguments, however.)

Fix rust-lang#57038
bors added a commit that referenced this pull request Jan 12, 2019
Rollup of 26 pull requests

Successful merges:

 - #56425 (Redo the docs for Vec::set_len)
 - #56906 (Issue #56905)
 - #57042 (Don't call `FieldPlacement::count` when count is too large)
 - #57175 (Stabilize `let` bindings and destructuring in constants and const fn)
 - #57192 (Change std::error::Error trait documentation to talk about `source` instead of `cause`)
 - #57296 (Fixed the link to the ? operator)
 - #57368 (Use CMAKE_{C,CXX}_COMPILER_LAUNCHER for ccache)
 - #57400 (Rustdoc: update Source Serif Pro and replace Heuristica italic)
 - #57417 (rustdoc: use text-based doctest parsing if a macro is wrapping main)
 - #57433 (Add link destination for `read-ownership`)
 - #57434 (Remove `CrateNum::Invalid`.)
 - #57441 (Supporting backtrace for x86_64-fortanix-unknown-sgx.)
 - #57450 (actually take a slice in this example)
 - #57459 (Reference tracking issue for inherent associated types in diagnostic)
 - #57463 (docs: Fix some 'second-edition' links)
 - #57466 (Remove outdated comment)
 - #57493 (use structured suggestion when casting a reference)
 - #57498 (make note of one more normalization that Paths do)
 - #57499 (note that FromStr does not work for borrowed types)
 - #57505 (Remove submodule step from README)
 - #57510 (Add a profiles section to the manifest)
 - #57511 (Fix undefined behavior)
 - #57519 (Correct RELEASES.md for 1.32.0)
 - #57522 (don't unwrap unexpected tokens in `format!`)
 - #57530 (Fixing a typographical error.)
 - #57535 (Stabilise irrefutable if-let and while-let patterns)

Failed merges:

r? @ghost
@bors bors merged commit 0eacf2c into rust-lang:master Jan 12, 2019
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 in FieldPlacement::count atop 32-bit host with 64-bit target
6 participants