T Compiler Meeting Agenda 2023 09 07

T-compiler Meeting Agenda 2023-09-07

Announcements

Other WG meetings (calendar link)

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
    • “Allow overriding default codegen backend on a per-target basis” compiler-team#670
    • “Add infrastructure to “compute the ABI of a Rust type, described as a C type”” compiler-team#672
  • Old MCPs (stale MCP might be closed as per MCP procedure)
    • None at this time
  • Old MCPs (not seconded, take a look)
    • “Consistently use “region” terminology in later stages of the compiler” compiler-team#634 (last review activity: 3 months ago)
    • “Add a new --build-id flag to rustc” compiler-team#635 (last review activity: 3 months ago)
    • “Simplify and improve explicitness of the check-cfg syntax” compiler-team#636 (last review activity: 2 months ago)
    • “Add support for visionOS targets” compiler-team#642 (last review activity: about 5 days ago)
    • “Add illumos Tier3 targets” compiler-team#644 (last review activity: about 44 days ago)
    • “Promote loongarch64-unknown-none* to Tier 2” compiler-team#664(last review activity: about 20 days ago)
    • “Match the behavior of strip and split-debuginfo across platforms” compiler-team#669(last review activity: about 2 days ago)
  • Pending FCP requests (check your boxes!)
    • “Retire the mailing list and make all decisions on zulip” compiler_team#649 (Zulip)
    • “Tracking issue for dyn upcasting coercion” rust#65991
    • “stabilize combining +bundle and +whole-archive link modifiers” rust#113301
    • “Support overriding warnings level for a specific lint via command line” rust#113307
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
    • No new accepted proposals this time.
  • Finalized FCPs (disposition merge)
    • No new finished FCP (disposition merge) this time.

WG checkins

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

    Checkin text

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: [1.73.0-beta.4] “fix version for abi_thiscall to 1.73.0, which was forgotten to change when stabilized and (later) moved to beta” rust#115446
    • updates the abi_thiscall version
  • :beta: [1.73.0-beta.4] “Don’t require Drop for [PhantomData<T>; N] where N and T are generic, if T requires Droprust#115527
    • patch authored by @oli
    • fixes #115403 and #115410, probably P-high regressions
  • :beta: [1.73.0-beta.4] “implied bounds: do not ICE on unconstrained region vars” rust#115559
    • patch authored by @lcnr
    • fixes #112832 (unclear the priority evaluation, comment)
    • also nominated for stable backport
  • :beta: “Remove assert that checks type equality” rust#115215
    • still open and being reviewed. nominated by @apiraino since already candidate for backports (comment)
  • :stable: [1.72.1] “implied bounds: do not ICE on unconstrained region vars” rust#115559

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

Note: Rust stable 1.72.1 is planned for Sept. 14th

T-compiler

  • “ICE: unexpected initial operand type.” rust#114858
    • Originated in #113108 (comment)
    • Should be addressed by #115215, authored by @Onur (onur-ozkan), being reviewed by @Michael Goulet (compiler-errors) (PR likely candidate for a backport)
  • “ScalarReplacementOfAggregates causes rustc to emit invalid LLVM debuginfo (and sometimes rustc segfaults)” rust#115113
    • addressed in #115113, just waiting for the next beta (comment)
  • “Failed assert 2 != 2 after update to LLVM 17” rust#115385

T-types

  • “RPIT hidden types can be ill-formed” rust#114728
    • hits some real world crates (comment)
    • should be addressed by #114470 by @Michael Goulet (compiler-errors), subject to RFC t-type consensus
    • a parallel effort to fix in #114933 by @aliemjay, being reviewed by @lcnr (suggests waiting for this PR, comment)

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 2023-09-05

A lot of spurious noise this week from a few benchmarks (bitmaps-3.1.0, libc, and even cargo-0.60.0 at a few points). Beyond that, we had a few small improvements associated with the trait system and with parallel-rustc.

