Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Codegen cleanups #112827

Merged
merged 5 commits into from
Jun 23, 2023
Merged

Codegen cleanups #112827

merged 5 commits into from
Jun 23, 2023

Conversation

nnethercote
Copy link
Contributor

Some cleanups I found while looking closely at this code.

r? @tmiasko

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jun 20, 2023
Noratrieb added a commit to Noratrieb/rust that referenced this pull request Jun 21, 2023
… r=oli-obk

More codegen cleanups

Some additional cleanups I found while looking closely at this code, following up from rust-lang#112827.

r= `@oli-obk`
`Message` is an enum with multiple variants, for messages sent to the
coordinator thread. *Except* for `Message::CodegenItem`, which is
entirely disjoint, being for messages sent from the coordinator thread
to the main thread.

This commit move `Message::CodegenItem` into a separate type,
`CguMessage`, which makes the code much clearer.
`Message` is an enum with multiple variants. Four of those variants map
directly onto the four variants of `WorkItemResult`. This commit reduces
those four `Message` variants to a single variant containing a
`WorkItemResult`. This requires increasing `WorkItemResult`'s visibility
to `pub(crate)` visibility, but `WorkItem` and `Message` can also have
their visibility reduced to `pub(crate)`.

This change avoids some boilerplate enum translation code, and makes
`Message` easier to understand.
This is particularly useful for `Message`.
The codegen main loop has two bools, `codegen_done` and
`codegen_aborted`. There are only three valid combinations: `(false,
false)`, `(true, false)`, `(true, true)`.

This commit replaces them with a single tri-state enum, which makes
things clearer.
@nnethercote
Copy link
Contributor Author

Thanks for the review, I have addressed the comments and updated the code.

@tmiasko
Copy link
Contributor

tmiasko commented Jun 22, 2023

@bors r+

@bors
Copy link
Contributor

bors commented Jun 22, 2023

📌 Commit fae4f45 has been approved by tmiasko

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 22, 2023
@bors
Copy link
Contributor

bors commented Jun 22, 2023

⌛ Testing commit fae4f45 with merge 9783a638a2123efbc13657aaf1a95ede49fd1d1c...

@rust-log-analyzer
Copy link
Collaborator

The job dist-mips64-linux failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
[RUSTC-TIMING] git2_curl test:false 1.041
[RUSTC-TIMING] git2 test:false 10.225
[RUSTC-TIMING] gix test:false 17.168
[RUSTC-TIMING] cargo test:false 71.952
rustc exited with signal: 4 (SIGILL) (core dumped)

