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 10 pull requests #122929

Closed
wants to merge 26 commits into from

Commits on Mar 3, 2024

  1. Update tests

    veera-sivarajan committed Mar 3, 2024
    Configuration menu
    Copy the full SHA
    d561a84 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9aac0c9 View commit details
    Browse the repository at this point in the history

Commits on Mar 13, 2024

  1. Improve style

    veera-sivarajan committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    1bde828 View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2024

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

Commits on Mar 20, 2024

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

Commits on Mar 21, 2024

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

Commits on Mar 22, 2024

  1. Configuration menu
    Copy the full SHA
    b376f49 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d318bf1 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e0d3439 View commit details
    Browse the repository at this point in the history
  4. CFI: Use Instance at callsites

    We already use `Instance` at declaration sites when available to glean
    additional information about possible abstractions of the type in use.
    This does the same when possible at callsites as well.
    
    The primary purpose of this change is to allow CFI to alter how it
    generates type information for indirect calls through `Virtual`
    instances.
    maurer committed Mar 22, 2024
    Configuration menu
    Copy the full SHA
    90e363a View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    807bd98 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    e853b50 View commit details
    Browse the repository at this point in the history
  7. CFI: Strip auto traits off Self for virtual calls

    Additional trait bounds beyond the principal trait and its implications
    are not possible in the vtable. This means that if a receiver is
    `&dyn Foo + Send`, the function will only be expecting `&dyn Foo`.
    
    This strips those auto traits off before CFI encoding.
    maurer committed Mar 22, 2024
    Configuration menu
    Copy the full SHA
    042e05b View commit details
    Browse the repository at this point in the history
  8. CFI: Support self_cell-like recursion

    Current `transform_ty` attempts to avoid cycles when normalizing
    `#[repr(transparent)]` types to their interior, but runs afoul of this
    pattern used in `self_cell`:
    
    ```
    struct X<T> {
      x: u8,
      p: PhantomData<T>,
    }
    
     #[repr(transparent)]
    struct Y(X<Y>);
    ```
    
    When attempting to normalize Y, it will still cycle indefinitely. By
    using a types-visited list, this will instead get expanded exactly
    one layer deep to X<Y>, and then stop, not attempting to normalize `Y`
    any further.
    maurer committed Mar 22, 2024
    Configuration menu
    Copy the full SHA
    dec36c3 View commit details
    Browse the repository at this point in the history

