Uh oh!
There was an error while loading. Please reload this page.
Implement Unsized Rvalues - #51131
Conversation
rust-highfive
commented
May 28, 2018
(rust_highfive has picked a reviewer for you, use r? to override) |
rust-highfive
commented
May 28, 2018
rust-highfive
commented
May 28, 2018
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
f6f4804 to
4dc11f5Comparerust-highfive
commented
May 29, 2018
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
rust-highfive
commented
May 29, 2018
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
rust-highfive
commented
May 30, 2018
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
rust-highfive
commented
May 30, 2018
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
bors
commented
May 31, 2018
☔ The latest upstream changes (presumably #51182) made this pull request unmergeable. Please resolve the merge conflicts. |
2c27df5 to
55a1e92Compareqnighy
commented
Jun 2, 2018
I found several missing sizedness checking, namely
As adding As these plans are going to be large (for me, at least), I want to have this PR merged for now and prepare different PRs. |
bors
commented
Jun 3, 2018
☔ The latest upstream changes (presumably #50338) made this pull request unmergeable. Please resolve the merge conflicts. |
bors
commented
Jun 5, 2018
☔ The latest upstream changes (presumably #51140) made this pull request unmergeable. Please resolve the merge conflicts. |
qnighy
commented
Jun 9, 2018
qnighy
commented
Jun 14, 2018
This PR seems to be missed, perhaps because it was initially |
emilyalbini
commented
Jun 18, 2018
Ping from triage @aturon! This PR needs your review. |
aturon
commented
Jun 22, 2018
cc @rust-lang/compiler I'm not a suitable reviewer for this, can someone take it? |
Mark-Simulacrum
commented
Jun 22, 2018
Ah, r? @nikomatsakis based on a previous comment |
The paragraph described a case where we can't optimize away repetitive dynamic stack allocation. However, as arielb1 pointed out, it can actually optimizable by dynamically delaying the stack unwinding.
qnighy
commented
Aug 19, 2018
Rebased. r? @eddyb |
eddyb
commented
Aug 19, 2018
@bors r+ |
bors
commented
Aug 19, 2018
📌 Commit c488d59 has been approved by |
bors
commented
Aug 19, 2018
Implement Unsized Rvalues This PR is the first step to implement RFC1909: unsized rvalues (#48055). ## Implemented - `Sized` is removed for arguments and local bindings. (under `#![feature(unsized_locals)]`) - Unsized locations are allowed in MIR - Unsized places and operands are correctly translated at codegen ## Not implemented in this PR - Additional `Sized` checks: - tuple struct constructor (accidentally compiles now) - closure arguments at closure generation (accidentally compiles now) - upvars (ICEs now) - Generating vtable for `fn method(self)` (ICEs now) - VLAs: `[e; n]` where `n` isn't const - Reduce unnecessary allocations ## Current status - [x] Fix `__rust_probestack` (rust-lang/compiler-builtins#244) - [x] Get the fix merged - [x] `#![feature(unsized_locals)]` - [x] Give it a tracking issue number - [x] Lift sized checks in typeck and MIR-borrowck - [ ] <del>Forbid `A(unsized-expr)`</del> will be another PR - [x] Minimum working codegen - [x] Add more examples and fill in unimplemented codegen paths - [ ] <del>Loosen object-safety rules (will be another PR)</del> - [ ] <del>Implement `Box<FnOnce>` (will be another PR)</del> - [ ] <del>Reduce temporaries (will be another PR)</del>
bors
commented
Aug 19, 2018
☀️ Test successful - status-appveyor, status-travis |
This PR is the first step to implement RFC1909: unsized rvalues (#48055).
Implemented
Sizedis removed for arguments and local bindings. (under#![feature(unsized_locals)])Not implemented in this PR
Sizedchecks:fn method(self)(ICEs now)[e; n]wherenisn't constCurrent status
__rust_probestack(Fix segfault on probestack with dynamic alloca. compiler-builtins#244)#![feature(unsized_locals)]Forbidwill be another PRA(unsized-expr)Loosen object-safety rules (will be another PR)ImplementBox<FnOnce>(will be another PR)Reduce temporaries (will be another PR)