-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
Rollup of 6 pull requests #73437
Rollup of 6 pull requests #73437
Commits on May 20, 2020
-
Implement partial error recovery for
let
withBinOpEq
When parsing `let x: i8 += 1` the compiler interprets `i8` as a trait which makes it more complicated to do error recovery. More advanced error recovery is not implemented in this commit.
Configuration menu - View commit details
-
Copy full SHA for d4fe955 - Browse repository at this point
Copy the full SHA d4fe955View commit details -
Configuration menu - View commit details
-
Copy full SHA for 48ff12a - Browse repository at this point
Copy the full SHA 48ff12aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 05d6531 - Browse repository at this point
Copy the full SHA 05d6531View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6ad24ba - Browse repository at this point
Copy the full SHA 6ad24baView commit details
Commits on May 21, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 98532a3 - Browse repository at this point
Copy the full SHA 98532a3View commit details
Commits on May 30, 2020
-
[RISC-V] Do not force frame pointers
We have been seeing some very inefficient code that went away when using `-Cforce-frame-pointers=no`. For instance `core::ptr::drop_in_place` at `-Oz` was compiled into a function which consisted entirely of saving registers to the stack, then using the frame pointer to restore the same registers (without any instructions between the prolog and epilog). The RISC-V LLVM backend supports frame pointer elimination, so it makes sense to allow this to happen when using Rust. It's not clear to me that frame pointers have ever been required in the general case. In rust-lang#61675 it was pointed out that this made reassembling stack traces easier, which is true, but there is a code generation option for forcing frame pointers, and I feel the default should not be to require frame pointers, given it demonstrably makes code size worse (around 10% in some embedded applications). The kinds of targets mentioned in rust-lang#61675 are popular, but should not dictate that code generation should be worse for all RISC-V targets, especially as there is a way to use CFI information to reconstruct the stack when the frame pointer is eliminated. It is also a misconception that `fp` is always used for the frame pointer. `fp` is an ABI name for `x8` (aka `s0`), and if no frame pointer is required, `x8` may be used for other callee-saved values. This commit does ensure that the standard library is built with unwind tables, so that users do not need to rebuild the standard library in order to get a backtrace that includes standard library calls (which is the original reason for forcing frame pointers).
Configuration menu - View commit details
-
Copy full SHA for 3da3d15 - Browse repository at this point
Copy the full SHA 3da3d15View commit details
Commits on Jun 12, 2020
-
Configuration menu - View commit details
-
Copy full SHA for f0d2e78 - Browse repository at this point
Copy the full SHA f0d2e78View commit details
Commits on Jun 13, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 724dfba - Browse repository at this point
Copy the full SHA 724dfbaView commit details
Commits on Jun 15, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 0906066 - Browse repository at this point
Copy the full SHA 0906066View commit details -
Configuration menu - View commit details
-
Copy full SHA for e0975b9 - Browse repository at this point
Copy the full SHA e0975b9View commit details
Commits on Jun 16, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 0265e4e - Browse repository at this point
Copy the full SHA 0265e4eView commit details
Commits on Jun 17, 2020
-
Configuration menu - View commit details
-
Copy full SHA for 9f2e8ad - Browse repository at this point
Copy the full SHA 9f2e8adView commit details -
Rollup merge of rust-lang#69890 - lenary:lenary/riscv-frame-pointers,…
… r=hanna-kruppe,Mark-Simulacrum [RISC-V] Do not force frame pointers We have been seeing some very inefficient code that went away when using `-Cforce-frame-pointers=no`. For instance `core::ptr::drop_in_place` at `-Oz` was compiled into a function which consisted entirely of saving registers to the stack, then using the frame pointer to restore the same registers (without any instructions between the prolog and epilog). The RISC-V LLVM backend supports frame pointer elimination, so it makes sense to allow this to happen when using Rust. It's not clear to me that frame pointers have ever been required in the general case. In rust-lang#61675 it was pointed out that this made reassembling stack traces easier, which is true, but there is a code generation option for forcing frame pointers, and I feel the default should not be to require frame pointers, given it demonstrably makes code size worse (around 10% in some embedded applications). The kinds of targets mentioned in rust-lang#61675 are popular, but should not dictate that code generation should be worse for all RISC-V targets, especially as there is a way to use CFI information to reconstruct the stack when the frame pointer is eliminated. It is also a misconception that `fp` is always used for the frame pointer. `fp` is an ABI name for `x8` (aka `s0`), and if no frame pointer is required, `x8` may be used for other callee-saved values. --- I am partly posting this to get feedback from @fintelia who introduced the change to require frame pointers, and @hanna-kruppe who had issues with the original PR. I would understand if we wanted to remove this setting on only a subset of RISC-V targets, but my preference would be to remove this setting everywhere. There are more details on the code size savings seen in Tock here: tock/tock#1660
Configuration menu - View commit details
-
Copy full SHA for 696782b - Browse repository at this point
Copy the full SHA 696782bView commit details -
Rollup merge of rust-lang#71976 - mibac138:let-recovery, r=estebank
Improve diagnostics for `let x += 1` Fixes(?) rust-lang#66736 The code responsible for the `E0404` errors is [here](https://github.com/rust-lang/rust/blob/master/src/librustc_parse/parser/ty.rs#L399-L424) which I don't think can be easily modified to prevent emitting an error in one specific case. Because of this I couldn't get rid of `E0404` and instead added `E0067` along with a help message which will fix the problem. r? @estebank
Configuration menu - View commit details
-
Copy full SHA for e02417d - Browse repository at this point
Copy the full SHA e02417dView commit details -
Rollup merge of rust-lang#72279 - RalfJung:raw-ref-macros, r=nikomats…
…akis add raw_ref macros In rust-lang#64490, various people were in favor of exposing `&raw` as a macro first before making the actual syntax stable. So this PR (unstably) introduces those macros. I'll create the tracking issue if we're okay moving forward with this.
Configuration menu - View commit details
-
Copy full SHA for 4c7377c - Browse repository at this point
Copy the full SHA 4c7377cView commit details -
Rollup merge of rust-lang#73315 - GuillaumeGomez:clean-up-config-strs…
…, r=kinnison Clean up some weird command strings r? @kinnison
Configuration menu - View commit details
-
Copy full SHA for 4926dfd - Browse repository at this point
Copy the full SHA 4926dfdView commit details -
Rollup merge of rust-lang#73362 - erikdesjardins:bounds, r=nikomatsakis
Test that bounds checks are elided when slice len is checked up-front Closes rust-lang#69101
Configuration menu - View commit details
-
Copy full SHA for d6e2f23 - Browse repository at this point
Copy the full SHA d6e2f23View commit details -
Rollup merge of rust-lang#73428 - pierwill:patch-1, r=jonas-schievink
Fix typo in librustc_ast docs Fixed sentence by removing a word.
Configuration menu - View commit details
-
Copy full SHA for 8af3476 - Browse repository at this point
Copy the full SHA 8af3476View commit details