Skip to content

Rollup of 8 pull requests - #104591

Merged
bors merged 29 commits into
rust-lang:masterfrom
Manishearth:rollup-b3ser4e
Nov 19, 2022
Merged

Rollup of 8 pull requests#104591
bors merged 29 commits into
rust-lang:masterfrom
Manishearth:rollup-b3ser4e

Conversation

@Manishearth

Copy link
Copy Markdown
Member

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Lukas Markeffskyand others added 29 commits October 12, 2022 18:39
On usize=u64 platforms, the 4th iteration would overflow the `mod_gate`
back to 0. Similarly for usize=u32 platforms, the 3rd iteration would
overflow much the same way.
I tested various approaches to resolving this, including approaches with
`saturating_mul` and `widening_mul` to a double usize. Turns out LLVM
likes `mul_with_overflow` the best. In fact now, that LLVM can see the
iteration count is limited, it will happily unroll the loop into a nice
linear sequence.
You will also notice that the code around the loop got simplified
somewhat. Now that LLVM is handling the loop nicely, there isn’t any
more reasons to manually unroll the first iteration out of the loop
(though looking at the code today I’m not sure all that complexity was
necessary in the first place).
Fixesrust-lang#103361
Clarify that the diagnostic can be retrieved with `steal_diagnostic`.
The font size and weights should be exactly the same after this commit,
but the spacing is changed to be exactly the same as methods.
remove HRTB from `[T]::is_sorted_by{,_key}`
Changes the signature of `[T]::is_sorted_by{,_key}` to match `[T]::binary_search_by{,_key}` and make code like rust-lang#53485 (comment) compile.
Tracking issue: rust-lang#53485
~~Do we need an ACP for something like this?~~ Edit: Filed ACP here: rust-lang/libs-team#121
…tmcm
Fix mod_inv termination for the last iteration
On usize=u64 platforms, the 4th iteration would overflow the `mod_gate` back to 0. Similarly for usize=u32 platforms, the 3rd iteration would overflow much the same way.
I tested various approaches to resolving this, including approaches with `saturating_mul` and `widening_mul` to a double usize. Turns out LLVM likes `mul_with_overflow` the best. In fact now, that LLVM can see the iteration count is limited, it will happily unroll the loop into a nice linear sequence.
You will also notice that the code around the loop got simplified somewhat. Now that LLVM is handling the loop nicely, there isn’t any more reasons to manually unroll the first iteration out of the loop (though looking at the code today I’m not sure all that complexity was necessary in the first place).
Fixesrust-lang#103361
…cottmcm
`unchecked_{shl|shr}` should use `u32` as the RHS
The other shift methods, such as https://doc.rust-lang.org/nightly/std/primitive.u64.html#method.checked_shr and https://doc.rust-lang.org/nightly/std/primitive.i16.html#method.wrapping_shl, use `u32` for the shift amount. That's consistent with other things, like `count_ones`, which also always use `u32` for a bit count, regardless of the size of the type.
This PR changes `unchecked_shl` and `unchecked_shr` to also use `u32` for the shift amount (rather than Self).
cc rust-lang#85122, the `unchecked_math` tracking issue
…ation__--this-can-be-simplified, r=scottmcm
Simplify some pointer method implementations
- Make `pointer::with_metadata_of` const (+simplify implementation) (cc rust-lang#75091)
- Simplify implementation of various pointer methods
r? ```@scottmcm```
----
`from_raw_parts::<T>(this, metadata(self))` was annoying me for a while and I've finally figured out how it should _actually_ be done.
…, r=davidtwco
Diagnostics `icu4x` based list formatting.
This adds a new kind of `DiagnosticArg` and add the ability to convert it to a `FluentValue::Custom`. When emitting fluent output, it makes use of `ListFormatter` from `icu4x` project to convert it to localized version of list following the fluent locale, as a kind of eager translation.
Tested locally with locales like `en`, `ja`, etc, and they work fine. <del>Though neither `zh-CN` nor `zh-Hans` works correctly, it seems they fallback to `und` locale somehow, emitting only comma-based list. I believe this is an internal issue of `icu4x` itself.</del>(Works fine after rust-lang#104047 (comment))
Would love to hear what others think.
r? `@davidtwco`
cc `@Manishearth`
…holk
Enforce that `dyn*` coercions are actually pointer-sized
Implement a perma-unstable, rudimentary `PointerSized` trait to enforce `dyn*` casts are `usize`-sized for now, at least to prevent ICEs and weird codegen issues from cropping up after monomorphization since currently we enforce *nothing*.
This probably can/should be removed in favor of a more sophisticated trait for handling `dyn*` conversions when we decide on one, but I just want to get something up for discussion and experimentation for now.
r? ```@eholk``` cc ```@tmandry``` (though feel free to claim/reassign)
Fixesrust-lang#102141Fixesrust-lang#102173
…er-errors
Edit docs for `rustc_errors::Handler::stash_diagnostic`
Clarify that the diagnostic can be retrieved with `steal_diagnostic`.
r? ```@compiler-errors```
…llaumeGomez
rustdoc: use `code-header` class to format enum variants
The font size and weights should be exactly the same after this PR, but the spacing is changed to be the same as methods.
Preview: http://notriddle.com/notriddle-rustdoc-demos/variant/test_dingus_enum/enum.TestEnum.html
@rustbotrustbot added the T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) label Nov 18, 2022
@rustbotrustbot added A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic 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. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Nov 18, 2022
@Manishearth

Copy link
Copy Markdown
MemberAuthor

@bors r+ p=8 rollup=never

@bors

bors commented Nov 18, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 9db23f8 has been approved by Manishearth

It is now in the queue for this repository.

@borsbors 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 Nov 18, 2022
@bors

bors commented Nov 18, 2022

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 9db23f8 with merge ff0ffda...

@bors

bors commented Nov 19, 2022

Copy link
Copy Markdown
Collaborator

☀️ Test successful - checks-actions
Approved by: Manishearth
Pushing ff0ffda to master...

@borsbors added the merged-by-bors This PR was explicitly merged by bors. label Nov 19, 2022
@bors
bors merged commit ff0ffda into rust-lang:masterNov 19, 2022
@rustbotrustbot added this to the 1.67.0 milestone Nov 19, 2022
@rust-timer

Copy link
Copy Markdown
Collaborator

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (ff0ffda): comparison URL.

Overall result: ✅ improvements - 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.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.1%[-1.1%, -1.1%]2
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.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
2.9%[2.9%, 2.9%]1
Improvements ✅
(primary)
-3.7%[-6.9%, -0.6%]2
Improvements ✅
(secondary)
-1.6%[-2.2%, -1.0%]2
All ❌✅ (primary)-3.7%[-6.9%, -0.6%]2

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.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
2.6%[2.6%, 2.6%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0

@lqd

lqd commented Nov 19, 2022

Copy link
Copy Markdown
Member

Is the impact on bootstrap timings here expected ? Do you know why serde now takes twice as long to build (maybe some different feature flags) ?

image

@Manishearth

Copy link
Copy Markdown
MemberAuthor

I don't know!

@lqd

lqd commented Nov 22, 2022

Copy link
Copy Markdown
Member

This is probably fine but I'll cc @rust-lang/wg-compiler-performance to see what they think.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-testsuiteArea: The testsuite used to check the correctness of rustcA-translationArea: Translation infrastructure, and migrating existing diagnostics to SessionDiagnosticmerged-by-borsThis PR was explicitly merged by bors.rollupA PR which is a rollupS-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

12 participants

@Manishearth@bors@rust-timer@lqd@rustbot@nagisa@scottmcm@WaffleLapkin@pierwill@notriddle@compiler-errors@crlf0710