Commits on Mar 23, 2024

  1. -Zprint-type-sizes: print the types of awaitees and unnamed coroutine…

    … locals.
    
    This should assist comprehending the size of coroutines.
    In particular, whenever a future is suspended while awaiting another
    future, the latter is given the special name `__awaitee`, and now the
    type of the awaited future will be printed, allowing identifying
    caller/callee — er, I mean, poller/pollee — relationships.
    
    It would be possible to include the type name in more cases, but I
    thought that that might be overly verbose (`print-type-sizes` is already
    a lot of text) and ordinary named fields or variables are easier for
    readers to discover the types of.
    kpreid committed Mar 23, 2024
    Configuration menu
    Copy the full SHA
    44d185b View commit details
    Browse the repository at this point in the history
  2. Change an ICE regression test to use the original reproducer

    This gives us more confidence that the ICE was indeed fixed.
    gurry committed Mar 23, 2024
    Configuration menu
    Copy the full SHA
    4afce46 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#121940 - veera-sivarajan:bugfix-121593, r=f…

    …mease
    
    Mention Register Size in `#[warn(asm_sub_register)]`
    
    Fixes rust-lang#121593
    
    Displays the register size information obtained from `suggest_modifier()` and `default_modifier()`.
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    6f2f720 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#122460 - jieyouxu:rmake-example-refactor, r…

    …=Nilstrieb
    
    Rework rmake support library API
    
    ### Take 1: Strongly-typed API
    
    Context: rust-lang#122448 (comment)
    
    > My 2 cents: from my experience with writing similar "test DSLs", I would suggest to create these helpers as soon as possible in the process (basically the first time someone needs them, not only after N similar usages), and basically treat any imperative code in these high-level tests as a maintenance burden, basically making them as declarative as possible. Otherwise it might be a bit annoying to keep refactoring the tests later once such helpers are available.
    >
    > I would even discourage the arg method and create explicit methods for setting things like unpretty, the output file etc., but this might be more controversial, as it will make the invoked command-line arguments more opaque.
    
    cc ``@Kobzol`` for the testing DSL suggestion.
    
    Example:
    
    ```rs
    let output = Rustc::new()
        .input_file("main.rs")
        .emit(&[EmitKind::Metadata])
        .extern_("stable", &stable_path)
        .output();
    ```
    
    ### Take 2: xshell-based macro API
    
    Example:
    
    ```rs
    let sh = Shell::new()?;
    let stable_path = stable_path.to_string_lossy();
    let output = cmd!(sh, "rustc main.rs --emit=metadata --extern stable={stable_path}").output()?;
    ```
    
    ### Take 3: Weakly-typed API with a few helper methods
    
    ```rs
    let output = Rustc::new()
        .input("main.rs")
        .emit("metadata")
        .extern_("stable", &stable_path)
        .output();
    ```
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    79c39a2 View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#122698 - clubby789:cancel-hourly-update, r=…

    …Mark-Simulacrum
    
    Cancel `cargo update` job if there's no updates
    
    Previously there were always updates so we didn't hit this. Since rust-lang#122489, this job runs on a more frequent schedule and causes errors if there have been no changes in that timespan.
    
    This led to a weird error on rust-lang#122646 (comment) - because of this I've replaced the `exit 1`s here with `gh run cancel` so we don't have false 'failed' jobs in the logs.
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    be7fd03 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#122780 - GuillaumeGomez:rename-hir-local, r…

    …=oli-obk
    
    Rename `hir::Local` into `hir::LetStmt`
    
    Follow-up of rust-lang#122776.
    
    As discussed on [zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Improve.20naming.20of.20.60ExprKind.3A.3ALet.60.3F).
    
    I made this change into a separate PR because I'm less sure about this change as is. For example, we have `visit_local` and `LocalSource` items. Is it fine to keep these two as is (I supposed it is but I prefer to ask) or not? Having `Node::Local(LetStmt)` makes things more explicit but is it going too far?
    
    r? `@oli-obk`
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    fb850c1 View commit details
    Browse the repository at this point in the history
  7. Rollup merge of rust-lang#122875 - maurer:cfi-transparent-termination…

    …, r=workingjubilee
    
    CFI: Support self_cell-like recursion
    
    Current `transform_ty` attempts to avoid cycles when normalizing `#[repr(transparent)]` types to their interior, but runs afoul of this pattern used in `self_cell`:
    
    ```
    struct X<T> {
      x: u8,
      p: PhantomData<T>,
    }
    
     #[repr(transparent)]
    struct Y(X<Y>);
    ```
    
    When attempting to normalize Y, it will still cycle indefinitely. By using a types-visited list, this will instead get expanded exactly one layer deep to X<Y>, and then stop, not attempting to normalize `Y` any further.
    
    This PR was split off from rust-lang#121962 as part of fixing the larger vtable compatibility issues.
    
    r? `@workingjubilee`
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    ffa32f1 View commit details
    Browse the repository at this point in the history
  8. Rollup merge of rust-lang#122879 - maurer:callsite-instances, r=worki…

    …ngjubilee
    
    CFI: Strip auto traits off Virtual calls
    
    We already use `Instance` at declaration sites when available to glean additional information about possible abstractions of the type in use. This does the same when possible at callsites as well.
    
    The primary purpose of this change is to allow CFI to alter how it generates type information for indirect calls through `Virtual` instances.
    
    This is needed for the "separate machinery" version of my approach to the vtable issues (rust-lang#122573), because we need to respond differently to a `Virtual` call to the same type as a non-virtual call, specifically [stripping auto traits off the receiver's `Self`](rust-lang@54b15b0) because there isn't a separate vtable for `Foo` vs `Foo + Send`.
    
    This would also make a more general underlying mechanism that could be used by rcvalle's [proposed drop detection / encoding](rust-lang@edcd1e2) if we end up using his approach, as we could condition out on the `def_id` in the CFI code rather than requiring the generating code to explicitly note whether it was calling drop.
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    bc9e827 View commit details
    Browse the repository at this point in the history
  9. Rollup merge of rust-lang#122915 - fmease:lt-opaq-mismatch-delay-bug,…

    … r=compiler-errors
    
    Delay a bug if no RPITITs were found
    
    Fixes rust-lang#122655. See the issue for context.
    
    r? compiler-errors or compiler
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    8fc1faa View commit details
    Browse the repository at this point in the history
  10. Rollup merge of rust-lang#122916 - MultisampledNight:docs-sync-typo, …

    …r=jhpratt
    
    docs(sync): normalize dot in fn summaries
    
    All other functions in e.g. [`Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex.html) have a dot at the end of their first doc line, except for the newly stabilized [`Mutex::clear_poison`](https://doc.rust-lang.org/std/sync/struct.Mutex.html#method.clear_poison) (and its friend [`RwLock::clear_poison`](https://doc.rust-lang.org/std/sync/struct.RwLock.html#method.clear_poison)).
    
    This PR remedies that by adding a normalizing dot.
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    fa762ea View commit details
    Browse the repository at this point in the history
  11. Rollup merge of rust-lang#122922 - kpreid:print-async, r=compiler-errors

    -Zprint-type-sizes: print the types of awaitees and unnamed coroutine locals.
    
    This should assist comprehending the size of coroutines. In particular, whenever a future is suspended while awaiting another future, the latter is given the special name `__awaitee`, and now the type of the awaited future will be printed, allowing identifying caller/callee — er, I mean, poller/pollee — relationships.
    
    It would be possible to include the type name in more cases, but I thought that that might be overly verbose (`print-type-sizes` is already a lot of text) and ordinary named fields or variables are easier for readers to discover the types of.
    
    This change will also synergize with my other PR rust-lang#122923 which changes type printing to print the path of the `async fn` instead of the span.
    
    Implementation note: I'm not sure if `Symbol::intern` is appropriate for this application, but it was the obvious way to not have to remove the `Copy` implementation from `FieldInfo`, or add a `'tcx` lifetime, while avoiding keeping a lot of possibly redundant strings in memory. I don't know what the proper tradeoff to make here is (though presumably it is not too important for a `-Z` debugging option).
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    6f506a6 View commit details
    Browse the repository at this point in the history
  12. Rollup merge of rust-lang#122927 - gurry:122199-ice-unexpected-node-2…

    …, r=workingjubilee
    
    Change an ICE regression test to use the original reproducer
    
    The ICE was fixed in PR rust-lang#122370, but the test used a different reproducer than the one originally reported. This PR changes it to the original one, giving us more confidence that the fix works.
    
    Fixes rust-lang#122199
    workingjubilee authored Mar 23, 2024
    Configuration menu
    Copy the full SHA
    048ba2a View commit details
    Browse the repository at this point in the history