1
Fork 0
Commit graph

246559 commits

Author SHA1 Message Date
Caleb Zulawski
e06e54cf14
Merge pull request #394 from rust-lang/sync-upstream-2024-02-17
Sync upstream 2024 Feb 17
2024-02-17 18:27:16 -05:00
Amanieu d'Antras
9aec60e2c6 Disable conversions between portable_simd and stdarch on big-endian ARM
stdarch no longer provide SIMD on big-endian ARM due to
https://github.com/rust-lang/stdarch/issues/1484
2024-02-17 18:03:04 -05:00
Urgau
64bd26f221 Fix target_feature config in portable-simd 2024-02-17 18:03:04 -05:00
Caleb Zulawski
afa70e6d92 Remove link to core::arch::x86_64 2024-02-17 18:03:04 -05:00
bors
6672c16afc Auto merge of #121204 - cuviper:flatten-one-shot, r=the8472
Specialize flattening iterators with only one inner item

For iterators like `Once` and `option::IntoIter` that only ever have a
single item at most, the front and back iterator states in `FlatMap` and
`Flatten` are a waste, as they're always consumed already. We can use
specialization for these types to simplify the iterator methods.

It's a somewhat common pattern to use `flatten()` for options and
results, even recommended by [multiple][1] [clippy][2] [lints][3]. The
implementation is more efficient with `filter_map`, as mentioned in
[clippy#9377], but this new specialization should close some of that
gap for existing code that flattens.

[1]: https://rust-lang.github.io/rust-clippy/master/#filter_map_identity
[2]: https://rust-lang.github.io/rust-clippy/master/#option_filter_map
[3]: https://rust-lang.github.io/rust-clippy/master/#result_filter_map
[clippy#9377]: https://github.com/rust-lang/rust-clippy/issues/9377
2024-02-17 20:18:54 +00:00
bors
cabdf3ad25 Auto merge of #121240 - matthiaskrgr:rollup-lfb5i9w, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #120952 (Don't use mem::zeroed in vec::IntoIter)
 - #121085 (errors: only eagerly translate subdiagnostics)
 - #121091 (use build.rustc config and skip-stage0-validation flag)
 - #121149 (Fix typo in VecDeque::handle_capacity_increase() doc comment.)
 - #121193 (Use fulfillment in next trait solver coherence)
 - #121209 (Make `CodegenBackend::join_codegen` infallible.)
 - #121210 (Fix `cfg(target_abi = "sim")` on `i386-apple-ios`)
 - #121228 (create stamp file for clippy)
 - #121231 (remove a couple of redundant clones)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-02-17 18:20:41 +00:00
Matthias Krüger
eafa74ab62
Rollup merge of #121231 - matthiaskrgr:cloone, r=compiler-errors
remove a couple of redundant clones
2024-02-17 18:47:43 +01:00
Matthias Krüger
4ddc8e4368
Rollup merge of #121228 - onur-ozkan:fix-clippy-stamp-bug, r=albertlarsan68
create stamp file for clippy

Due to missing stamp file, we were downloading (and applying nix patches if enabled) continuously every time `Config::download_clippy` was called. This change fixes that by creating stamp file at the end of the function.

Fixes #119442
2024-02-17 18:47:43 +01:00
Matthias Krüger
a78e4610d0
Rollup merge of #121210 - madsmtm:fix-target-abi-i386-apple-ios, r=workingjubilee
Fix `cfg(target_abi = "sim")` on `i386-apple-ios`

Since https://github.com/rust-lang/rust/issues/80970 is stabilizing, I went and had a look, and found that the result was wrong on `i386-apple-ios`.

r? rust-lang/macos
2024-02-17 18:47:42 +01:00
Matthias Krüger
a387b71b0c
Rollup merge of #121209 - nnethercote:infallible-join_codegen, r=bjorn3
Make `CodegenBackend::join_codegen` infallible.

Because they all are, in practice.

r? ```@bjorn3```
2024-02-17 18:47:42 +01:00
Matthias Krüger
df3712ce21
Rollup merge of #121193 - compiler-errors:coherence-fulfillment, r=lcnr
Use fulfillment in next trait solver coherence

Use fulfillment in the new trait solver's `impl_intersection_has_impossible_obligation` routine. This means that inference that falls out of processing other obligations can influence whether we can determine if an obligation is impossible to satisfy. See the committed test.

This should be completely sound, since evaluation and fulfillment both respect intercrate mode equally.

We run the risk of breaking coherence later if we were to change the rules of fulfillment and/or inference during coherence, but this is a problem which affects evaluation, as nested obligations from a trait goal are processed together and can influence each other in the same way.

r? lcnr
cc #114862

Also changed obligationctxt -> fulfillmentctxt because it feels kind of redundant to use an ocx here. I don't really care enough and can change it back if it really matters much.
2024-02-17 18:47:42 +01:00
Matthias Krüger
cb371797d6
Rollup merge of #121149 - SebastianJL:patch-1, r=Mark-Simulacrum
Fix typo in VecDeque::handle_capacity_increase() doc comment.

Strategies B and C both show a full buffer before the capacity increase, while strategy A had one empty element left. Filled the last element in.
2024-02-17 18:47:41 +01:00
Matthias Krüger
60cc6b93f6
Rollup merge of #121091 - onur-ozkan:bypass-stage0-download-in-tests, r=albertlarsan68
use build.rustc config and skip-stage0-validation flag

This change helps us to bypass downloading the beta compiler in bootstrap tests.

more context: https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/tests.20causing.20downloads.20of.20native.20rustc.20for.20other.20platforms/near/421467975
2024-02-17 18:47:41 +01:00
Matthias Krüger
45d5773704
Rollup merge of #121085 - davidtwco:always-eager-diagnostics, r=nnethercote
errors: only eagerly translate subdiagnostics

Subdiagnostics don't need to be lazily translated, they can always be eagerly translated. Eager translation is slightly more complex as we need to have a `DiagCtxt` available to perform the translation, which involves slightly more threading of that context.

This slight increase in complexity should enable later simplifications - like passing `DiagCtxt` into `AddToDiagnostic` and moving Fluent messages into the diagnostic structs rather than having them in separate files (working on that was what led to this change).

r? ```@nnethercote```
2024-02-17 18:47:40 +01:00
Matthias Krüger
59972868e6
Rollup merge of #120952 - saethlin:vec-into-iter, r=the8472
Don't use mem::zeroed in vec::IntoIter

`mem::zeroed` is not a trivial function. Maybe it was once, but now it involves multiple locals, copies, and an intrinsic that gets monomorphized into a call to `panic_nounwind` for iterators of types like `Vec<&T>`. Of course all that complexity is trivially optimized out, but generating a bunch of IR where we don't need to just so we can optimize it away later is silly.
2024-02-17 18:47:40 +01:00
Caleb Zulawski
7348d2da1b
Merge pull request #393 from rust-lang/assume-masks-are-correct
Assume masks are correct
2024-02-17 12:04:52 -05:00
Caleb Zulawski
aebf6f1560 Use intrinsics directly to avoid recursion 2024-02-17 11:33:13 -05:00
bors
12b5498f3b Auto merge of #120023 - klensy:tidy-alloc, r=Mark-Simulacrum
tidy: reduce allocs

this reduces allocs in tidy from (dhat output)

```
==31349== Total:     1,365,199,543 bytes in 4,774,213 blocks
==31349== At t-gmax: 10,975,708 bytes in 66,093 blocks
==31349== At t-end:  2,880,947 bytes in 12,332 blocks
==31349== Reads:     5,210,008,956 bytes
==31349== Writes:    1,280,920,127 bytes
```
to
```
==66633== Total:     791,565,538 bytes in 3,503,144 blocks
==66633== At t-gmax: 10,914,511 bytes in 65,997 blocks
==66633== At t-end:  395,531 bytes in 941 blocks
==66633== Reads:     4,249,388,949 bytes
==66633== Writes:    814,119,580 bytes
```

<del>by wrapping regex and updating `ignore` (effect probably not only from `ignore`, didn't measured)</del>

also moves one more regex into `Lazy` to reduce regex rebuilds.
2024-02-17 16:22:44 +00:00
Caleb Zulawski
44b4d26273 Revert "Revert "Merge pull request #385 from workingjubilee/make-an-ass-out-of-u-and-me""
This reverts commit 644bdfb2ac.
2024-02-17 11:18:31 -05:00
Caleb Zulawski
061d5acd93
Merge pull request #392 from rust-lang/minor-fixes
Revert #385 and add some minor fixes
2024-02-17 11:15:31 -05:00
Caleb Zulawski
d8439e90bd Add back core_intrinsics 2024-02-17 11:11:58 -05:00
Caleb Zulawski
644bdfb2ac Revert "Merge pull request #385 from workingjubilee/make-an-ass-out-of-u-and-me"
This reverts commit 6ad779c3f6, reversing
changes made to b2e1bcba2c.
2024-02-17 11:09:17 -05:00
Caleb Zulawski
a2dd4a3b5b Minor fixes 2024-02-17 11:09:17 -05:00
Urgau
d988d8f4ba Use better heuristic for printing Cargo specific diagnostics 2024-02-17 16:49:01 +01:00
Caleb Zulawski
6ad779c3f6
Merge pull request #385 from workingjubilee/make-an-ass-out-of-u-and-me
Assume masks are correct
2024-02-17 10:32:18 -05:00
clubby789
62b789fba4 Add more checks for unnamed_field during HIR analysis 2024-02-17 15:12:33 +00:00
bors
eeeb021954 Auto merge of #121232 - RalfJung:miri, r=RalfJung
Miri subtree update

r? `@ghost`
2024-02-17 13:41:14 +00:00
Tshepang Mbambo
e3859d206c add test to guard against inaccurate diagnostic
Also replaces an incomplete test
2024-02-17 14:15:22 +02:00
Ralf Jung
fd5a84b529 update lockfile 2024-02-17 13:02:04 +01:00
Matthias Krüger
87b6f415f2 remove a couple of redundant clones 2024-02-17 12:46:18 +01:00
bors
ba824a2e25 Auto merge of #121227 - Nadrieril:rollup-n6qky3z, r=Nadrieril
Rollup of 8 pull requests

Successful merges:

 - #119032 (Use a hardcoded constant instead of calling OpenProcessToken.)
 - #120932 (const_mut_refs: allow mutable pointers to statics)
 - #121059 (Add and use a simple extension trait derive macro in the compiler)
 - #121135 (coverage: Discard spans that fill the entire function body)
 - #121187 (Add examples to document the return type of quickselect functions)
 - #121191 (Add myself to review rotation (and a rustbot ping))
 - #121192 (Give some intrinsics fallback bodies)
 - #121197 (Ensure `./configure` works when `configure.py` path contains spaces)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-02-17 11:44:02 +00:00
onur-ozkan
3ec7d0a57c create stamp file for clippy in Config::download_clippy
Due to missing stamp file, we were downloading (and applying nix patches if enabled)
continuously every time `Config::download_clippy` was called. This change fixes that by
creating stamp file at the end of the function.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-02-17 13:27:42 +03:00
Guillaume Boisseau
e266a12307
Rollup merge of #121197 - beetrees:configure-quotes, r=Nilstrieb
Ensure `./configure` works when `configure.py` path contains spaces

Add quotes around paths that may contains spaces in `configure` to avoid the shell splitting the path into multiple arguments.
2024-02-17 11:23:09 +01:00
Guillaume Boisseau
936b666c4a
Rollup merge of #121192 - oli-obk:intrinsics2.0, r=WaffleLapkin
Give some intrinsics fallback bodies

cc #93145
2024-02-17 11:23:08 +01:00
Guillaume Boisseau
ac619c05da
Rollup merge of #121191 - Nadrieril:ping, r=compiler-errors
Add myself to review rotation (and a rustbot ping)

I've still got a ~month of unemployment ( 🤞 ), so I'll put some of that time into reviewing.

Unrelatedly, I've now poked enough at match lowering that I want to follow what happens to it, so I added a rustbot ping.
2024-02-17 11:23:08 +01:00
Guillaume Boisseau
f3d9abc590
Rollup merge of #121187 - Takashiidobe:takashi/examples-for-quickselect, r=Nilstrieb
Add examples to document the return type of quickselect functions

Currently, `select_nth_unstable`, `select_nth_unstable_by`, and `select_nth_unstable_by_key`'s examples do not show how to use the return values of the functions in an example, so this PR adds that in.

Note: I didn't know what to call the parameters, so I settled on lesser, median, greater because the example is used for median finding so I retained that naming for the pivot, but lesser and greater are poor names for the example that sorts in descending order, because lesser and greater are then flipped.

I think it's common to say "lo" and "hi" for low and high respectively, but that's also not great when the comparator flips the elements. Otherwise, "left" and "right" are also commonly used but I think that's poor naming because some languages read right to left so those names are also unintuitive.

Lesser and greater are also not that great but I found a test that used `less`, `equal`, `greater` so I took that: dfa88b328f/library/core/tests/slice.rs (L1962)
2024-02-17 11:23:07 +01:00
Guillaume Boisseau
c7701ba803
Rollup merge of #121135 - Zalathar:no-whole-body-span, r=wesleywiser
coverage: Discard spans that fill the entire function body

While debugging some other coverage changes, I discovered a frustrating inconsistency that occurs in functions containing closures, if they end with an implicit `()` return instead of an explicit trailing-expression.

This turns out to have been caused by the corresponding node in MIR having a span that covers the entire function body. When preparing coverage spans, any span that fills the whole body tends to cause more harm than good, so this PR detects and discards those spans.

(This isn't the first time whole-body spans have caused problems; we also eliminated some of them in #118525.)
2024-02-17 11:23:04 +01:00
Guillaume Boisseau
5ff9022306
Rollup merge of #121059 - compiler-errors:extension, r=davidtwco,Nilstrieb
Add and use a simple extension trait derive macro in the compiler

Adds `#[extension]` to `rustc_macros` for implementing an extension trait. This expands an impl (with an optional visibility) into two parallel trait + impl definitions.

before:
```rust
pub trait Extension {
  fn a();
}
impl Extension for () {
  fn a() {}
}
```

to:
```rust
#[extension]
pub impl Extension for () {
  fn a() {}
}
```

Opted to just implement it by hand because I couldn't figure if there was a "canonical" choice of extension trait macro in the ecosystem. It's really lightweight anyways, and can always be changed.

I'm interested in adding this because I'd like to later split up the large `TypeErrCtxtExt` traits into several different files. This should make it one step easier.
2024-02-17 11:23:04 +01:00
Guillaume Boisseau
f70f13a1d3
Rollup merge of #120932 - RalfJung:mut-ptr-to-static, r=oli-obk
const_mut_refs: allow mutable pointers to statics

Fixes https://github.com/rust-lang/rust/issues/118447

Writing this PR became a bit messy, see [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/146212-t-compiler.2Fconst-eval/topic/Statics.20pointing.20to.20interior.20mutable.20statics) for some of my journey.^^ Turns out there was a long-standing bug in our qualif logic that led to us incorrectly classifying certain places as "no interior mut" when they actually had interior mut. Due to that the `const_refs_to_cell` feature gate was required far less often than it otherwise would, e.g. in [this code](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=9e0c042c451b3d11d64dd6263679a164). Fixing this however would be a massive breaking change all over libcore and likely the wider ecosystem. So I also changed the const-checking logic to just not require the feature gate for the affected cases. While doing so I discovered a bunch of logic that is not explained and that I could not explain. However I think stabilizing some const-eval feature will make most of that logic inconsequential so I just added some FIXMEs and left it at that.

r? `@oli-obk`
2024-02-17 11:23:03 +01:00
Guillaume Boisseau
5f21609463
Rollup merge of #119032 - smmalis37:patch-1, r=ChrisDenton
Use a hardcoded constant instead of calling OpenProcessToken.

Now that Win 7 support is dropped, we can resurrect #90144.

GetCurrentProcessToken is defined in processthreadsapi.h as:

FORCEINLINE
HANDLE
GetCurrentProcessToken (
    VOID
    )
{
    return (HANDLE)(LONG_PTR) -4;
}

Since it's very unlikely that this constant will ever change, let's just use it instead of making calls to get the same information.
2024-02-17 11:23:03 +01:00
klensy
f6fa03bfae compiletest: fix regex rebuilds 2024-02-17 12:40:26 +03:00
klensy
12f9de7d0e tidy: wrap regexes with lazy_static
yes, once_cell better, but ...

this reduces from

==31349== Total:     1,365,199,543 bytes in 4,774,213 blocks
==31349== At t-gmax: 10,975,708 bytes in 66,093 blocks
==31349== At t-end:  2,880,947 bytes in 12,332 blocks
==31349== Reads:     5,210,008,956 bytes
==31349== Writes:    1,280,920,127 bytes

to

==47796== Total:     821,467,407 bytes in 3,955,595 blocks
==47796== At t-gmax: 10,976,209 bytes in 66,100 blocks
==47796== At t-end:  2,944,016 bytes in 12,490 blocks
==47796== Reads:     4,788,959,023 bytes
==47796== Writes:    975,493,639 bytes

miropt-test-tools: remove regex usage

this removes regex usage and slightly refactors ext stripping in one case
2024-02-17 12:29:05 +03:00
Ralf Jung
340f8aac7e const_mut_refs: allow mutable refs to statics 2024-02-17 10:19:17 +01:00
hi-rustin
6f1383cf5b Remove unnecessary unit binding
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2024-02-17 16:20:09 +08:00
bors
dfdbe30004 Auto merge of #119432 - gurry:117949-make-lint-run-on-promoteds, r=oli-obk
Make `ConstPropLint` lint run on promoteds

Fixes #117949 wherein the lint didn't fire for the following promoteds:

- SHL or SHR operators in a non-optimized build
- any arithmetic operator in an optimized build

What I have done here is simply enabled `ConstPropLint` to run on promoted bodies by removing the relevant `if` check.

After this change _all_ promoted arithmetic operators will lint _in both non-optimized and optimized builds_. On the flip side programs containing the above mentioned overflowing promoteds that were accepted earlier will now be rejected. Hope that is okay from a backward compatibility standpoint.

I have added tests covering all overflowing promoted & non-promoted ops for both compile-time and runtime operations and for optimized as well as non-optimized builds.

I had to amend some existing tests to make them pass and had to delete a couple that were set to pass despite overflows.

This PR increases the number of duplicate diagnostics emitted (because the same operator might get linted in both the promoted MIR and the main MIR). I hope that is an acceptable trade-off given that we now lint overflows much more comprehensively than earlier.
2024-02-17 07:46:36 +00:00
León Orell Valerian Liehr
fde4556785
Properly check constrainedness of gen params in the presence of weak alias types 2024-02-17 08:39:01 +01:00
León Orell Valerian Liehr
8677d64c72
Support weak alias types as self type of inherent impls 2024-02-17 08:38:59 +01:00
León Orell Valerian Liehr
38a2a65f0b
Remove astconv::ConvertedBinding 2024-02-17 08:20:05 +01:00
León Orell Valerian Liehr
f62a695572
Update comments and variable names 2024-02-17 08:19:23 +01:00
bors
bbfce9196f Auto merge of #3303 - rust-lang:rustup-2024-02-17, r=saethlin
Automatic Rustup
2024-02-17 05:44:08 +00:00