T Compiler Meeting Agenda 2022 03 31

T-compiler Meeting Agenda 2022-03-31

Tracking Issue

Announcements

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
  • Old MCPs (not seconded, take a look)
    • “Accept pc in place of unknown and unknown in place of pc for x86_64 and i?86 targets” compiler-team#441 (last review activity: 9 months ago)
    • “Make -Z binary-dep-depinfo the default behavior” compiler-team#464 (last review activity: 6 months ago)
    • “Tier 3 target proposal: riscv64gc-linux-android (Android target for riscv64gc)” compiler-team#472 (last review activity: 3 months ago)
    • -Dwarnings to cover all warnings” compiler-team#473 (last review activity: 3 months ago)
    • “Build-time execution sandboxing” compiler-team#475 (last review activity: 3 months ago)
    • “Dealing with type/const ambiguities” compiler-team#480 (last review activity: 2 months ago)
    • “Removing codegen logic for nvptx-nvidia-cuda (32-bit target)” compiler-team#496 (last review activity: about 13 days ago)
  • Pending FCP requests (check your boxes!)
    • “Tracking issue for Consistent no-prelude attribute (RFC 501)” rust#20561
    • “Increase the minimum linux-gnu versions” rust#95026
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “Stabilize native library modifier syntax and the whole-archive modifier specifically” rust#93901
    • “Lazy type-alias-impl-trait take two” rust#94081

WG checkins

  • @_WG-traits (generic work of the WG) by @nikomatsakis and @Jack Huey (previous checkin):

Checkin text

Checkin text

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Fix ice when error reporting recursion errors” rust#94391
    • Fixes #90319, #92148 and #93955
    • @Esteban Küber reviewed and nominated for beta-backport (regression is affecting a couple of past stable releases)
  • No stable nominations for T-compiler this time.

T-rustdoc beta / T-rustdoc stable

  • No backport nominations for T-rustdoc this time.

:back: / :shrug: / :hand:

PRs S-waiting-on-team

T-compiler

  • No new PRs waiting on T-compiler

Oldest PRs waiting for review

T-compiler

  • “Support #[global_allocator] without the allocator shim” rust#86844 (last review activity: 5 months ago)
    • cc: @pnkfelix
  • “Specialize infinite-type “insert some indirection” suggestion for Option” rust#91416 (last review activity: about 41 days ago)
    • cc: @Esteban Küber
  • “[perf only] Test Rust with opaque pointers” rust#94214 (last review activity: about 35 days ago)
    • cc: @eddyb
  • “Remove all json handling from rustc_serialize” rust#85993 (last review activity: about 33 days ago)
    • assigned to @Aaron Hill
    • (a few comments also from various people)
  • “Add special_module_name lint” rust#94467 (last review activity: about 29 days ago)
    • highfive bot assigned to @Matthew Jasper
    • probably needs a reviewer
  • “Create 2024 edition” rust#94461 (last review activity: about 29 days ago)
    • @mw assigned to @pnkfelix :-)
  • “create -Z force-allocator-shim codegen option” rust#94389 (last review activity: about 29 days ago)
    • @pnkfelix self-assigned to figure out to push #94389 or #86844 forward
  • “Handle generic bounds in a uniform way in HIR” rust#93803 (last review activity: about 37 days ago)
    • cc: @Esteban Küber
  • “Also cache the stable hash of interned Predicates” rust#94487 (last review activity: about 29 days ago)
    • @oli is it waiting for review? do you need a reviewer?
    • @mw added self to cc (see comment)

Issues of Note

Short Summary

P-critical

T-compiler

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

T-rustdoc

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

P-high regressions

P-high beta regressions

  • “No more auto-unrolling starting with LLVM 14” rust#94847

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs 2022-03-30

A mixed week: some minor regressions, but things overall improved for instruction counts.

Max RSS has gone up slightly over the past month, on the order of 0.5% regression according to benchmark summary. pnkfelix is following up on that with rustc-perf team on zulip

Triage done by @pnkfelix. Revision range: 3ea44938e21f0de8ae7d4f6399a8a30f97867c70..3e7514670db841a7f0d7656f3b13b1c8b2c11599

4 Regressions, 5 Improvements, 4 Mixed; 3 of them in rollups 30 Untriaged Pull Requests 63 comparisons made in total