Caused by:
Caused by:
  process didn't exit successfully: `/checkout/obj/build/bootstrap/debug/rustc --crate-name cargo --edition=2021 src/cargo/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C debuginfo=0 --cfg 'feature="all-static"' --cfg 'feature="openssl"' --cfg 'feature="vendored-openssl"' -Zunstable-options --check-cfg 'values(feature, "all-static", "openssl", "pretty-env-logger", "pretty_env_logger", "vendored-libgit2", "vendored-openssl")' --check-cfg 'names()' --check-cfg 'values()' -C metadata=eaf5907be75624d1 -C extra-filename=-eaf5907be75624d1 --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps --target mips64-unknown-linux-gnuabi64 -C linker=mips64-unknown-linux-gnu-gcc -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/release/deps --extern anyhow=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libanyhow-ca52a3b58ef8e770.rmeta --extern base64=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libbase64-4972e633235082f6.rmeta --extern bytesize=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libbytesize-7b0fe47b0abeffcf.rmeta --extern cargo_platform=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcargo_platform-2758e918a82d52a1.rmeta --extern cargo_util=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcargo_util-5113280f627a9feb.rmeta --extern clap=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libclap-462530d29a2be036.rmeta --extern crates_io=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcrates_io-69cdc9e5f6573927.rmeta --extern curl=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcurl-527e008269d7304a.rmeta --extern curl_sys=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libcurl_sys-4661d3e61bff8001.rmeta --extern env_logger=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libenv_logger-6ae5e7a02895f550.rmeta --extern filetime=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libfiletime-762b9099dc65c74d.rmeta --extern flate2=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libflate2-a9da85322ee08cbb.rmeta --extern git2=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgit2-2d08d508a1283b35.rmeta --extern git2_curl=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgit2_curl-fe102e00ad723d5b.rmeta --extern gix=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgix-cb2f2eecc02357a3.rmeta --extern gix_features_for_configuration_only=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libgix_features-7d487b338a46640d.rmeta --extern glob=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libglob-6fa49347ea036911.rmeta --extern hex=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhex-a323e6791f0cb75b.rmeta --extern hmac=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhmac-e62a85a67b4a3d00.rmeta --extern home=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhome-8941a6f6a5c7318c.rmeta --extern http_auth=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhttp_auth-5e0c781068101e9f.rmeta --extern humantime=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libhumantime-3aa0fad50caad2ab.rmeta --extern ignore=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libignore-8f8056e8b1f1ca28.rmeta --extern im_rc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libim_rc-1433f1d5ee129ad4.rmeta --extern indexmap=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libindexmap-09692627a802a7e2.rmeta --extern itertools=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libitertools-d908bbadcd525655.rmeta --extern jobserver=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libjobserver-4bd5290c8d787e8b.rmeta --extern lazycell=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblazycell-96512583cc2512ff.rmeta --extern libc=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblibc-6abe107547b48408.rmeta --extern libgit2_sys=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblibgit2_sys-c0875feb5ac17d7d.rmeta --extern log=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liblog-3a684b866f40c67b.rmeta --extern memchr=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libmemchr-4dd8d37b68029955.rmeta --extern opener=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libopener-78d530fc43ce8c9b.rmeta --extern openssl=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libopenssl-d06794ffff6eb97c.rmeta --extern os_info=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libos_info-ccfb19465f64848c.rmeta --extern pasetors=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libpasetors-374737a2360eacf4.rmeta --extern pathdiff=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libpathdiff-77ca474fe6ad3f74.rmeta --extern pulldown_cmark=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libpulldown_cmark-e9f6104c7737852b.rmeta --extern rand=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/librand-cc90d78df1885a87.rmeta --extern rustfix=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/librustfix-4e8a52beb3be53f2.rmeta --extern semver=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libsemver-3ffc983edc395607.rmeta --extern serde=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde-8bc8e62346026196.rmeta --extern serde_value=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde_value-76e3beb4208b66e4.rmeta --extern serde_ignored=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde_ignored-7d62b658d50e6a72.rmeta --extern serde_json=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libserde_json-4b2f68a5f177a83c.rmeta --extern sha1=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libsha1-aef462ab3a120079.rmeta --extern shell_escape=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libshell_escape-028f5ce049ada9ad.rmeta --extern strip_ansi_escapes=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libstrip_ansi_escapes-0bb6bae58ba85b61.rmeta --extern syn=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libsyn-0fde6f762147fdea.rmeta --extern tar=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtar-da72b20cf5e9692a.rmeta --extern tempfile=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtempfile-0c0f86afd76dd8cb.rmeta --extern termcolor=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtermcolor-9cee8c8a84b42576.rmeta --extern time=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtime-f279bcab4ca68d75.rmeta --extern toml=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtoml-d93fcc12151aaf91.rmeta --extern toml_edit=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libtoml_edit-96821f619ce97fb6.rmeta --extern unicode_width=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libunicode_width-da5fe0f99c19b9e9.rmeta --extern unicode_xid=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libunicode_xid-fcd6dac0701ecb1a.rmeta --extern url=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/liburl-1ff74ad2e5a593ff.rmeta --extern walkdir=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/deps/libwalkdir-7f2a71cccf6dbd1e.rmeta --cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zunstable-options '--check-cfg=values(bootstrap)' '--check-cfg=values(parallel_compiler)' '--check-cfg=values(no_btreemap_remove_entry)' '--check-cfg=values(crossbeam_loom)' '--check-cfg=values(span_locations)' '--check-cfg=values(rustix_use_libc)' '--check-cfg=values(emulate_second_only_system)' '--check-cfg=values(windows_raw_dylib)' -Zdual-proc-macros -Zmacro-backtrace -Clink-args=-Wl,-z,origin '-Clink-args=-Wl,-rpath,$ORIGIN/../lib' -Csplit-debuginfo=off -Z binary-dep-depinfo -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/curl-sys-95f2da08240f7b31/out/build -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libnghttp2-sys-370155c484f9f767/out/i/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libz-sys-63ec8ffcb4c83643/out/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libz-sys-63ec8ffcb4c83643/out/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/openssl-sys-b57dd46a52a8b6a6/out/openssl-build/install/lib -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libgit2-sys-f837fcd7aa9b4939/out/build -L native=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-tools/mips64-unknown-linux-gnuabi64/release/build/libssh2-sys-bd5da5cb4a60741d/out/build` (exit status: 254)

@bors
Copy link
Contributor

bors commented Jun 22, 2023

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 22, 2023
@nnethercote
Copy link
Contributor Author

That's a known intermittent MIPS failure.

@bors retry

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 22, 2023
@nnethercote
Copy link
Contributor Author

@bors rollup=iffy

@bors
Copy link
Contributor

bors commented Jun 23, 2023

⌛ Testing commit fae4f45 with merge fe37f37...

@bors
Copy link
Contributor

bors commented Jun 23, 2023

☀️ Test successful - checks-actions
Approved by: tmiasko
Pushing fe37f37 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jun 23, 2023
@bors bors merged commit fe37f37 into rust-lang:master Jun 23, 2023
@rustbot rustbot added this to the 1.72.0 milestone Jun 23, 2023
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (fe37f37): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.4% [0.4%, 0.5%] 4
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
3.6% [3.6%, 3.6%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
3.2% [1.5%, 5.0%] 9
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-1.7% [-1.8%, -1.6%] 2
Improvements ✅
(secondary)
-3.2% [-3.6%, -2.9%] 6
All ❌✅ (primary) 2.3% [-1.8%, 5.0%] 11

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 663.045s -> 661.926s (-0.17%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants