-
Notifications
You must be signed in to change notification settings - Fork 12.6k
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 11 pull requests #73438
Rollup of 11 pull requests #73438
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 14, 2020
-
Configuration menu - View commit details
-
Copy full SHA for d5ea0e9 - Browse repository at this point
Copy the full SHA d5ea0e9View commit details -
Configuration menu - View commit details
-
Copy full SHA for a40156e - Browse repository at this point
Copy the full SHA a40156eView 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 81c9094 - Browse repository at this point
Copy the full SHA 81c9094View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4e90f17 - Browse repository at this point
Copy the full SHA 4e90f17View commit details -
Configuration menu - View commit details
-
Copy full SHA for 921f35f - Browse repository at this point
Copy the full SHA 921f35fView commit details -
Configuration menu - View commit details
-
Copy full SHA for e755889 - Browse repository at this point
Copy the full SHA e755889View commit details -
Configuration menu - View commit details
-
Copy full SHA for bc15790 - Browse repository at this point
Copy the full SHA bc15790View commit details -
Configuration menu - View commit details
-
Copy full SHA for 539e978 - Browse repository at this point
Copy the full SHA 539e978View commit details -
Configuration menu - View commit details
-
Copy full SHA for 31ea589 - Browse repository at this point
Copy the full SHA 31ea589View commit details -
Configuration menu - View commit details
-
Copy full SHA for 10d9bf1 - Browse repository at this point
Copy the full SHA 10d9bf1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 34d8692 - Browse repository at this point
Copy the full SHA 34d8692View commit details -
Configuration menu - View commit details
-
Copy full SHA for e31367d - Browse repository at this point
Copy the full SHA e31367dView commit details -
Configuration menu - View commit details
-
Copy full SHA for f7a1f97 - Browse repository at this point
Copy the full SHA f7a1f97View commit details -
Configuration menu - View commit details
-
Copy full SHA for bfe1434 - Browse repository at this point
Copy the full SHA bfe1434View commit details -
Update src/librustc_typeck/check/cast.rs
Co-authored-by: lzutao <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for b5809b0 - Browse repository at this point
Copy the full SHA b5809b0View 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 f3dfe80 - Browse repository at this point
Copy the full SHA f3dfe80View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0265e4e - Browse repository at this point
Copy the full SHA 0265e4eView commit details -
Configuration menu - View commit details
-
Copy full SHA for a19dfb5 - Browse repository at this point
Copy the full SHA a19dfb5View commit details -
Configuration menu - View commit details
-
Copy full SHA for bad252c - Browse repository at this point
Copy the full SHA bad252cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1990f97 - Browse repository at this point
Copy the full SHA 1990f97View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7a9f29d - Browse repository at this point
Copy the full SHA 7a9f29dView 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 fd44ac7 - Browse repository at this point
Copy the full SHA fd44ac7View 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 519a69c - Browse repository at this point
Copy the full SHA 519a69cView 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 f9036e6 - Browse repository at this point
Copy the full SHA f9036e6View commit details -
Rollup merge of rust-lang#72331 - oddg:forbid-cast-of-cenum-implement…
…ing-drop, r=matthewjasper,nikomatsakis Report error when casting an C-like enum implementing Drop Following approach described in rust-lang#35941
Configuration menu - View commit details
-
Copy full SHA for b5af8a2 - Browse repository at this point
Copy the full SHA b5af8a2View commit details -
Rollup merge of rust-lang#72804 - estebank:opaque-missing-lts-in-fn-2…
…, r=nikomatsakis Further tweak lifetime errors involving `dyn Trait` and `impl Trait` in return position * Suggest substituting `'static` lifetime in impl/dyn `Trait + 'static` instead of `Trait + 'static + '_` * When `'static` is explicit, also suggest constraining argument with it * Reduce verbosity of suggestion message and mention lifetime in label * Tweak output for overlapping required/captured spans * Give these errors an error code Follow up to rust-lang#72543. r? @nikomatsakis
Configuration menu - View commit details
-
Copy full SHA for ba2be2b - Browse repository at this point
Copy the full SHA ba2be2bView commit details -
Rollup merge of rust-lang#73214 - androm3da:hex_inline_asm_00, r=Amanieu
Add asm!() support for hexagon
Configuration menu - View commit details
-
Copy full SHA for 6fbaa35 - Browse repository at this point
Copy the full SHA 6fbaa35View commit details -
Rollup merge of rust-lang#73280 - GuillaumeGomez:add-e0763, r=petroch…
…enkov Add E0763
Configuration menu - View commit details
-
Copy full SHA for 211537c - Browse repository at this point
Copy the full SHA 211537cView commit details -
Rollup merge of rust-lang#73305 - crlf0710:disallow_loading_monsters,…
… r=petrochenkov Disallow loading crates with non-ascii identifier name. This turns off external crate loading with non-ascii identifier names. cc rust-lang#55467.
Configuration menu - View commit details
-
Copy full SHA for 8743c17 - Browse repository at this point
Copy the full SHA 8743c17View 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 6441486 - Browse repository at this point
Copy the full SHA 6441486View 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 b73f9fa - Browse repository at this point
Copy the full SHA b73f9faView 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 edb339b - Browse repository at this point
Copy the full SHA edb339bView commit details