T Compiler Meeting Agenda 2022 08 11

T-compiler Meeting Agenda 2022-08-11


Other WG meetings


  • New MCPs (take a look, see if you like them!)
  • Old MCPs (not seconded, take a look)
    • “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 3 months ago)
    • “Add support for the LoongArch architecture” compiler-team#518 (last review activity: about 54 days ago)
    • “Add #[alias] attribute to allow symbol aliasing” compiler-team#526 (last review activity: about 19 days ago)
  • Pending FCP requests (check your boxes!)
    • “Update cc-rs to 1.0.73 for compiler + bootstrap” rust#99477
  • Things in FCP (make sure you’re good with it)
    • “Add import_name_type parameter to #[link]” compiler-team#525
    • “[RFC] Support .comment section like GCC/Clang (!llvm.ident)” rust#97550
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “Stabilize -Zgcc-ld=lld as -Clink-self-contained=linker -Clinker-flavor=gcc-lldcompiler-team#510
    • “Remove migrate borrowck mode” rust#95565
    • “Modify MIR building to drop repeat expressions with length zero” rust#95953
    • “Lang: Stabilize usage of rustc_nonnull_optimization_guaranteed on -1” rust#97122
    • “Remove a back-compat hack on lazy TAIT” rust#97346
    • “Make outlives::{components,verify} agree” rust#97406
    • “make cenum_impl_drop_cast deny-by-default” rust#97652
    • “make const_err show up in future breakage reports” rust#97743
    • “lub: don’t bail out due to empty binders” rust#97867
    • “allow unions with mutable references and tuples of allowed types” rust#97995
    • “do not mark interior mutable shared refs as dereferenceable” rust#98017
    • “session: stabilize split debuginfo on linux” rust#98051
    • “relate closure_substs.parent_substs() to parent fn in NLL” rust#98835

WG checkins

  • @_WG-diagnostics by @Esteban Küber and @oli (previous checkin):

    Checkin text

  • @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081 (previous checkin):

    Most notable changes

    • Add bootstrapping diagram #1421
    • Add gdb tips for symbol-mangling-version #1417
    • Add instructions to fix build errors in std after adding a new target #1412
    • Add documentation about Microsoft provided debuggers and CodeView/PDB… #1406
    • Document how to build a cross-compiler #1405
    • sync with hackmd: Inference of opaque types (impl Trait) #1399
    • Update the build instructions for the standard library #1389

    Most notable WIPs

    • date-check: updating-llvm #1424
    • Added detail to codegen section #1216
    • Document inert vs active attributes #1110
    • Explain the new valtree system for type level constants. #1097

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: “Iterate generics_def_id_map in reverse order to fix P-critical issue” rust#100340
    • Authored by @spastorino
    • Fixes rust#100340, P-critical regression (was initially flagged as P-medium)
  • No stable nominations for T-compiler this time.

T-rustdoc stable / T-rustdoc beta

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

:back: / :shrug: / :hand:

PRs S-waiting-on-team


  • No PRs waiting on T-compiler

Oldest PRs waiting for review


  • “Allow impl Fn() -> impl Trait in return position” rust#93582 (last review activity: 3 months ago
    • ping assigned reviewer @nikomatsakis
  • “Add TyAlias into rustc_type_ir TyKind enum” rust#97974 (last review activity: about 34 days ago)
    • waiting on T-libs/T-compiler
  • “Determine match_has_guard from candidates instead of looking up thir table again” rust#99110 (last review activity: about 30 days ago)
    • @Wesley Wiser was autoassigned the review. Re-roll?
  • “Use niche-filling optimization even when multiple variants have data.” rust#94075 (last review activity: about 30 days ago)
  • “Extend and expose API for {:x?} and {:X?} formatting” rust#99138 (last review activity: about 30 days ago)
    • unsure about the status: seems more like the author needs some input? @_Joshua Nelson left some comments
    • @_kennytm was autoassigned the review, reroll?