Regressions

Rollup of 5 pull requests #95250

  • Arithmetic mean of relevant regressions: 2.2%
  • Largest regression in instruction counts: 11.1% on full builds of cargo-0.60.0 doc
  • Already triaged by oli-obk.
  • it is solely in rustdoc, and oli-obk has a plan to address it in the long term.

Properly track ImplObligations #91030

  • Arithmetic mean of relevant regressions: 1.9%
  • Largest regression in instruction counts: 3.8% on full builds of projection-caching check
  • triaged; this was anticipated.
  • The only primary regression was to diesel doc, and the regressions are justified by the improvement to the diagnostics.

Separate const prop lints from optimizations #94934

  • Arithmetic mean of relevant regressions: 1.2%
  • Largest regression in instruction counts: 2.1% on incr-full builds of unicode_normalization opt
  • Already triaged by oli-obk.
  • In short: this was expected, becaused we are doing const-prop twice now.
  • (The end-goal is stop optimizations from changing diagnostics. This PR is a step towards that goal.)

Rollup of 4 pull requests #95448

  • Arithmetic mean of relevant regressions: 1.5%
  • Largest regression in instruction counts: 2.5% on incr-patched: io error 6144 builds of issue-46449 debug
  • triaged
  • The only primary benchmark impacted by this was unicode-normalization-0.1.19, and that only saw a 0.50% regression on incr-patched: println and a 0.36% regression on full build. We can ignore that.
  • The only secondary benchmark impacted was issue-46449, which is trying to catch regression of quadratic blowup, not minor regressions.

Improvements

  • Introduce TtParser #95159
  • Overlap inherent impls #95082
  • resolve: Do not build expensive suggestions if they are not actually used #95255
  • Fix perf issue for auto trait selection #95333
  • Remove header field from clean::Function #95096

Mixed

Change Thir to lazily create constants #94876

  • Arithmetic mean of relevant regressions: 1.6%
  • Arithmetic mean of relevant improvements: -1.0%
  • Arithmetic mean of all relevant changes: -0.3%
  • Largest improvement in instruction counts: -2.8% on full builds of keccak check
  • Largest regression in instruction counts: 3.5% on full builds of tuple-stress check
  • Triaged.
  • The changes to the primary benchmarks are almost universally green here.
  • The secondary benchmarks are more of a mixed bag, but I think we can accept a 3.5% regression on tuple-stress given the overall benefits.

More macro expansion optimizations #95259

  • Arithmetic mean of relevant improvements: -1.5%
  • Arithmetic mean of all relevant changes: -1.1%
  • Largest improvement in instruction counts: -2.0% on incr-unchanged builds of diesel check
  • Largest regression in instruction counts: 0.4% on incr-full builds of unicode-normalization-0.1.19 opt
  • Already triaged by nnethercote
  • The perf wins clearly outweigh the losses here.

Rollup of 5 pull requests #95382

  • Arithmetic mean of relevant regressions: 2.2%
  • Arithmetic mean of relevant improvements: -0.4%
  • Arithmetic mean of all relevant changes: 1.2%
  • Largest improvement in instruction counts: -0.4% on incr-unchanged builds of deeply-nested-multi check
  • Largest regression in instruction counts: 3.2% on full builds of await-call-tree check
  • Left comment
  • Changes to the primary benchmarks seem like a wash and probably ignorable (0.33% worse for unicode-normalization-0.1.19, 0.33% better for ripgrep-13.0.0).
  • Re secondary benchmarks: 3% worse for await-call-tree (on six scenarios), which is more concerning. I assume PR #95120 is cause.
  • Leaving as untriaged.

Lazy type-alias-impl-trait take two #94081

  • Arithmetic mean of relevant regressions: 0.5%
  • Arithmetic mean of relevant improvements: -0.5%
  • Arithmetic mean of all relevant changes: -0.3%
  • Largest improvement in instruction counts: -1.0% on incr-full builds of wg-grammar check
  • Largest regression in instruction counts: 0.8% on full builds of projection-caching check
  • triaged
  • The actual performance changes indicate this ended up a win overall, based on the amount of green.

Nags requiring follow up

None

Nominated Issues

T-compiler

  • No nominated issues for T-compiler this time.

RFC

  • No nominated RFCs for T-compiler this time.