T Compiler Meeting Agenda 2022 04 14

T-compiler Meeting Agenda 2022-04-14

Announcements

  • Tomorrow time:2022-04-15T13:00:00+02:00 Types Team: Deep-dive on Lazy TAIT calendar link
  • Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let the Core team know (or at least message @pnkfelix or @Wesley Wiser so we can pass it along).
  • pnkfelix unilaterally approved PR 94461: Create (unstable) 2024 edition. However, if any of you think that step should instead go through an MCP, let me know.

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: 4 months ago)
    • -Dwarnings to cover all warnings” compiler-team#473 (last review activity: 4 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 27 days ago)
    • “Add yeet experimentally” compiler-team#501 (last review activity: about 13 days ago)
  • Pending FCP requests (check your boxes!)
    • “Tracking issue for Consistent no-prelude attribute (RFC 501)” rust#20561
    • “Tracking Issue for -Z terminal-widthrust#84673
    • “Increase the minimum linux-gnu versions” rust#95026
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “Fix constants not getting dropped if part of a diverging expression” rust#94775
    • “[let_chains] Forbid let inside parentheses” rust#95008

WG checkins

@WG-Self-Profile checkin by @mw / @Wesley Wiser (previous checkin):

@lqd is improving the way we capture arguments to self-profile data with the goal of getting much more detailed information about proc-macro expansions in profile traces. (#95689)

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Check that all hidden types are the same and then deduplicate them.” rust#95731
    • beta backport postponed to this week (prev. discussion)
    • cc: @oli, since patch author

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 PRs waiting on T-compiler this time.

Oldest PRs waiting for review

T-compiler

  • “Reject #[thread_local] attribute on non-static items” rust#95006 (last review activity: about 21 days ago)
    • rustbot assigned to @Wesley Wiser, reroll dice?
    • maybe PR missed the mention last week (in case sorry for the double reminder)
  • “remove find_use_placement” rust#95194 (last review activity: about 22 days ago)
    • PR author is looking for a reviewer (they asked @pnkfelix since this should fix #94941)
  • “Check var scope if it exist” rust#94849 (last review activity: about 20 days ago)
    • last review from @oli
    • PR is probably ready for another review pass
  • “Fix late-bound ICE” rust#92289 (last review activity: about 20 days ago)
    • after last review from @Esteban KΓΌber, unsure if it’s now waiting on author
    • (pending a rebase)
  • “when checking pointee metadata, canonicalize the Sized check” rust#95315 (last review activity: about 19 days ago)
    • Probably needs a reviewer
  • “Add round_ties_even to f32 and f64rust#95317 (last review activity: about 19 days ago)
    • Probably needs a reviewer (for the compiler part)
  • “make unaligned_references lint deny-by-default” rust#95372 (last review activity: about 17 days ago)
    • Probably needs an opinion from T-compiler about enabling the lint (comment)

Issues of Note

Short Summary

P-critical

T-compiler

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

T-rustdoc

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

P-high regressions

P-high stable regressions

  • rustc 1.59/1.60 builds musl binaries that segfault, when compiling with musl-gcc wrappers, due to static-pie default rust#95926

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 2022-04-12

A week with a large amount of changes in rollups, which makes performance triage difficult. The performance team and the infra team are working on finding ways to automate marking PRs as likely a poor choice for rolling up. Otherwise, the week overall saw a ~1% improvement in incremental check builds, with smaller improvements to incremental debug and release builds. A number of benchmarks have been updated in the last few weeks, which has meant a decrease in the automated noise assessment’s algorithm performance, but that should settle out to steady state behavior on its own in the next few days.

Triage done by @simulacrum. Revision range: 949b98cab8a186b98bf87e64374b8d0848c55271..4e1927db3c399fa34dc71992bd5dbec09f945c3d

5 Regressions, 4 Improvements, 7 Mixed; 7 of them in rollups 50 artifact comparisons made in total

Regressions

Update libc to 0.2.121 #95688 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 8 19 0 0 8
mean 1.2% 0.9% N/A N/A 1.2%
max 1.2% 1.2% N/A N/A 1.2%
  • This is pretty likely to just be natural increases in compile times when key dependencies like libc increase in size.

Rollup of 6 pull requests #95840 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 10 21 0 3 10
mean 0.6% 0.9% N/A -0.4% 0.6%
max 1.2% 1.3% N/A -0.5% 1.2%
  • Primarily limited to doc builds, seems likely to be caused by #95769.

Rollup of 7 pull requests #95889 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 5 0 0 0 5
mean 0.3% N/A N/A N/A 0.3%
max 0.5% N/A N/A N/A 0.5%
  • Unclear cause, and fairly small regression. Given this is a rollup likely not worth the time to investigate – benefit/cost tradeoff is not worth it.

Faster parsing for lower numbers for radix up to 16 (cont.) #95399 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 0 14 0 0 0
mean N/A 0.3% N/A N/A N/A
max N/A 0.5% N/A N/A N/A
  • Unclear that this will be an easy regression to investigate, changes are pretty extensive, and justification slim beyond theoretical microbenchmarks.

Rollup of 7 pull requests #95855 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 0 9 5 1 5
mean N/A 1.0% -0.8% -1.0% -0.8%
max N/A 1.7% -1.1% -1.0% -1.1%

Improvements

Mixed

Rollup of 5 pull requests #95667 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 17 39 14 0 31
mean 6.2% 7.9% -0.8% N/A 3.1%
max 39.4% 38.9% -1.6% N/A 39.4%
  • Investigation shows this regression to be primarily caused by new support for diagnostic translations; investigation is ongoing, but it sounds like there are ways to claw back some of the performance hit.

Rollup of 8 pull requests #95702 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 2 6 2 6 4
mean 0.3% 1.1% -0.2% -0.4% 0.1%
max 0.4% 1.2% -0.2% -0.7% 0.4%
  • Unclear cause. Regression might be noise, but it’s hard to say – the keccak benchmark is in line with the ~1% noise we’ve seen elsewhere this week, but the other benchmarks (particularly in the primary category) seem potentially less likely to be noise. deep-vector is also affected.

Rollup of 6 pull requests #95742 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 6 31 12 10 18
mean 0.4% 0.5% -0.6% -0.4% -0.3%
max 0.7% 0.8% -2.4% -0.6% -2.4%
  • Fairly large number of benchmarks showing small-ish changes, both positive and negative. Cause is unclear.

Avoid accessing HIR from MIR passes #95487 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 0 9 1 0 1
mean N/A 0.5% -0.6% N/A -0.6%
max N/A 0.9% -0.6% N/A -0.6%

Add new Deinit statement #95125 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 27 39 4 17 31
mean 0.5% 1.4% -0.9% -1.0% 0.3%
max 1.6% 4.1% -1.4% -2.2% 1.6%

Rollup of 7 pull requests #95944 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 0 6 5 9 5
mean N/A 0.4% -0.2% -0.5% -0.2%
max N/A 0.5% -0.4% -1.8% -0.4%

Respect -Z verify-llvm-ir and other flags that add extra passes when combined with -C no-prepopulate-passes in the new LLVM Pass Manager. #95893 (Comparison Link)

Regressions 😿 (primary) Regressions 😿 (secondary) Improvements πŸŽ‰ (primary) Improvements πŸŽ‰ (secondary) All 😿 πŸŽ‰ (primary)
count 0 3 0 6 0
mean N/A 0.5% N/A -0.4% N/A
max N/A 0.6% N/A -0.5% N/A

Nominated Issues

T-compiler

  • “Allow dynamic linking on ios.” rust#95847
    • nominated by @Wesley Wiser to discuss the possibility to enable dynamic linking back again
    • previous discussion in pull request rust#77716

RFC

  • No nominated RFCs for T-compiler this time.