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

Rollup of 6 pull requests #73437

Closed
wants to merge 18 commits into from

Commits on May 20, 2020

  1. Implement partial error recovery for let with BinOpEq

    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.
    mibac138 committed May 20, 2020
    Configuration menu
    Copy the full SHA
    d4fe955 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    48ff12a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    05d6531 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    6ad24ba View commit details
    Browse the repository at this point in the history

Commits on May 21, 2020

  1. Configuration menu
    Copy the full SHA
    98532a3 View commit details
    Browse the repository at this point in the history

Commits on May 30, 2020

  1. [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).
    lenary committed May 30, 2020
    Configuration menu
    Copy the full SHA
    3da3d15 View commit details
    Browse the repository at this point in the history

Commits on Jun 12, 2020

  1. add raw_ref macros

    RalfJung committed Jun 12, 2020
    Configuration menu
    Copy the full SHA
    f0d2e78 View commit details
    Browse the repository at this point in the history

Commits on Jun 13, 2020

  1. Configuration menu
    Copy the full SHA
    724dfba View commit details
    Browse the repository at this point in the history

Commits on Jun 15, 2020

  1. Configuration menu
    Copy the full SHA
    0906066 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e0975b9 View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2020

  1. add tracking issue

    RalfJung committed Jun 16, 2020
    Configuration menu
    Copy the full SHA
    0265e4e View commit details
    Browse the repository at this point in the history

Commits on Jun 17, 2020

  1. Fix typo in librustc_ast docs

    Fixed sentence by removing a word.
    pierwill authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    9f2e8ad View commit details
    Browse the repository at this point in the history
  2. 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
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    696782b View commit details
    Browse the repository at this point in the history
  3. 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
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    e02417d View commit details
    Browse the repository at this point in the history
  4. 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.
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    4c7377c View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#73315 - GuillaumeGomez:clean-up-config-strs…

    …, r=kinnison
    
    Clean up some weird command strings
    
    r? @kinnison
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    4926dfd View commit details
    Browse the repository at this point in the history
  6. 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
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    d6e2f23 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#73428 - pierwill:patch-1, r=jonas-schievink

    Fix typo in librustc_ast docs
    
    Fixed sentence by removing a word.
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    8af3476 View commit details
    Browse the repository at this point in the history