T Compiler Meeting Agenda 2021 12 16

T-compiler Meeting Agenda 2021-12-16

Tracking Issue



  • New MCPs (take a look, see if you like them!)
    • No new proposals this time.
  • Old MCPs (not seconded, take a look)
    • “CI should exercise (subset of) tests under –stage 1” compiler-team#439 (last review activity: 3 months ago)
    • “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: 5 months ago)
    • “Make -Z binary-dep-depinfo the default behavior” compiler-team#464 (last review activity: 2 months ago)
    • “Tier 3 target proposal: riscv64gc-linux-android (Android target for riscv64gc)” compiler-team#472 (last review activity: about 6 days ago)
    • -Dwarnings to cover all warnings” compiler-team#473 (last review activity: about 6 days ago)
  • Pending FCP requests (check your boxes!)
    • “Stabilize -Z instrument-coverage as -C instrument-coveragerust#90132
    • “Stabilize -Z print-link-args as -C print-link-argsrust#91606
  • Things in FCP (make sure you’re good with it)
    • “Tracking issue for RFC 2115: In-band lifetime bindings” rust#44524
  • Accepted MCPs
    • No new accepted proposals this time.
  • Finalized FCPs (disposition merge)
    • “Stabilise feature(const_generics_defaults)rust#90207
    • “rustdoc: accept --out-dir and soft-deprecate --outputrust#91260

WG checkins

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: “Deduplicate projection sub-obligations” rust#90423
    • fixes rust#91598, a P-critical compile-time regression
  • :beta: “Sync portable-simd to remove autosplats” rust#91484
    • PR provided by @Jubilee
    • fixes rust#90904, P-high regression in libs from stable
  • :beta: “Revert setting a default for the MACOSX_DEPLOYMENT_TARGET env var for linking” rust#91870
    • fixes rust#91372, a breaking change on macOS targets that prevented compiling against core crates
  • :beta: “Fix HashStable implementation on InferTy” rust#91892
    • opened by @Michael Goulet
    • fixes rust#91807 a regression from stable that prevents valid code to compile in Rust 1.57
  • :stable: “Deduplicate projection sub-obligations” rust#90423
    • fixes rust#91598, a P-critical compile-time regression

T-rustdoc beta / T-rustdoc stable

  • No backport nominations for T-rustdoc this time.

:back: / :shrug: / :hand:

PRs S-waiting-on-team


  • “Stabilize -Z print-link-args as -C print-link-argsrust#91606
    • @Wesley Wiser proposed merge of the RFC (pending one comment from @Vadim Petrochenkov)

Oldest PRs waiting for review


  • “Fix ICE with inferred type in const or static item” rust#89161 (last review activity: about 57 days ago)
    • last review from Niko
  • improve type abiguity error for functions and methods rust#89862 (last activity about 2 month ago)
    • PR author @lcnr
    • previously reviewed by @Esteban K├╝ber
    • PR seems to need another round of review

Issues of Note

Short Summary



  • “Huge compile-time regression in beta/nightly” rust#91128
    • issue author mentions that disabling the new LLVM pass manager makes the regression disappear
    • an MCVE is at this comment
    • @nikic followed up with some insights and an LLVM patch #D115497
  • “Compile-time regression between 1.56.1 and 1.57.0 for deeply nested decorator types” rust#91598
    • @Aaron Hill provided a fix in PR rust#90423
    • patch is beta- and stable-backport nominated


  • No P-critical issues for T-rustdoc 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 2021-12-14

This week’s report started with 6 regressions; after eliminating truly obvious noise, we are left with just 2 minor regressions. Of the cases that regressed, I think the only interesting one is keccak (regressed by 1.73% in PR #91549). But don’t be too depressed: keccak was also improved up to 23% by PR #85013 (!); thanks to @simulacrum for that PR.

Triage done by @pnkfelix. Revision range: e2116acae59654bfab2a9729a024f3e2fd6d4b02..404c8471aba60c2d837fa728e7c729a0f52d5830

2 Regressions, 5 Improvements, 3 Mixed; 1 of them in rollups 30 Untriaged pull-requests 48 comparisons made in total


“Support AVR for inline asm!” #91224

  • Moderate regression in instruction counts (up to 0.8% on incr-unchanged builds of externs)
  • This regression is solely isolated to variants of the externs benchmark.
  • It seems like a near certainty that the regression reported here is noise exacerbated by this pathological benchmark.
  • Marked as triaged.

“Eliminate ConstnessAnd again” #91549

  • Large regression in instruction counts (up to 3.1% on full builds of inflate)
  • This PR went through many rounds of performance evaluation and tuning.
  • The only “real” regressions are likely to be inflate and keccak, and I am suspicious of inflate based on its sensitivity in other PR’s.
  • I’m leaving this PR in this week’s report largely just to draw attention to the problem we face in trying to evalute impact of cases like this.


  • “Avoid string validation in rustc_serialize, check a marker byte instead” #91407
  • “Sync portable-simd to remove autosplats” #91484
  • “replace vec::Drain drop loops with drop_in_place” #85157
  • “replace dynamic library module with libloading” #90716
  • “manually implement Hash for DefId” #91660


“Replace dominators algorithm with simple Lengauer-Tarjan” #85013

“Rollup of 6 pull requests” #91799

  • Very large improvement in instruction counts (up to -5.9% on incr-unchanged builds of inflate)
  • Small regression in instruction counts (up to 0.8% on incr-unchanged builds of issue-88862)
  • I don’t yet now hat’s up with the regression here to issue-88862.

“Deduplicate projection sub-obligations” #90423

  • Very large improvement in instruction counts (up to -6.2% on full builds of deeply-nested)
  • Small regression in instruction counts (up to 0.5% on full builds of regression-31157)
  • This is a targetted fix to address performance regressons that leaked into 1.57. It has been beta-nominated for backport.

Nominated Issues



  • No nominated RFCs for T-compiler this time.