T Compiler Meeting Agenda 2022 11 24

T-compiler Meeting Agenda 2022-11-24

Announcements

Other WG meetings

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
    • No new proposals this time.
  • Old MCPs (not seconded, take a look)
    • “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 6 months ago)
      • :loudspeaker: Stale MCP: candidate for closing in about 2 weeks
      • Zulip discussion
    • “Add #[alias] attribute to allow symbol aliasing” compiler-team#526 (last review activity: 4 months ago)
      • Been suggested this is more a T-lang thing. Opened #t-lang>MCP #526
    • “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: 2 months ago)
    • “MCP: Flag to disable extended error info.” compiler-team#550 (last review activity: about 57 days ago)
    • “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: 2 months ago)
    • “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 30 days ago)
    • “Introduce a #[rustc::*] tool attribute namespace and provide a stable #[rustc::on_unimplemented] attribute” compiler-team#560 (last review activity: about 36 days ago)
    • -Z instrument-xray option” compiler-team#561 (last review activity: about 36 days ago)
    • “New tier-3 targets for OpenHarmony” compiler-team#568 (last review activity: about 4 days ago)
  • Pending FCP requests (check your boxes!)
    • “Change bindings_with_variant_name to deny-by-default” rust#104154
  • 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
    • “Make Sized coinductive, again” rust#100386
    • “Handle projections as uncovered types during coherence check” rust#100555
    • “Elaborate supertrait obligations when deducing closure signatures” rust#101834
    • “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
    • “Use token::Lit in ast::ExprKind::Lit.” rust#102944
    • “Remove drop order twist of && and || and make them associative” rust#103293
    • “Unreserve braced enum variants in value namespace” rust#103578

WG checkins

  • @_WG-self-profile @mw and @Wesley Wiser (previous checkin):

    nothing to report this cycle

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Bump the const eval step limit” rust#104782
    • Fixes #103814, P-high regression, pending review from @pnkfelix
    • issue was discussed last week
    • this PR replaces #103877 - should the beta nomination be removed there @oli ?

T-rustdoc beta / T-rustdoc stable

  • No backport nominations for T-rustdoc this time.

:back: / :shrug: / :hand:

PRs S-waiting-on-team

T-compiler

  • (hidden issues in progress or waiting on other teams, details here)

Oldest PRs waiting for review

T-compiler

  • “stop special-casing 'static in evaluation” rust#102472 (last review activity: about 55 days ago)
    • waiting for some comments from @nikomatsakis
  • “Track -Cprofile-use and -Cprofile-sample-use value by file hash, not file path” rust#100413 (last review activity: about 47 days ago)
    • waiting for some comments from @nikomatsakis
  • “Inferred lifetimes cleanup” rust#102673 (last review activity: about 49 days ago)
    • rust highfive added T-compiler: is it the case though?
  • “Fix #99684 through autoref in write! macro with a two-phased borrows retrocompat workaround” rust#100202 (last review activity: about 45 days ago)
    • anything more to review from T-compiler @eddyb ?
  • “make a help text for ‘cannot find macro’ actionable” rust#102881 (last review activity: about 43 days ago)
    • pending comment for @Michael Goulet (compiler-errors)

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 beta regressions

  • (issues #102754 and #103814 recently discussed in past meetings)

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2022-11-22

A fairly quiet week with regressions unfortunately slightly outweighing regressions. There was not any particular change of much note. Many of the regressions were justifiable since they were for critical bug fixes.

Triage done by @rylev. Revision range: 96ddd32c..a78c9bee

Summary:

(instructions:u) mean range count
Regressions (primary) 0.7% [0.2%, 3.0%] 76
Regressions (secondary) 1.5% [0.3%, 8.4%] 69
Improvements (primary) -0.7% [-1.8%, -0.2%] 18
Improvements (secondary) -1.4% [-3.2%, -0.2%] 35
All (primary) 0.4% [-1.8%, 3.0%] 94

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

Regressions

Rollup of 13 pull requests #104428 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.2% [0.3%, 3.3%] 14
Regressions (secondary) 2.1% [0.3%, 3.3%] 23
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 1.2% [0.3%, 3.3%] 14

Perform simple scalar replacement of aggregates (SROA) MIR opt #102570 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.2% [0.2%, 0.2%] 2
Regressions (secondary) 0.4% [0.2%, 0.8%] 6
Improvements (primary) - - 0
Improvements (secondary) -1.4% [-1.4%, -1.4%] 1
All (primary) 0.2% [0.2%, 0.2%] 2
  • #104404 is the cause of the regression.
  • Justification for this regression was posted #104404. Effectively this regression is taking us back to the baseline.

Attempt to reuse Vec<T> backing storage for Rc/Arc<[T]> #104205 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.4% [0.1%, 1.4%] 16
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) - - 0
  • This was reverted in #104571