Triage done by @pnkfelix. Revision range: cedbe5c7..15e52b05

Summary:

(instructions:u) mean range count
Regressions (primary) 0.6% [0.2%, 1.2%] 11
Regressions (secondary) 1.0% [0.2%, 2.0%] 40
Improvements (primary) -1.9% [-10.2%, -0.3%] 69
Improvements (secondary) -1.5% [-3.7%, -0.4%] 26
All (primary) -1.5% [-10.2%, 1.2%] 80

4 Regressions, 7 Improvements, 8 Mixed; 2 of them in rollups 66 artifact comparisons made in total

Regressions

Adapt table sizes to the contents, accommodating u64 rmeta offsets #113542 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.5% [0.2%, 1.2%] 11
Regressions (secondary) 0.8% [0.2%, 1.3%] 26
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.5% [0.2%, 1.2%] 11
  • already marked as triaged.

Use conditional synchronization for Lock #111713 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 2.3% [2.3%, 2.3%] 1
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 2.3% [2.3%, 2.3%] 1
  • the measured regression appears spurious
  • marked as triaged

update Miri #115496 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.2%, 0.4%] 4
Regressions (secondary) 0.5% [0.3%, 0.6%] 5
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.3% [0.2%, 0.4%] 4
  • believe to be spurious, marking as triaged

Rollup of 5 pull requests #115553 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.7% [0.7%, 0.8%] 6
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) - - 0
All (primary) 0.7% [0.7%, 0.8%] 6
  • believe to be spurious, marking as triaged

Improvements

Don’t record spans for predicates in coherence #115392 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.1% [-2.5%, -0.3%] 18
Improvements (secondary) -0.8% [-1.0%, -0.2%] 8
All (primary) -1.1% [-2.5%, -0.3%] 18

Use OnceLock for SingleCache #115422 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.4%, -0.4%] 2
Improvements (secondary) -0.5% [-0.6%, -0.3%] 8
All (primary) -0.4% [-0.4%, -0.4%] 2

Fall through when resolving elided assoc const lifetimes #115429 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.0% [-1.5%, -0.6%] 7
Improvements (secondary) - - 0
All (primary) -1.0% [-1.5%, -0.6%] 7

Don’t manually compute param indices when adding implicit Sized and ConstParamHasTy #115361 (Comparison Link)

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

Encode DepKind as u16 #115391 (Comparison Link)

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

Move RawOsError defination to sys #115493 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.6% [-0.6%, -0.6%] 3
Improvements (secondary) - - 0
All (primary) -0.6% [-0.6%, -0.6%] 3
  • (I suspect this is spurious)

read_via_copy: don’t prematurely optimize away the read #115531 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -0.7% [-0.7%, -0.7%] 5
Improvements (secondary) - - 0
All (primary) -0.7% [-0.7%, -0.7%] 5
  • (I suspect this is spurious)

Mixed

interpret: fix projecting into an unsized field of a local #114483 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) 2.0% [1.9%, 2.1%] 6
Improvements (primary) -2.2% [-2.2%, -2.2%] 1
Improvements (secondary) -0.4% [-0.4%, -0.4%] 3
All (primary) -2.2% [-2.2%, -2.2%] 1
  • Ralf notes: “Regressions only affect our ctfe stress test, so it’s likely some exaggerated consequence of a tiny change.”
  • marked as triaged

Lower Or pattern without allocating place #111752 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.4% [0.2%, 1.0%] 8
Regressions (secondary) 0.9% [0.5%, 1.6%] 21
Improvements (primary) -1.0% [-3.7%, -0.3%] 10
Improvements (secondary) -0.4% [-0.5%, -0.3%] 3
All (primary) -0.3% [-3.7%, 1.0%] 18
  • nnethercote notes: “Performance-wise, icounts/cycles/wall-times have a mix of wins and losses that more or less balance out. But binary size has lots of wins, which is nice.”
  • marked as triaged

