Commit Graph

299184 Commits

Author SHA1 Message Date
Orson Peters 6f4d0bdde8 Tidy 2025-07-13 01:20:29 +02:00
Orson Peters 69b9bae57d Guarantee 8 bytes of alignment in Thread::into_raw 2025-07-13 00:58:46 +02:00
bors 175e04331b Auto merge of #143496 - saethlin:rollup-4u43rgj, r=saethlin
Rollup of 3 pull requests

Successful merges:

 - rust-lang/rust#143291 (codegen_ssa: replace a Result by an Either)
 - rust-lang/rust#143445 (move `va_copy`, `va_arg` and `va_end` to `core::intrinsics`)
 - rust-lang/rust#143447 ([COMPILETEST-UNTANGLE 4/N] Improve compiletest config documentation)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-05 17:32:26 +00:00
Ben Kimock 53757e6725 Rollup merge of #143447 - jieyouxu:compiletest-maintenance-4, r=Kobzol
[COMPILETEST-UNTANGLE 4/N] Improve compiletest config documentation

This is part of a patch series to untangle `compiletest` to hopefully nudge it towards being more maintainable.

This PR should contain **no functional changes**.

This is pulled out to its own PR to make follow-up changes easier to review.

There are *intentionally* a *lot* of FIXME comments, intended to be gradually addressed in follow-ups.

r? `@Kobzol`
2025-07-05 12:32:54 -04:00
Ben Kimock 7245febecd Rollup merge of #143445 - folkertdev:va-list-intrinsics, r=RalfJung
move `va_copy`, `va_arg` and `va_end` to `core::intrinsics`

some questions:

- should these functions be `pub`?
- is a separate module justified?

r? `@RalfJung`
2025-07-05 12:32:53 -04:00
Ben Kimock 61bdd11b20 Rollup merge of #143291 - RalfJung:result-isnt-either, r=scottmcm
codegen_ssa: replace a Result by an Either

`Err` here clearly does not indicate an "error" of any sort, so the use of `Result` is confusing. Let's use a sum type that does not come with the baggage of `Result`.
2025-07-05 12:32:53 -04:00
Ralf Jung 3cd13f72a2 codegen_ssa: replace a Result by an Either 2025-07-05 15:53:56 +02:00
bors 6dec76f1c2 Auto merge of #143474 - jieyouxu:bootstrap-llvm-snapshot, r=Kobzol
Pretend in bootstrap snapshot tests that we always build in-tree LLVM

Otherwise, depending on whether CI LLVM is inhibited or if an externally-provided LLVM is used, bootstrap host LLVM build step could be missing in step snapshots.

Note that I'm not sure if this is the *right* solution (this might be *a* solution). I imagine we do want to control for the set of configuration that these snapshot tests are run, as much as possible.

r? `@Kobzol`
2025-07-05 12:42:59 +00:00
bors fd9ca711a3 Auto merge of #143473 - workingjubilee:rollup-bxie7zg, r=scottmcm
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#142440 (`tests/ui`: A New Order [14/N])
 - rust-lang/rust#143040 (Add `const Rem`)
 - rust-lang/rust#143086 (Update poison.rs to fix the typo (sys->sync))
 - rust-lang/rust#143202 (`tests/ui`: A New Order [18/N])
 - rust-lang/rust#143296 (`tests/ui`: A New Order [21/N])
 - rust-lang/rust#143297 (`tests/ui`: A New Order [22/N])
 - rust-lang/rust#143299 (`tests/ui`: A New Order [24/N])
 - rust-lang/rust#143300 (`tests/ui`: A New Order [25/N])
 - rust-lang/rust#143397 (test passing a `VaList` from rust to C)
 - rust-lang/rust#143410 (Block SIMD in transmute_immediate; delete `OperandValueKind`)
 - rust-lang/rust#143452 (Fix CLI completion check in `tidy`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-05 09:37:08 +00:00
Jieyou Xu 7405e2a915 Improve compiletest config documentation
Including a bunch of FIXMEs.
2025-07-05 15:19:48 +08:00
Folkert de Vries 4ae22fba5b move the va_copy, va_arg and va_end to core::intrinsics 2025-07-05 09:18:49 +02:00
Jieyou Xu 006e97a234 Pretend in bootstrap snapshot tests that we always build in-tree LLVM 2025-07-05 14:54:12 +08:00
bors f0b67dd97d Auto merge of #139598 - compiler-errors:no-bound-var-symbol, r=WaffleLapkin
Remove `Symbol` from `Named` variant of `BoundRegionKind`/`LateParamRegionKind`

