T Compiler Meeting Agenda 2024 04 25

T-compiler Meeting Agenda 2024-04-25

Announcements

  • Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let us know (or at least message @davidtwco or @Wesley Wiser so we can pass it along).

Other WG meetings (calendar link)

  • No meetings scheduled for next week

MCPs/FCPs

WG checkins

None today

Backport nominations

T-compiler beta / T-compiler stable

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

T-types stable / T-types beta

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

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

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

T-types

  • No P-critical issues for T-types 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 2024-04-23

A week dominated by small mixed changes to perf with improvements slightly outweighing regressions. There were no pure regressions, and many of the mixed perf results were deemed worth it for their potential improvements to runtime performance through further optimization from LLVM.

Triage done by @rylev. Revision range: ccfcd950..a77f76e2

Summary:

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 1.8%] 57
Regressions (secondary) 0.4% [0.2%, 1.9%] 26
Improvements (primary) -0.8% [-3.4%, -0.2%] 50
Improvements (secondary) -0.6% [-1.9%, -0.1%] 32
All (primary) -0.2% [-3.4%, 1.8%] 107

0 Regressions, 5 Improvements, 6 Mixed; 2 of them in rollups 62 artifact comparisons made in total

Regressions

None (😎)

Improvements

Simplify shallow resolver to just fold ty/consts #123537 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.3%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.9% [-1.4%, -0.2%] 8
Improvements (secondary) -0.3% [-0.4%, -0.2%] 11
All (primary) -0.8% [-1.4%, 0.3%] 9

rustdoc-search: single result for items with multiple paths #119912 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.3%, -0.2%] 3
Improvements (secondary) - - 0
All (primary) -0.2% [-0.3%, -0.2%] 3

interpret: use ScalarInt for bin-ops; avoid PartialOrd for ScalarInt #124113 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.3% [-0.4%, -0.2%] 4
Improvements (secondary) - - 0
All (primary) -0.3% [-0.4%, -0.2%] 4

PatRangeBoundary::compare_with: als add a fast-path for signed integers #124190 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -3.3% [-3.3%, -3.3%] 1
All (primary) - - 0

Rollup of 7 pull requests #124271 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.5% [0.5%, 0.5%] 1
Improvements (primary) -0.2% [-0.2%, -0.2%] 1
Improvements (secondary) -0.9% [-2.1%, -0.4%] 9
All (primary) -0.2% [-0.2%, -0.2%] 1

Mixed

Implement syntax for impl Trait to specify its captures explicitly (feature(precise_capturing)) #123468 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 4
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -0.8% [-0.8%, -0.8%] 1
All (primary) 0.2% [0.2%, 0.2%] 4
  • Very small regression on a stress test

At debuginfo=0, don’t inline debuginfo when inlining #123949 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.0% [0.3%, 1.8%] 5
Regressions (secondary) 1.0% [0.2%, 3.4%] 4
Improvements (primary) -0.9% [-2.4%, -0.1%] 22
Improvements (secondary) -1.2% [-1.8%, -0.2%] 10
All (primary) -0.6% [-2.4%, 1.8%] 27
  • Improvements outweighed the regressions and was deemed worth it by the reviewer.

Always display stability version even if it’s the same as the containing item #118441 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.3%] 2
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.2%, -0.2%] 1
Improvements (secondary) - - 0
All (primary) 0.1% [-0.2%, 0.3%] 3
  • Noise that is reversed in the next run.

Tell LLVM Vec::len is invariant across growth #123930 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.1%, 1.6%] 7
Regressions (secondary) 0.3% [0.2%, 0.5%] 11
Improvements (primary) -0.5% [-0.9%, -0.4%] 8
Improvements (secondary) -0.2% [-0.2%, -0.1%] 3
All (primary) -0.1% [-0.9%, 1.6%] 15
  • The regressions come from LLVM, and it was deemed worth it given the possibility for LLVM to perform more optimization.

fix normalizing in different ParamEnvs with the same InferCtxt #124203 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 4.1% [4.1%, 4.1%] 1
Improvements (primary) -0.7% [-2.4%, -0.2%] 9
Improvements (secondary) -0.9% [-0.9%, -0.9%] 1
All (primary) -0.7% [-2.4%, -0.2%] 9
  • Noise

Rollup of 5 pull requests #124241 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.2%, 1.6%] 7
Regressions (secondary) 0.3% [0.3%, 0.3%] 1
Improvements (primary) -0.9% [-2.8%, -0.3%] 7
Improvements (secondary) -3.9% [-3.9%, -3.9%] 1
All (primary) -0.1% [-2.8%, 1.6%] 14
  • More time spent in LLVM previously
  • Pinged the author and reviewer for their perspective.

Nominated Issues

T-compiler

  • “Tracking issue: 32bit x86 targets without SSE2 have unsound floating point behavior” rust#114479
    • Nominated by @apiraino (github comment, zulip prioritization topic)
    • This tracking issue shows that we have targets that intersect tier platforms support in different ways. For example i686 are tier 1 but i686 “non-SSE2” are tier 2 (and suffer from codegen unsoundnesses). All these differences are not apparent in our documentation. Should we add a bit of nuances to our target policy? If yes, how?

    • [Ralf] Altogether I think there are enough issues with floating point on x86 without SSE (this one, and also #115567) that IMO we should say that tier 1 hardfloat targets require SSE period. It is already the case that using feature flags to turn a hardfloat target into a softfloat target is unsound (Cc #116344), and we should simply hard-error in those cases (e.g. disabling the x87 feature on any hardfloat x86 target). IMO we should do the same when disabling SSE/SSE2 on an i686 target.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Enable DestinationPropagation by default.” rust#115105 (last review activity: 3 months ago)
    • cc @mw
  • “Remove unnecessary impl sorting in queries and metadata” rust#120812 (last review activity: 2 months ago)
    • @cjgillot
  • “Use Box<[T]> for ProcessResult::Changed” rust#121355 (last review activity: 2 months ago)
    • cc: @Esteban Küber? Note: @Michael Goulet (compiler-errors) was not in favour of this patch
  • “Handle .init_array link_section specially on wasm” rust#121533 (last review activity: 2 months ago)
    • cc @Esteban Küber
  • “Allow a MIR analysis to perform the state join directly” rust#114900 (last review activity: about 59 days ago)
    • cc: @cjgillot

Next week’s WG checkins

  • @_WG-async by @nikomatsakis and @tmandry
  • @_WG-diagnostics by @Esteban Küber and @oli

Next meetings' agenda draft: hackmd link