T Compiler Meeting Agenda 2022 11 03

T-compiler Meeting Agenda 2022-11-03

Announcements

Other WG meetings

MCPs/FCPs

  • 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: 6 months ago)
    • “Add #[alias] attribute to allow symbol aliasing” compiler-team#526 (last review activity: 3 months ago)
    • “Use RangeInclusive in SpanData instead of lo/hi” compiler-team#534 (last review activity: 2 months ago)
    • " Promote i586-unknown-linux-gnu to Tier 2 with Host Tools " compiler-team#543 (last review activity: 2 months ago)
    • “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: about 56 days ago)
    • “MCP: Flag to disable extended error info.” compiler-team#550 (last review activity: about 36 days ago)
    • “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: about 56 days ago)
    • “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 9 days ago)
    • “Introduce a #[rustc::*] tool attribute namespace and provide a stable #[rustc::on_unimplemented] attribute” compiler-team#560 (last review activity: about 15 days ago)
    • -Z instrument-xray option” compiler-team#561 (last review activity: about 16 days ago)
  • Pending FCP requests (check your boxes!)
    • “Unreserve braced enum variants in value namespace” rust#103578
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
  • Finalized FCPs (disposition merge)
    • “Make PROC_MACRO_DERIVE_RESOLUTION_FALLBACK a hard error” rust#84022
    • “Handle projections as uncovered types during coherence check” rust#100555
    • “make const_err a hard error” rust#102091
    • “make unaligned_reference a hard error” rust#102513
    • “make order_dependent_trait_objects show up in future-breakage reports” rust#102635
    • “Stabilize raw-dylib for non-x86” rust#102793

WG checkins

Backport nominations

T-compiler stable / T-compiler beta

  • No beta nominations for T-compiler this time.
  • 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

T-compiler

  • “Unreserve braced enum variants in value namespace” rust#103578
    • opened by @Vadim Petrochenkov
    • T-lang approved the change
    • it is now pending approval from @pnkfelix (comment)
  • “Make rustc_target usable outside of rustc” rust#103693
    • @Vadim Petrochenkov nominated for T-compiler discussion (comment)
    • @oli clarifies that from the compiler point of view no compatibility guarantees are needed (comment)
    • @eddyb suggests some implementation details (comment)
  • (4 other hidden issues in progress or waiting on other teams)

Oldest PRs waiting for review

T-compiler

  • skipped this week

Issues of Note

Short Summary

P-critical

T-compiler

  • “ld64.lld: error: too many personalities (4) for compact unwind to encode” rust#102754
  • (#103141, #103242, #103243 previously discussed and fixed in next stable)

T-rustdoc

  • 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 for 2022-11-02

Noise continues to make triaging a bit tedious. We’ve become good at identifying noise, but we may need to invest in trying to reduce it or automate some of the triaging needed to identify it. In terms of performance, this week ending up being positive albeit with improvements only outweighing regressions by a little. Some of the largest improvements were in reverts of previous regressions as well.

Triage done by @rylev. Revision range: 629a414d..822f8

Summary:

(instructions:u) mean range count
Regressions (primary) 1.7% [0.2%, 7.9%] 28
Regressions (secondary) 1.7% [0.2%, 7.0%] 97
Improvements (primary) -1.2% [-4.6%, -0.2%] 73
Improvements (secondary) -1.3% [-2.6%, -0.3%] 61
All (primary) -0.4% [-4.6%, 7.9%] 101

13 Regressions, 9 Improvements, 5 Mixed; 9 of them in rollups 41 artifact comparisons made in total

Regressions

Rollup of 6 pull requests #103572 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.3%] 3
Regressions (secondary) 0.3% [0.3%, 0.3%] 1
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.3% [0.2%, 0.3%] 3
  • Small number and severity of regressions means that we don’t need to follow up on this.

Rollup of 5 pull requests #103671 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 1.5%] 14
Regressions (secondary) 2.0% [0.5%, 4.1%] 18
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.4% [0.2%, 1.5%] 14
  • Most of the secondary regressions seem to be noise, but the primary regressions are unlikely to be.
  • A perf run was done for #103641, but nothing showed up.
  • A new attempt for #103550 was kicked off.

Fix line numbers for MIR inlined code #103071 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.0% [0.6%, 2.2%] 8
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.0% [0.6%, 2.2%] 8
  • Perf regression seems real and @wesleywiser has committed to investigate.

poll_fn and Unpin: fix pinning #102737 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 2.0% [0.4%, 4.1%] 12
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.3% [1.2%, 1.4%] 2

Introduce UnordMap, UnordSet, and UnordBag (MCP 533) #102698 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 1.8% [0.4%, 4.1%] 14
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.3% [1.2%, 1.4%] 2

Rollup of 8 pull requests #103727 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 1.9% [0.4%, 4.1%] 13
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.3% [1.2%, 1.4%] 2

Bump to 1.67.0 #103731 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 2.1% [0.5%, 4.1%] 12
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.3% [1.2%, 1.4%] 2

update Miri #103721 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 3.1% [0.4%, 4.1%] 7
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.3% [1.2%, 1.4%] 2

ci: Bring back ninja for dist builders #103295 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.5% [0.2%, 7.2%] 22
Regressions (secondary) 2.0% [0.2%, 6.5%] 68
Improvements (primary) - - 0
Improvements (secondary) -1.0% [-1.0%, -1.0%] 1
All (primary) 1.5% [0.2%, 7.2%] 22

Don’t use usub.with.overflow intrinsic #103299 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 3.6% [3.2%, 4.1%] 6
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.3% [1.2%, 1.4%] 2

Include both benchmarks and tests in the numbers given to TeFiltered{,Out} #103795 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 3.6% [3.2%, 4.1%] 6
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.3% [1.2%, 1.4%] 2

(almost) Always use ObligationCtxt when dealing with canonical queries #103590 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 2.2% [1.6%, 2.9%] 6
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) - - 0
  • This could be noise, but it might not be - either way it’s too small of a regression to worry about as discussed here.

