owned this note changed 4 years ago
Published Linked with GitHub

T-compiler Meeting Agenda 2020-12-17

Tracking Issue

Announcements

  • Tomorrow (friday 18th) at the same time as this meeting, we have the "Compiler Team Foundation Q&A"
  • Following meetings are on 24th and 31st (note for @pnkfelix: unsure if we will have these meetings and who will be around)
  • We will be releasing 1.49 on December 31st
  • New MCPs (take a look, see if you like them!)
    • No new proposals this time.
  • Old MCPs (not seconded, take a look)
  • Pending FCP requests (check your boxes!)
  • Things in FCP (make sure you're good with it)
    • No FCP requests this time.
  • Accepted MCPs
    • No new accepted proposals this time.
  • Finalized FCPs (disposition merge)
    • [T-lang] "Use true previous lint level when detecting overriden forbids" rust#78864
    • [T-rustdoc] "rustdoc: stabilise default-theme command line option" rust#79642

WG checkins

@WG-llvm checkin by @nagisa:

  • Subjectively it seems like there has been an uptick of soundness issues/miscompilations related to LLVM (or perhaps people are now trying to use more obscure features of it, new targets?)
  • Besides a regular submodule bump (#79861), there hasn't been much development, notable outstanding and related stuff is: #77885 using inline-asm stack probes which is blocked on 11.0.1 and a couple of changes as part of work to enable split dwarf support (#80087, #77117)

@T-compiler/WG-meta checkin by @nikomatsakis:

  • wesleywiser is now the new compiler team co-lead!
  • nikomatsakis floated a proposal around "compiler team officers", the idea being to identify various special roles within compiler team that get elected to fixed terms (including a set of folks who decide on RFCs), and to generally "flatten" the team structure so that contribuors/members both elect these officers
  • The core team roadmap draft is going to focus on governance, such as defining team charters and other work, so nikomatsakis expects next year that meta will take on some of that work
  • One question is whether nikomatsakis should continue as lead of the working group, or whether wesleywiser/pnkfelix (or someone else) would be better! nikomatsakis is open to stepping back from that role, if others are pscyched to fill it, and eager to contribute help and thoughts either way.
  • Enjoy the upcoming holidays and take care of yourselves, folks!
    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

Beta-nominations

T-compiler

libs-impl

  • No beta nominations for libs-impl this time.

T-rustdoc

  • No beta nominations for T-rustdoc this time.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
/
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
/
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Stable-nominations

T-compiler

  • No stable nominations for T-compiler this time.

libs-impl

  • No stable nominations for libs-impl this time.

T-rustdoc

  • No stable nominations for T-rustdoc this time.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
/
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
/
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

PRs S-waiting-on-team

T-compiler

  • "MIR-OPT: Pass to deduplicate blocks" rust#77551
    • opened by @Simon Vandel Sillesen
    • assigned to @oli
    • The performance gain seems to be not very clear. Relevant comments from here.
  • "BPF target support" rust#79608
    • opened by @Alessandro Decina, suggests a Tier 2 for this target
    • assigned to @simulacrum
    • Adds targets bpfel-unknown-none and bpfeb-unknown-none (more info here)
    • @_simulacrum suggests waiting to have a policy for that
    • @Josh Triplett is working on it

libs-impl

  • No PRs waiting on libs-impl this time.

Issues of Note

Short Summary

P-critical

T-compiler

  • "Switching to opt-level=z on i686-windows-msvc triggers STATUS_ACCESS_VIOLATION" rust#67497
    • Discussed last week
    • Opened by @dignifiedquire
    • Assigned to @pnkfelix
    • Rust 1.36.0 through 1.48.0 all have broken builds on Windows i686-windows-msvc
  • "missing_fragment_specifier hard error" rust#76605
    • opened by @Pietro Albini
    • assigned to @Esteban Küber
    • A deprecation warning since 2017 becomes hard error and breakes many packages (catched by the release team)
    • @simulacrum 05#issuecomment-702811192) for the beta, suggests to create a patch for nightly also to make it a hard warning
  • "Upgrade to LLVM11 caused a codegen regression on Windows" rust#78283
    • Previously discussed
    • opened by @Jeff Muizelaar
    • assigned to @pnkfelix
    • Firefox code that used to work on Rust 1.46 started to fail after upgrading to LLVM 11
    • Affects only MSVC
    • @Nikita Popov suggests could be related to rust#74498
    • @Jeff Muizelaar suggests to be related to LLVM bug #46943, provides a minimal repro
    • @pnkfelix has patch in progress for LLVM bug #46943 (got feedback recently from @Nikita Popov)
  • "No error reported when a generic parameter doesn't meet the requirement of an associated type" rust#78893
  • "Miscompilation of AVX2 code under release" rust#79865
    • Discussed last week
    • opened by @Tony Arcieri
    • not yet assigned
    • unsoundness that impacts cryptographic code
    • reporter mentions a workaround (pulling code out of a lamba) to fix the error
    • shortest mcve so far provided by @lqd
  • "Miscompilation in webrender on aarch64-apple-darwin" rust#80111
    • opened by @Mike Hommey
    • Firefox nightly would crash on startup on arm64 macos
    • seems that different LTO parameters trigger the issue

libs-impl

  • No P-critical issues for libs-impl this time.

T-rustdoc

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

P-high regressions

P-high beta regressions

  • "regression 1.49: macro_rules unexpected tokens" rust#79908
    • opened by @simulacrum
    • assigned to @Camelid
    • A crater test run find a regression. There are two crates involved (fourier and tiger), the latter is relevant to this regression
    • we have an mcve
    • @_Camelid is working on a patch

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs

A week dominated by small regressions with only 1 modest yet clear performance gain. None of the regressions are large enough to cause concern, but there should be a followup to some to ensure that those regressions are at least examined.

Triage done by @rylevick.
Revision range: 4fd4a98d4788bc987d7f7add9df5f5ead6a1c15e..e1cce06e4ff5206daf397e1dcf91ed53653be171

6 Regressions, 1 Improvements, 2 Mixed
0 of them in rollups

Regressions

Also generate StorageDead in constants#78679

  • Large regression in instruction counts (up to 5.7% on incr-patched: new row builds of tuple-stress-check)
  • A removal of special casing of not marking statics and constants as StorageDead inside rustc_mir.
  • This was regression was deemed as acceptable due to being more correct than the previous implementation.

Properly re-use def path hash in incremental mode#79721

Accept arbitrary expressions in key-value attributes at parse time#78837

Capture precise paths in THIR and MIR#79553

  • Moderate regression in instruction counts (up to 4.5% on incr-unchanged builds of clap-rs-check)
  • While this change powers a feature behind a feature flag (capture_disjoint_fields), it looks like it's still causing perf regressions in workloads not using this feature.
  • This is a known issue with a plan for how to recover the performance loss.

Create rustc_type_ir#79169

  • Moderate regression in instruction counts (up to 3.1% on full builds of ctfe-stress-4-check)

Update stdarch submodule#79938

  • Moderate regression in instruction counts (up to 1.4% on incr-unchanged builds of deeply-nested-debug)
  • This was a wholesale update of the stdarch submodule.
  • stdarch is using const arguments that would benefit from const generics. This might explain why compilation suffers.

Improvements

Compress RWU from at least 32 bits to 4 bits#79727

  • Moderate improvement in instruction counts (up to -4.8% on full builds of clap-rs-check)
  • This was explicitly an experiment to gain performance, and it seems to worked fairly well. Other bit representations were tested but the one chosen was the most efficient.

Mixed

Use def_path_hash_to_def_id when re-using a RawDefId#79915

  • Moderate improvement in instruction counts (up to -3.5% on incr-unchanged builds of clap-rs-check)
  • Moderate regression in instruction counts (up to 2.7% on incr-patched: dummy fn builds of unused-warnings-check)
  • The amount of regressions outweighs the improvements (which were just in the clap benchmark).
  • This is a followup fix to #79721. Overall these regressions still represent a perf gain when compared to before the changes introduced in #74967.

Lower discriminant_value intrinsic#79922

  • Moderate improvement in instruction counts (up to -3.9% on full builds of match-stress-enum-check)
  • Smaller regression in instruction counts (up to 1.3% on incr-unchanged builds of clap-rs-check)
  • The improvement outweighs the regression.

Nags requiring follow up

  • Several regressions need followup investigations. See their respective entries above for the issue.
  • As mentioned last week, stdarch expansion causing a 40% libcore compile time regression is still not resolved, and resolution is unclear. This is likely a related issue to the stdarch regression listed above.

Nominated Issues

T-compiler

Preamble: there are 3 issues below (#76213, #79246, #79564) somehow all pointing to the same PR rust#76030 which exposed an existing bug in loop vectorize in LLVM. We (as in: me @apiraino) are not 100% sure if they are all correlated, but thought to nominate them all to reason about their priority and (if any) find a common theme.

  • "llvm segfaults during bootstrap of rustc_middle in stage 1" rust#76213
    • opened by @matthiaskrgr
    • not yet assigned
    • P-high regression, might be related to rust#79564
    • still crashes after upgrade to LLVM 11.0.0-rc3
  • "Performance regression in 1.48.0" rust#79246
    • opened by @marmeladema
    • regression from stable to stable not yet assigned
    • issue reporter suggests bisection seems to point to rust#70793
    • issue reporter comments that reverting PR rust#76030 fixes the regression
  • "Segfault in 1.48.0 while release-building with pango crate with target-cpu=native" rust#79564
    • opened by twistedfall
    • not yet assigned, unsure about the priority
    • @matthiaskrgr comments it could be related to rust#76213 and this issue provides a smaller reproducible sample
    • tmiasko comments that is could related to PR rust#76030 which exposes an LLVM bug
    • nominating to discuss if this issue is related to the same LLVM issue as issue #76213
  • "Miscompilation root-caused to llvm bug" rust#79708
    • Reported by @_Jeremy Fitzhardinge
    • LLVM alias analysis bug that is causing soundness issues for production users
    • Apparently appeared in Rust 1.47.0, but the LLVM bug is present since 2015 (relevant comment)
    • Fixed in LLVM upstream on December 3rd (review, commit)
    • Nominated to discuss if a cherry-pick of the fix is warranted
  • "Unsafe checking skips pointer dereferences in unused places" rust#80059
    • Opened by @scottmcm
    • P-medium issue has been this way for over 3 years
    • Nominated for further discussion after T-lang meeting of 2020-12-15
    • Linking a comment from @nikomatsakis on issue rust#79735 which at least partly applies here too
  • regression 1.49: trait bound no longer inferred for associated type rust#79904
    • opened by @Ryan Levick
    • crater run fails compiling a number of crates with different errors on trait bounds
    • might be related to rust#78893
    • Here's the tracking issue for crater runs for 1.49

libs-impl

  • No nominated issues for libs-impl this time.

RFC

  • "RFC: Checking conditional compilation at compile time" rfcs#3013
Select a repo