The `Symbol` is redundant, since we already store a `DefId` in the region variant. Instead, load the name via `item_name` when needed (which is almost always on the diagnostic path).

This introduces a `BoundRegionKind::NamedAnon` which is used for giving anonymous bound regions names, but which should only be used during pretty printing and error reporting.
2025-07-05 06:29:56 +00:00
Jubilee 77ae27084e Rollup merge of #143452 - Kobzol:completions-fix, r=jieyouxu
Fix CLI completion check in `tidy`

The list of CLI completion files that were generated and that were checked by `x test tidy` was not synced. Recently, some PR only updated some of the files, which caused the rest of the files (not checked by `x test tidy`) to be dirty on `master`. This PR fixes the logic in bootstrap to always synchronize the list of completion paths.

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

r? `@jieyouxu`
2025-07-04 23:26:25 -07:00
Jubilee 33eb552ceb Rollup merge of #143410 - scottmcm:redo-transmute-again, r=RalfJung,workingjubilee
Block SIMD in transmute_immediate; delete `OperandValueKind`

Vectors have been causing me problems for years in this code, for example https://github.com/rust-lang/rust/pull/110021#discussion_r1160975086 and https://github.com/rust-lang/rust/pull/143194

See conversation in <https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Is.20transmuting.20a.20.60T.60.20to.20.60Tx1.60.20.28one-element.20SIMD.20vector.29.20UB.3F/near/526262799>.

By blocking SIMD in `transmute_immediate` it can be simplified to just take the `Scalar`s involved -- the backend types can be gotten from those `Scalar`s, rather than needing to be passed.  And there's an assert added to ICE it if it does get hit.

Accordingly, this changes `rvalue_creates_operand` to not send SIMD transmutes through the operand path, but to always go through memory instead, like they did back before rust-lang/rust#108442.

And thanks to those changes, I could also remove the `OperandValueKind` type that I added back then which `@RalfJung` rightly considers pretty sketchy.

cc `@folkertdev` `@workingjubilee` from the zulip conversation too
2025-07-04 23:26:24 -07:00
Jubilee 5b509e6158 Rollup merge of #143397 - folkertdev:test-variadic-call-from-rust-to-c, r=RalfJung
test passing a `VaList` from rust to C

Have C define various functions that take a `...` or `va_list` as an argument, and call them from rust. As far as I can see, this just wasn't actually tested before.

In particular this tests a difference between rust `VaList` and C `va_list` where C uses array-to-pointer decay, but rust cannot.

I've locally tested this for

- `x86_64-unknown-linux-gnu`
- `aarch64-unknown-linux-gnu`
- `s390x-unknown-linux-gnu`
- `powerpc64-unknown-linux-gnu`
- `powerpc64le-unknown-linux-gnu`

The latter 2 use an opaque pointer, the first 3 use a single-element array.

cc `@beetrees` if you see anything incorrect here