Track where diagnostics were created. #103217 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 2.2% [1.6%, 2.8%] 6
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) - - 0
  • The likelihood that this is noise is pretty high as you can see from the end of this graph.

Improvements

Revert “Unify tcx.constness and param env constness checks” #103284 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-1.0%, -0.2%] 43
Improvements (secondary) -1.0% [-2.7%, -0.1%] 36
All (primary) -0.4% [-1.0%, -0.2%] 43

privacy: Rename “accessibility levels” to “effective visibilities” #102233 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -2.0% [-4.0%, -0.4%] 12
All (primary) -1.3% [-1.4%, -1.2%] 2

Do not consider repeated lifetime params for elision. #103450 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.9% [-1.4%, -0.2%] 3
Improvements (secondary) -1.9% [-4.0%, -0.4%] 13
All (primary) -0.9% [-1.4%, -0.2%] 3

Rollup of 8 pull requests #103745 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -2.0% [-4.0%, -0.5%] 12
All (primary) -1.3% [-1.4%, -1.2%] 2

Rollup of 5 pull requests #103755 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -3.5% [-4.0%, -3.1%] 6
All (primary) -1.3% [-1.4%, -1.2%] 2

rustdoc: Simplify modifications of effective visibility table #103010 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 1.1% [1.1%, 1.1%] 1
Improvements (primary) -0.6% [-1.3%, -0.3%] 21
Improvements (secondary) -1.1% [-1.5%, -0.3%] 21
All (primary) -0.6% [-1.3%, -0.3%] 21

Update LLVM submodule #103479 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -3.4% [-3.9%, -3.1%] 6
All (primary) -1.3% [-1.4%, -1.2%] 2

Use br instead of switch in more cases. #103331 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -2.0% [-4.6%, -0.4%] 34
Improvements (secondary) -2.2% [-3.3%, -1.0%] 12
All (primary) -2.0% [-4.6%, -0.4%] 34

Enable x.py check for miri #102950 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -3.5% [-4.0%, -3.1%] 6
All (primary) -1.3% [-1.4%, -1.2%] 2

Mixed

Remove allow(rustc::potential_query_instability) in rustc_const_eval #102674 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.4%] 1
Regressions (secondary) 0.6% [0.3%, 0.8%] 18
Improvements (primary) -0.6% [-1.4%, -0.2%] 5
Improvements (secondary) -2.7% [-3.9%, -0.3%] 8
All (primary) -0.5% [-1.4%, 0.4%] 6

Rollup of 7 pull requests #103714 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.5% [0.4%, 0.7%] 5
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -1.9% [-4.0%, -0.4%] 12
All (primary) -1.3% [-1.4%, -1.2%] 2

Rollup of 10 pull requests #103829 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [1.2%, 1.4%] 2
Regressions (secondary) 3.6% [3.2%, 4.1%] 6
Improvements (primary) - - 0
Improvements (secondary) -1.0% [-2.0%, -0.2%] 13
All (primary) 1.3% [1.2%, 1.4%] 2

Rollup of 6 pull requests #103832 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.3% [0.4%, 2.2%] 2
Regressions (secondary) 0.6% [0.3%, 0.9%] 2
Improvements (primary) -1.3% [-1.4%, -1.2%] 2
Improvements (secondary) -1.9% [-3.9%, -0.3%] 14
All (primary) 0.0% [-1.4%, 2.2%] 4

Rollup of 5 pull requests #103841 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.4%, 0.6%] 8
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -2.1% [-2.8%, -1.7%] 7
All (primary) 0.5% [0.4%, 0.6%] 8
  • Seems like #103760 is the culprit.

Nominated Issues

T-compiler

  • “libcompiler-builtins contains DWARF5 debuginfo in 1.62.0” rust#98746
    • (from previous meeting): nominated by @pnkfelix, slipped prioritization and went unnoticed (was not labelled as regression)
    • comment with some context
  • “Upgrade mingw-w64 on CI” rust#100178
    • here is some context on versions: comment
    • nominated by @cuviper (comment) for weighing in the compatibility point of view, also considering the upcoming LLVM16 comment
    • provides a summary of options
  • “Remove save-analysis.” rust#101841
    • from last week: nominated by Wesley to decide when landing this (comment) and allow other tooling to migrate to rust-analyzer Zulip discussion
  • “Android NDK r25b changes will break developers using r22b or older” rust#103673
    • First comment has a lot of useful context
    • Nominated by @simulacrum (comment), suggests a rollback of #102332 or tweak the new min. version threshold
    • Discussed also on Zulip
    • @apiraino: maybe an FCP? perhaps worth mentioning that the suggested new Android NDK min. version would be a jump (r15c -> r25b) to the latest LTS (released in Oct. 2022)
  • “Make rustc_target usable outside of rustc” rust#103693

RFC

  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • Types team by @nikomatsakis and @Jack Huey
  • @_WG-mir-opt MIR Optimizations by @oli