Issues of Note

Short Summary



  • “Wrong cast of u16 to usize on aarch64” rust#97463
    • Will be fixed by rust#97800 (pr has some tests failing)
  • “Regression in consteval: error[E0080]: could not evaluate static initializer (unable to turn pointer into raw bytes)” rust#99923
    • discussed last week in the context of PR rust#100229
    • decided to leave #99923 both open and P-critical


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

P-high regressions

P-high beta regressions

  • “Source of lifetime coercion is not reported starting in 1.63” rust#99256
    • @Esteban Küber pinged @_WG-diagnostics
    • issue without assignee yet

Unassigned P-high nightly regressions

  • for<'a> &'a T: 'a and closures regressed” rust#98437
    • discussed last week and re-assigned to T-types
    • slips into beta? change regression label?

Performance logs

triage logs for 2022-08-09

A pretty quiet week for performance. Unfortunately, by far the biggest change was a regression introduced by increasing the minimum libc version for linux-gnu targets. The exact reason for why this happened in this case is unclear, and it’s not easy to investigate. Luckily, the average regression introduced by this change was 0.4% which is fairly small, and many of the larger regressions were limited to doc builds.

Triage done by @rylev. Revision range: 792bc5a0..cc4dd6fc


mean max count
Regressions (primary) 0.5% 1.4% 146
Regressions (secondary) 0.8% 1.6% 78
Improvements (primary) N/A N/A 0
Improvements (secondary) -2.0% -4.0% 9
All (primary) 0.5% 1.4% 146

1 Regressions, 2 Improvements, 2 Mixed; 1 of them in rollups 42 artifact comparisons made in total


Increase the minimum linux-gnu versions #95026 (Comparison Link)

mean max count
Regressions (primary) 0.4% 1.6% 137
Regressions (secondary) 0.7% 1.6% 65
Improvements (primary) N/A N/A 0
Improvements (secondary) -0.6% -0.6% 2
All (primary) 0.4% 1.6% 137
  • This is difficult to debug as there was no change to code in the project, just in how things are built.
  • Most of the larger regressions are in doc builds where we have slightly higher tolerance for performance issues.
  • This means the regressions are something we can probably live with.


remove commit_unconditionally #99509 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) N/A N/A 0
Improvements (primary) -0.5% -1.0% 8
Improvements (secondary) -0.8% -0.8% 1
All (primary) -0.5% -1.0% 8

Rollup of 6 pull requests #100304 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) 1.5% 1.5% 1
Improvements (primary) N/A N/A 0
Improvements (secondary) -1.9% -4.0% 13
All (primary) N/A N/A 0


Warn about dead tuple struct fields #95977 (Comparison Link)

mean max count
Regressions (primary) N/A N/A 0
Regressions (secondary) 1.2% 1.5% 3
Improvements (primary) N/A N/A 0
Improvements (secondary) -1.4% -1.6% 6
All (primary) N/A N/A 0
  • The regressions are only in secondary tests and are more or less a wash (tipping slightly towards more improvements)

Add option to mir::MutVisitor to not invalidate CFG. #100089 (Comparison Link)

mean max count
Regressions (primary) 0.3% 0.4% 3
Regressions (secondary) 1.3% 1.5% 6
Improvements (primary) N/A N/A 0
Improvements (secondary) -1.5% -1.5% 1
All (primary) 0.3% 0.4% 3
  • This is a small enough regression that I don’t think we need to investigate it deeply.
  • It seems there’s more calls in type unification, but I don’t see how this change would impact that.
  • Left a comment on the PR

Nominated Issues


  • “compiletest: use target cfg instead of hard-coded tables” rust#100260
    • nominated by @simulacrum for awareness of the team


  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • @_WG-traits Impl Trait initiative by @oli
  • @_WG-llvm LLVM by @nagisa and @Nikita Popov