T Compiler Meeting Agenda 2024 05 09

T-compiler Meeting Agenda 2024-05-09

Announcements

  • Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let us know (or at least message @davidtwco or @Wesley Wiser so we can pass it along).

Other WG meetings

MCPs/FCPs

WG checkins

None

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Adjust #[macro_export]/doctest help suggestion for non_local_defs lint” rust#124568
    • authored by @_Urgau
    • partially fixes #124534, a rustdoc lint triggered in rustdoc comments
    • t-rustdoc r+’d too
    • possibly there will be future work to handle this (comment)
  • :beta: “Do not ICE on foreign malformed diagnostic::on_unimplementedrust#124683
    • authored by @_Esteban Küber
    • fixes #124651, regression on 1.78 stable, the ICE triggered when using a malformed diagnostic::on_unimplemented
    • Michael mentions that this should be ported together with #124675 (next backport)
  • :beta: “Fix more ICEs in diagnostic::on_unimplementedrust#124875
    • authored by @_Michael Goulet (compiler-errors)
    • fixes more ICEs on #124651
    • PR is open but r+d
    • Michael mentions that this should be ported together with #124683 (previous backport :))
  • :stable: “Do not ICE on foreign malformed diagnostic::on_unimplementedrust#124683
    • backport on stable of the ICE fix mentioned before
  • :stable: “Fix more ICEs in diagnostic::on_unimplementedrust#124875
    • backport on stable of the ICE fix mentioned before

T-types stable / T-types beta

  • No beta nominations for T-types this time.
  • No stable nominations for T-types this time.

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • No P-critical issues for T-compiler this time.

T-types

  • No P-critical issues for T-types this time.

P-high regressions

P-high beta regressions

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2024-05-07

Largely uneventful week; the most notable shifts were considered false-alarms that arose from changes related to cfg-checking (either cargo enabling it, or adding cfg’s like rustfmt to the “well-known cfgs list”).

Triage done by @pnkfelix. Revision range: c65b2dc9..69f53f5e

Summary:

(instructions:u)meanrangecount
Regressions (primary)3.0%[0.2%, 19.5%]65
Regressions (secondary)1.3%[0.2%, 4.5%]103
Improvements (primary)-0.9%[-2.2%, -0.2%]24
Improvements (secondary)-0.7%[-1.4%, -0.4%]23
All (primary)1.9%[-2.2%, 19.5%]89

3 Regressions, 2 Improvements, 3 Mixed; 5 of them in rollups 30 Untriaged Pull Requests 54 artifact comparisons made in total

Regressions

Rollup of 7 pull requests #124675 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 1.2%]11
Regressions (secondary)0.8%[0.4%, 1.3%]17
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.5%[0.2%, 1.2%]11
  • all primary regressions are to doc-full scenarios, and the 1.2% is to helloworld.
  • not worth teasing apart a rollup PR.
  • marking as triaged.

Update cargo #124684 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)2.4%[0.2%, 19.1%]83
Regressions (secondary)1.6%[0.2%, 5.7%]92
Improvements (primary)--0
Improvements (secondary)--0
All (primary)2.4%[0.2%, 19.1%]83
  • syn (mostly check builds, but also a debug incr-unchanged and opt incr-unchanged) had regressions ranging from 7.24% all the way up to 19.11%.
  • The most plausible hypothesis is that this is due to an explosion in the number of warnings emitted for this benchmark. (The number of warnings went from ~200 up to 1800, according to Urgau’s analysis).
  • This means the code ends up becoming, at least in part, a benchmark of the lint machinery, regardless of whether that is our intent or not.
  • see also rustc-perf#1819 “Consider passing -Awarnings (or similar) to avoid false alarms from lint reporting
  • marking as triaged.

Rollup of 3 pull requests #124784 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.4%]5
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.2%, 0.4%]5
  • all regressions were to syn, to various incr-unchanged and incr-patched:println scenarios.
  • current hypothesis is that this is due to PR #124742, which adds rustfmt to the well-known cfgs list.
  • that hypothesis implies that this is a (mostly-)false alarm, much like #124684.
  • marking as triaged

Improvements

Rollup of 10 pull requests #124646 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-1.0%[-2.8%, -0.2%]24
Improvements (secondary)-0.9%[-1.6%, -0.3%]9
All (primary)-1.0%[-2.8%, -0.2%]24
  • the bulk of the improvements are to variations of html5ever and serde_derive.
  • skimming over the rollup list, I cannot identify an immediate root cause for improvement
  • but for now will treat it like a happy accident

Some hir cleanups #124401 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.1%[-0.2%, -0.1%]3
Improvements (secondary)-1.1%[-2.0%, -0.2%]2
All (primary)-0.1%[-0.2%, -0.1%]3
  • all improvements are to variations of typenum
  • the hir cleanups in question are largely to store AnonConst (e.g. for array lengths) in the HIR arena, and then move the ConstArg span over to AnonConst span instead.
  • inspection of typenum didn’t show any particular cases that seemed like the would stress AnonConst; maybe the benefit comes more from the places where we now pass a span by value instead of passing a pointer to it.

Mixed

Account for immutably borrowed locals in MIR copy-prop and GVN #123602 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.2%, 0.9%]10
Regressions (secondary)0.8%[0.2%, 2.6%]4
Improvements (primary)-0.5%[-1.1%, -0.2%]6
Improvements (secondary)-0.5%[-1.0%, -0.3%]8
All (primary)0.0%[-1.1%, 0.9%]16
  • html5ever opt-full regressed by 0.92%; libc in various incremental scenarios regressed by 0.30% to 0.39%.
  • the libc changes were anticipated in the perf build prior to merge; html5ever opt-full was not predicted there.
  • pnkfelix hypothesizes that this just reflects some extra-work from the compiler attempting to do the copy-propagation and global-value-numbering mir-optimizations on a larger set of immutably-borrowed locals, and is acceptable given the expected benefits.
  • marking as triaged

Rollup of 8 pull requests #124703 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.2%, 0.6%]4
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)-1.0%[-1.5%, -0.5%]4
All (primary)0.5%[0.2%, 0.6%]4
  • image opt-full regressed by 0.63%; html5ever debug-{incr-full,full} by ~0.5%, html5ever opt-incr-unchaged by 0.21%
  • already triaged by Kobzol, who hypothesizes that PR #124700 modified some inlining decisions.

Rollup of 4 pull requests #124716 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.3%[0.3%, 0.5%]6
Improvements (primary)-0.8%[-0.8%, -0.8%]1
Improvements (secondary)--0
All (primary)-0.8%[-0.8%, -0.8%]1
  • all regressions are secondary (specifically on unused-warnings benchmark)
  • regression identified by Kobzol as caused by PR #124584 “Various improvements to entrypoint code”
  • seems like noise to pnkfelix
  • marked as triaged

Nominated Issues

T-compiler

  • “New rustc nightly suggests adding a build.rs to use conditional compilation” rust#124800
    • @wesleywiser responded on the thread in this comment
    • a summary from @epage of T-cargo (last) discussion on the topic in this comment
      • with a question for T-compiler:

        If we go with lint configuration, any thoughts or concerns about Cargo “owning” lint configuration under [lints.rust] where Cargo translates the configuration into CLI flags for rustc, leaving rustc to be more generic?

    • Probably moving the discussion to next meeting of discuss this async

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

None

Next week’s WG checkins

Probably none