Rollup of 11 pull requests #104555 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.4%, 0.5%] 2
Regressions (secondary) 1.3% [1.3%, 1.3%] 2
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.4% [0.4%, 0.5%] 2
-externs is noisy at the moment, and the two doc regressions for syn and webrender are small enough to not worry about.

Rollup of 8 pull requests #104600 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.7%] 3
Regressions (secondary) 6.1% [1.3%, 8.8%] 3
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.4% [0.2%, 0.7%] 3
  • #104411 seems to be causing most of this.
  • The regressions are few enough in number that I don’t think this is necessarily worth looking into.

Revert Vec/Rc storage reuse opt #104571 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.4%, 0.5%] 5
Regressions (secondary) 1.2% [1.2%, 1.2%] 2
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.5% [0.4%, 0.5%] 5
  • This removes a recently-merged optimization that caused CI failures because it doesn’t work reliably on all platforms.

Clean up and harden various methods around trait substs #104533 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.5%] 11
Regressions (secondary) 0.6% [0.2%, 0.9%] 27
Improvements (primary) - - 0
Improvements (secondary) -0.3% [-0.3%, -0.3%] 1
All (primary) 0.3% [0.2%, 0.5%] 11
  • Currently being investigated by @oli-obk in #104709

Improvements

Merge basic blocks where possible when generating LLVM IR. #103138 (Comparison Link)

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

Record LocalDefId in HIR nodes instead of a side table #104170 (Comparison Link)

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

Remove allow(rustc::potential_query_instability) from rustc_ast_lowering #104330 (Comparison Link)

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

Factor out conservative_is_privately_uninhabited #103454 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.9%, -0.2%] 22
Improvements (secondary) -0.7% [-0.7%, -0.7%] 2
All (primary) -0.4% [-0.9%, -0.2%] 22

Mixed

Rollup of 9 pull requests #104437 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.4%] 4
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -0.3% [-0.3%, -0.3%] 1
All (primary) 0.3% [0.2%, 0.4%] 4
  • Too small a regression for us to investigate this rollup (this is just barely passing the mark for being considered significant).

Use token::Lit in ast::ExprKind::Lit. #102944 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.7%] 16
Regressions (secondary) - - 0
Improvements (primary) -0.2% [-0.2%, -0.2%] 1
Improvements (secondary) -0.5% [-1.0%, -0.3%] 10
All (primary) 0.3% [-0.2%, 0.7%] 17
  • The wins and losses roughly balance out. Also, this will enable some additional improvements by shrinking the size of ast::Expr.

x86_64 SSE2 fast-path for str.contains(&str) and short needles #103779 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.3%, 0.6%] 4
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.5%, -0.3%] 5
Improvements (secondary) -1.0% [-1.3%, -0.6%] 4
All (primary) -0.1% [-0.5%, 0.6%] 9
  • A few wins, a few losses, it roughly balances out.

Shrink ast::Expr harder #101562 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 0.8%] 10
Regressions (secondary) 0.4% [0.1%, 0.7%] 10
Improvements (primary) - - 0
Improvements (secondary) -0.3% [-0.6%, -0.2%] 13
All (primary) 0.4% [0.2%, 0.8%] 10
  • Instruction count results are mixed. But the real results are for cycles and wall-time, which show lots of improvements.

Revert “Normalize opaques with escaping bound vars” #103509 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 0.6% [0.3%, 0.8%] 3
Improvements (primary) - - 0
Improvements (secondary) -1.6% [-2.2%, -0.3%] 6
All (primary) - - 0
  • This is a necessary fix for a compiler hang. Additionally the improvements outweigh the regressions and this is all confined to secondary benchmarks.

Rollup of 6 pull requests #104646 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.4%, 0.9%] 7
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -1.4% [-2.1%, -0.4%] 9
All (primary) 0.7% [0.4%, 0.9%] 7
  • Regressions are noise

Nominated Issues

T-compiler

  • No nominated issues for T-compiler this time.

RFC

  • No nominated RFCs for T-compiler this time.

Next week’s WG checkins

  • Generic Associated Types initiative by @Jack Huey
  • @_WG-diagnostics by @Esteban Küber and @oli