T Compiler Meeting Agenda 2023 08 31

T-compiler Meeting Agenda 2023-08-31

Announcements

Other WG meetings (calendar link)

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
    • “Match the behavior of strip and split-debuginfo across platforms” compiler-team#669
  • 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: 2 months ago)
    • “Add illumos Tier3 targets” compiler-team#644(last review activity: about 38 days ago)
    • “Promote loongarch64-unknown-none* to Tier 2” compiler-team#664(last review activity: about 13 days ago)
  • Pending FCP requests (check your boxes!)
    • “Retire the mailing list and make all decisions on zulip” compiler-team#649
    • “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
  • Finalized FCPs (disposition merge)
    • “stop adding dropck outlives requirements for [T; 0]rust#110288
    • “Allow explicit #[repr(Rust)]rust#114201
    • “style-guide: Add guidance for defining formatting for specific macros” rust#114919

WG checkins

  • @_T-rust-analyzer by @Lukas Wirth (previous checkin):

    nothing to report at this time

Backport nominations

T-compiler stable / T-compiler beta

  • :beta: [1.73] “Do not forget to pass DWARF fragment information to LLVM.” rust#115139
    • Fixes (what we think is) P-critical #115113, seems to affect
    • also nominated for stable backport
  • :beta: [1.73] “Stop emitting non-power-of-two vectors in (non-portable-SIMD) codegen” rust#115236
    • Fixes a significant perf. regression #115212 on stable by disabling (comment)

    It should be very safe, since it’s only one line of product code, and all it does is disable #111999 in more cases, leaving those cases to use the same codepath as in 1.71.

    • seems that the fix is working well on nightly
  • :stable: [1.72.1] “Normalize before checking if local is freeze in deduced_param_attrsrust#114948
    • Perf. regression linked to this PR (#113372) is nightly-only but this PR also fixes other perf. regressions on stable (#115216, #115207) (comment and following)
  • :stable: [1.72.1] “Do not forget to pass DWARF fragment information to LLVM.” rust#115139
    • this issue seems impacting. The fix missed the 1.72 train (comment so f.e. rustc 1.72.0 will be patched by Fedora in their 1.72)
    • @apiraino nominated: seems a good candidate to queue into an 1.72.1
    • if T-release will discuss a 1.72.1
  • :stable: [1.72.1] “Stop emitting non-power-of-two vectors in (non-portable-SIMD) codegen” rust#115236

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • “ICE: unexpected initial operand type.” rust#114858
    • IIUC (@apiraino) the issue should be addressed (at least partially) by rust#115215 (comment)
  • “ScalarReplacementOfAggregates causes rustc to emit invalid LLVM debuginfo (and sometimes rustc segfaults)” rust#115113
  • “Failed assert 2 != 2 after update to LLVM 17” rust#115385
    • Not assigned, opened yesterday
    • has eyes on it, ex. this bisection from @lqd

T-types

  • “RPIT hidden types can be ill-formed” rust#114728
    • UB originated in #94081
    • handled by @Michael Goulet (compiler-errors) in rust#114740
    • also #114933 by @aliemjay

T-rustdoc

  • “ICE when building documentation: DefId(20:797 …) does not have a “object_lifetime_default”” rust#115179
    • reported a crate cannot generate documentation anymore, at least since 1.72.0
    • regressed in #107637
    • handled by @_León Orell Liehr (fmease) in rust#115276

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–08-29

A fairly quiet week, with improvements exceeding a small scattering of regressions. Memory usage and artifact size held fairly steady across the week, with no regressions or improvements.

Triage done by @simulacrum. Revision range: d4a881e1433cd10e424843353e1f939f5a798f4e..cedbe5c715c1fa9359683c5f108bed2054ac258b

Summary:

(instructions:u) mean range count
Regressions (primary) 1.6% [0.3%, 2.2%] 6
Regressions (secondary) 1.4% [0.8%, 1.9%] 19
Improvements (primary) -1.0% [-8.0%, -0.3%] 70
Improvements (secondary) -1.6% [-4.2%, -0.2%] 56
All (primary) -0.8% [-8.0%, 2.2%] 76

2 Regressions, 3 Improvements, 2 Mixed; 0 of them in rollups 108 artifact comparisons made in total

Regressions

rustdoc: Add lint redundant_explicit_links #113167 (Comparison Link)

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

Small regression in libc compilation, primarily incremental non-doc scenarios. Unclear cause but sufficiently limited in scope that further investigation is not warranted.

Fix races conditions with SyntaxContext decoding #115082 (Comparison Link)

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

Some small regressions, but this is a correctness fix for parallel compilation so warranted. (Parallel compilation is not on here but the fix affects both non-parallel and parallel scenarios).

Improvements

Speed up compilation of type-system-chess #114611 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) - - 0
Regressions (secondary) - - 0
Improvements (primary) -1.7% [-1.7%, -1.7%] 1
Improvements (secondary) -2.2% [-4.2%, -0.7%] 28
All (primary) -1.7% [-1.7%, -1.7%] 1

Perf results look good, various small improvements in secondary benchmarks. The real driver was the type-system-chess program I mentioned above, where the walltime and max-rss changes were both about -85% when I measured them locally.

(https://github.com/rust-lang/rust/pull/114611#issuecomment-1670713067)

Add MIR validation for unwind out from nounwind functions + fixes to make validation pass #113124 (Comparison Link)

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

Update x64 Linux host compiler to LLVM 17 #114297 (Comparison Link)

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

Mixed

Remove references in VarDebugInfo #114904 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.8% [0.3%, 1.3%] 10
Regressions (secondary) 1.4% [1.3%, 1.4%] 4
Improvements (primary) -1.0% [-7.3%, -0.3%] 32
Improvements (secondary) -2.1% [-2.4%, -1.6%] 4
All (primary) -0.6% [-7.3%, 1.3%] 42

Fixed a bug in codegen. The regressions appear to be within noise range for the relevant benchmarks.

Add a new helper to avoid calling io::Error::kind #115228 (Comparison Link)

(instructions:u) mean range count
Regressions (primary) 0.3% [0.3%, 0.3%] 1
Regressions (secondary) - - 0
Improvements (primary) -0.6% [-0.8%, -0.5%] 3
Improvements (secondary) - - 0
All (primary) -0.4% [-0.8%, 0.3%] 4

Regression is within noise range of the relevant benchmark.

Nominated Issues

T-compiler

  • “SIGILL Illegal Instruction on PPC64” rust#110278
    • the xvor instruction (an AltiVec optimisation) in cargo and rustup-init binaries prevents anything to compile under PPC64 (POWER5+ class) (comment)
    • Issue was reported for Tier 2 family of platform (powerpc64-unknown-linux-gnu, discontinued in 2019, only about that particular server model, see comment) but is also visible in more recent POWER architectures
    • nomination by @Josh Stone (cuviper) Do we actually support this/these arch(s)?
    • (issue reporter seems for now to be able to handle the situation by crosscompiling without that AltiVec opt.)

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

  • “Rebased: Mark drop calls in landing pads cold instead of noinline” rust#102099
    • probably needs a second look from someone (comment)
  • “Fix ICE when trying to convert ConstKind::Error to usize” rust#113712(last review activity: about 46 days ago)
    • cc: @uwu
  • “rustc_llvm: Link to libkstat on Solaris/SPARC” rust#114224(last review activity: about 32 days ago)
    • cc: @Josh Stone (cuviper) (probably needs a bit of SPARC/Solaris context)
  • “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

  • @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081

Next meetings' agenda draft: https://hackmd.io/Ly5571uCSUSm6Uib-f5K8Q