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 11 pull requests #73438

Closed
wants to merge 43 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 14, 2020

  1. Configuration menu
    Copy the full SHA
    d5ea0e9 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    a40156e 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
    81c9094 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    4e90f17 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    921f35f View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    e755889 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    bc15790 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    539e978 View commit details
    Browse the repository at this point in the history
  8. review comments: wording

    estebank committed Jun 15, 2020
    Configuration menu
    Copy the full SHA
    31ea589 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    10d9bf1 View commit details
    Browse the repository at this point in the history
  10. Register new eror code

    estebank committed Jun 15, 2020
    Configuration menu
    Copy the full SHA
    34d8692 View commit details
    Browse the repository at this point in the history
  11. small tweaks

    estebank committed Jun 15, 2020
    Configuration menu
    Copy the full SHA
    e31367d View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    f7a1f97 View commit details
    Browse the repository at this point in the history
  13. fix rebase

    estebank committed Jun 15, 2020
    Configuration menu
    Copy the full SHA
    bfe1434 View commit details
    Browse the repository at this point in the history
  14. Update src/librustc_typeck/check/cast.rs

    Co-authored-by: lzutao <[email protected]>
    nikomatsakis and tesuji authored Jun 15, 2020
    Configuration menu
    Copy the full SHA
    b5809b0 View commit details
    Browse the repository at this point in the history
  15. 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. Adjust error message

    oddg committed Jun 16, 2020
    Configuration menu
    Copy the full SHA
    f3dfe80 View commit details
    Browse the repository at this point in the history
  2. 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
  3. Configuration menu
    Copy the full SHA
    a19dfb5 View commit details
    Browse the repository at this point in the history
  4. Update ui tests

    GuillaumeGomez committed Jun 16, 2020
    Configuration menu
    Copy the full SHA
    bad252c View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    1990f97 View commit details
    Browse the repository at this point in the history
  6. Add initial asm!() support for hexagon

    GPRs only
    androm3da committed Jun 16, 2020
    Configuration menu
    Copy the full SHA
    7a9f29d 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
    fd44ac7 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
    519a69c 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
    f9036e6 View commit details
    Browse the repository at this point in the history
  5. 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
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    b5af8a2 View commit details
    Browse the repository at this point in the history
  6. 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
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    ba2be2b View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#73214 - androm3da:hex_inline_asm_00, r=Amanieu

    Add asm!() support for hexagon
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    6fbaa35 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    211537c View commit details
    Browse the repository at this point in the history
  9. 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.
    Dylan-DPC authored Jun 17, 2020
    Configuration menu
    Copy the full SHA
    8743c17 View commit details
    Browse the repository at this point in the history
  10. 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
    6441486 View commit details
    Browse the repository at this point in the history
  11. 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
    b73f9fa View commit details
    Browse the repository at this point in the history
  12. 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
    edb339b View commit details
    Browse the repository at this point in the history