Skip rendering metadata strings from include_str!/include_bytes! #115286 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.3%] 1
Regressions (secondary) 0.4% [0.3%, 0.7%] 6
Improvements (primary) -2.9% [-10.3%, -0.3%] 28
Improvements (secondary) -2.6% [-3.7%, -1.7%] 9
All (primary) -2.8% [-10.3%, 0.3%] 29
  • saethlin notes: “Regressions look like recovery from a spurious improvement in the previous run, and are way less significant than the improvements.”
  • already marked as triaged

bootstrap: use git merge-base for LLVM CI download logic #115409 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.0% [0.6%, 1.5%] 7
Regressions (secondary) - - 0
Improvements (primary) -0.4% [-0.4%, -0.4%] 1
Improvements (secondary) -0.4% [-0.5%, -0.3%] 2
All (primary) 0.8% [-0.4%, 1.5%] 8
  • this is a collection of spurious regressions to bitmaps-3.1.0
  • marked as triaged

Add note on non-exhaustiveness when matching on str and nested non-exhaustive enums #115270 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.1% [0.8%, 1.4%] 6
Regressions (secondary) - - 0
Improvements (primary) - - 0
Improvements (secondary) -0.5% [-0.5%, -0.5%] 1
All (primary) 1.1% [0.8%, 1.4%] 6
  • seems like continued spurious noise on bitmaps-3.1.0
  • marked as triaged

Rollup of 5 pull requests #115518 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 7.1% [0.7%, 13.6%] 2
Regressions (secondary) - - 0
Improvements (primary) -1.1% [-1.5%, -0.7%] 7
Improvements (secondary) - - 0
All (primary) 0.8% [-1.5%, 13.6%] 9
  • 13.6% regression to cargo-0.60.0 seems spurious (!), since it immediately returned to normal in #115491
  • marked as triaged

Outline panicking code for RefCell::borrow and RefCell::borrow_mut #115491 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 1.0% [0.6%, 1.5%] 8
Regressions (secondary) - - 0
Improvements (primary) -6.3% [-12.0%, -0.6%] 2
Improvements (secondary) -0.5% [-0.6%, -0.5%] 4
All (primary) -0.4% [-12.0%, 1.5%] 10
  • as lqd notes: “bitmaps and cargo opt incr-unchanged kinda look noisy atm”
  • marked as triaged

Do not require associated types with Self: Sized to uphold bounds when confirming object candidate #115467 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.6% [0.6%, 0.6%] 2
Regressions (secondary) - - 0
Improvements (primary) -1.0% [-1.2%, -0.8%] 5
Improvements (secondary) - - 0
All (primary) -0.6% [-1.2%, 0.6%] 7
  • all these changes (for better or for worse) look like yet more spurious noise.
  • marked as triaged

Nominated Issues

T-compiler

  • “SIGILL Illegal Instruction on PPC64” rust#110278
    • from last week (notes)
    • the xvor instruction (an AltiVec optimisation) in cargo and rustup-init binaries prevents anything to compile under PPC64 on IBM hardware (9406-520) and similar POWER5 machines (comment), that model being discontinued in 2019
    • Platform is “Tier 2 with Host tools” (powerpc64-unknown-linux-gnu)
    • nomination by @Josh Stone (cuviper): do we want to reduce the default CPU target to something that supports that very old model?

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Rebased: Mark drop calls in landing pads cold instead of noinline” rust#102099
    • probably needs a second look from someone with more MSVC expertise (comment)
  • “Fix ICE when trying to convert ConstKind::Error to usize” rust#113712(last review activity: about 46 days ago)
    • cc: @uwu
  • “Pretty-print argument-position impl trait to name it.” rust#113955(last review activity: about 31 days ago)
    • cc @Waffle Lapkin

Next week’s WG checkins

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

Next meetings' agenda draft: https://hackmd.io/FuBR9iC1T4ukhQ8QPFod3Q