r? `@workingjubilee`
2025-07-04 23:26:24 -07:00
Jubilee 5f415da0b5 Rollup merge of #143300 - Kivooeo:tf25, r=tgross35
`tests/ui`: A New Order [25/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@tgross35`
2025-07-04 23:26:23 -07:00
Jubilee 069f571fad Rollup merge of #143299 - Kivooeo:tf24, r=tgross35
`tests/ui`: A New Order [24/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@tgross35`
2025-07-04 23:26:23 -07:00
Jubilee fde4de4d2d Rollup merge of #143297 - Kivooeo:tf22, r=tgross35
`tests/ui`: A New Order [22/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@tgross35`
2025-07-04 23:26:22 -07:00
Jubilee 19a7f0fb7d Rollup merge of #143296 - Kivooeo:tf21, r=tgross35
`tests/ui`: A New Order [21/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@tgross35`
2025-07-04 23:26:21 -07:00
Jubilee f10725218d Rollup merge of #143202 - Kivooeo:tf18, r=tgross35
`tests/ui`: A New Order [18/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@tgross35`
2025-07-04 23:26:21 -07:00
Jubilee 2f119daf4e Rollup merge of #143086 - SciMind2460:patch-2, r=workingjubilee
Update poison.rs to fix the typo (sys->sync)
2025-07-04 23:26:20 -07:00
Jubilee 3b522384e4 Rollup merge of #143040 - SciMind2460:patch-1, r=workingjubilee
Add `const Rem`
2025-07-04 23:26:20 -07:00
Jubilee b1234daf8c Rollup merge of #142440 - Kivooeo:tf14, r=tgross35
`tests/ui`: A New Order [14/N]

> [!NOTE]
>
> Intermediate commits are intended to help review, but will be squashed prior to merge.

Some `tests/ui/` housekeeping, to trim down number of tests directly under `tests/ui/`. Part of rust-lang/rust#133895.

r? `@jieyouxu`
2025-07-04 23:26:19 -07:00
bors 733b47ea4b Auto merge of #138759 - scottmcm:operand-builder, r=saethlin
Allow `enum` and `union` literals to also create SSA values

Today, `Some(x)` always goes through an `alloca`, even in trivial cases where the niching means the constructor doesn't even change the value.

For example, <https://rust.godbolt.org/z/6KG6PqoYz>
```rust
pub fn demo(r: &i32) -> Option<&i32> {
    Some(r)
}
```
currently emits the IR
```llvm
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
  %_0 = alloca [8 x i8], align 8
  store ptr %r, ptr %_0, align 8
  %0 = load ptr, ptr %_0, align 8
  ret ptr %0
}
```
but with this PR it becomes just
```llvm
define align 4 ptr `@demo(ptr` align 4 %r) unnamed_addr {
start:
  ret ptr %r
}
```
(Of course the optimizer can clean that up, but it'd be nice if it didn't have to -- especially in debug where it doesn't run.  This is like rust-lang/rust#123886, but that only handled non-simd `struct`s -- this PR generalizes it to all non-simd ADTs.)

Doing this means handing variants other than `FIRST_VARIANT`, handling the active field for unions, refactoring the discriminant code so the Place and Operand parts can share the calculation, etc.

Other PRs that led up to this one:
- https://github.com/rust-lang/rust/pull/142005
- https://github.com/rust-lang/rust/pull/142103
- https://github.com/rust-lang/rust/pull/142324
- https://github.com/rust-lang/rust/pull/142383

---

try-job: aarch64-gnu
2025-07-05 01:37:08 +00:00
Kurt Heiritz (pseudo) 2d1aa58225 Make Rem const for floats 2025-07-04 16:40:45 -07:00
bors d98a5da813 Auto merge of #143459 - matthiaskrgr:rollup-gsv6uzl, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - rust-lang/rust#141532 (std: sys: net: uefi: tcp4: Implement write)
 - rust-lang/rust#143085 (Port `#[non_exhaustive]` to the new attribute parsing infrastructure)
 - rust-lang/rust#143372 (Remove names_imported_by_glob_use query.)
 - rust-lang/rust#143386 (Assign dependency bump PRs to me)
 - rust-lang/rust#143406 (Remove some unnecessary `unsafe` in VecCache)
 - rust-lang/rust#143408 (mbe: Gracefully handle macro rules that end after `=>`)
 - rust-lang/rust#143414 (remove special-casing of boxes from match exhaustiveness/usefulness analysis)
 - rust-lang/rust#143444 (clean up GVN TypeId test)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-04 22:36:39 +00:00
Matthias Krüger 1ff6e44785 Rollup merge of #143444 - lukas-code:gvn-test, r=RalfJung
clean up GVN TypeId test

addresses https://github.com/rust-lang/rust/pull/142789#discussion_r2184897992

This is an attempt to clarify what this test is actually supposed to test and make it less dependent on `TypeId` internals (it now depends on the output of `type_name` instead).

I verified that this version still miscompiles on `nightly-2025-02-11`.

r? ``@oli-obk`` ``@RalfJung``
2025-07-05 00:12:12 +02:00
Matthias Krüger e0dd7ecac1 Rollup merge of #143414 - dianne:box-usefulness-cleanup, r=Nadrieril
remove special-casing of boxes from match exhaustiveness/usefulness analysis

As a first step in replacing `box_patterns` with `deref_patterns`, this treats box patterns as deref patterns in the THIR and exhaustiveness analysis. This allows a bunch of special-casing to be removed. The emitted MIR is unchanged.

Incidentally, this fixes a bug caused by box patterns being treated like structs rather than pointers, where enabling `exhaustive_patterns` (rust-lang/rust#51085) could give rise to spurious `unreachable_patterns` lints on arms required for exhaustiveness. Following the lint's advice to remove the match arm would result in an error. I'm not sure what the current state of `exhaustive_patterns` is with regard to reference/box opsem, or whether there's any intention to have `unreachable_patterns` be more granular than the whole arm, but regardless this should hopefully make them easier to handle consistently.

Tracking issue for deref patterns: rust-lang/rust#87121

r? `@Nadrieril`
2025-07-05 00:12:12 +02:00
Matthias Krüger 2cde070b33 Rollup merge of #143408 - joshtriplett:fix-mbe-parser, r=compiler-errors
mbe: Gracefully handle macro rules that end after `=>`

Add a test for various cases of invalid macro definitions.

Closes: https://github.com/rust-lang/rust/issues/143351
2025-07-05 00:12:11 +02:00
Matthias Krüger 567c51d584 Rollup merge of #143406 - scottmcm:did-we-need-that-unsafe, r=compiler-errors
Remove some unnecessary `unsafe` in VecCache

I'm pretty sure, but until perf confirms,
r? ghost
2025-07-05 00:12:10 +02:00
Matthias Krüger e2e72cd026 Rollup merge of #143386 - clubby789:dep-bump-me, r=compiler-errors
Assign dependency bump PRs to me

These PRs sometimes get lost as GH reduces their visibility, so I wanted to get an assignment so I can help these PRs land
2025-07-05 00:12:10 +02:00
Matthias Krüger 031bf9715a Rollup merge of #143372 - cjgillot:bare-glob-map, r=petrochenkov
Remove names_imported_by_glob_use query.

Based on https://github.com/rust-lang/rust/pull/143247
r? ``@ghost`` for perf
2025-07-05 00:12:09 +02:00
Matthias Krüger afe8ee34a7 Rollup merge of #143085 - JonathanBrouwer:non_exhaustive_parser, r=jdonszelmann
Port `#[non_exhaustive]` to the new attribute parsing infrastructure

Ports `non_exhaustive` to the new attribute parsing infrastructure for https://github.com/rust-lang/rust/issues/131229#issuecomment-2971353197

r? ``@jdonszelmann``
2025-07-05 00:12:09 +02:00
Matthias Krüger edfaaeb397 Rollup merge of #141532 - Ayush1325:uefi-tcp4-send, r=tgross35
std: sys: net: uefi: tcp4: Implement write

A blocking implementation of tcp4 write.
2025-07-05 00:12:08 +02:00
Scott McMurray d020e38fa2 Workaround a MemorySanitizer test issue 2025-07-04 14:47:28 -07:00
Kivooeo 066a281f60 cleaned up some tests 2025-07-05 01:54:04 +05:00
Kivooeo 62ada47328 cleaned up some tests 2025-07-05 01:25:48 +05:00
Jakub Beránek 1a1f56174b Update completions 2025-07-04 22:10:02 +02:00
Jakub Beránek 46ce66ff5c Unify completion list between x test tidy and x run generate-completions 2025-07-04 22:10:02 +02:00
Kivooeo 0f7a86bb2a cleaned up some tests 2025-07-05 00:50:51 +05:00
Kivooeo 7f2e37fc5c moved & deleted tests
opeq.rs was removed as duplicating test logic in other tests
2025-07-05 00:48:10 +05:00
Kivooeo b28806da23 cleaned up some tests 2025-07-05 00:45:24 +05:00
Kivooeo 9ad98f78d4 moved tests 2025-07-05 00:39:50 +05:00
Scott McMurray 4e615272bf Address PR feedback 2025-07-04 12:29:27 -07:00
Jonathan Brouwer 027126ce0b Port #[non_exhaustive] to the new attribute parsing infrastructure 2025-07-04 20:30:42 +02:00
Michael Goulet dc8cac8e8d Nits 2025-07-04 18:26:09 +00:00
Michael Goulet 0ad96c1e1f Fix elided lifetimes in rustdoc 2025-07-04 18:26:09 +00:00
Michael Goulet d79b669b09 Fix pretty printing of placeholder types 2025-07-04 18:26:09 +00:00
Michael Goulet 74570e526e Same for types 2025-07-04 18:26:09 +00:00