Commit Graph

271932 Commits

Author SHA1 Message Date
bors e93e096cc8 Auto merge of #133658 - jieyouxu:rollup-rq7e0gk, r=jieyouxu
Rollup of 10 pull requests

Successful merges:

 - #116161 (Stabilize `extended_varargs_abi_support`)
 - #132750 ([AIX] handle libunwind native_libs)
 - #133488 (tests: Add regression test for self referential structs with cow as last field)
 - #133569 (Bump `ruzstd` to 0.7.3)
 - #133585 (Do not call `extern_crate` on current trait on crate mismatch errors)
 - #133587 (Fix target_feature handling in freg of LoongArch inline assembly)
 - #133599 (Add `+forced-atomics` feature to esp32s2 no_std  target)
 - #133620 (Simplify hir_typeck_pass_to_variadic_function)
 - #133623 (Improve span handling in `parse_expr_bottom`.)
 - #133625 (custom MIR: add doc comment for debuginfo)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-30 14:34:27 +00:00
bors e48ddd8a0b Auto merge of #133671 - nikic:revert-cargo-update, r=lqd
Revert "Auto merge of #133654 - weihanglo:update-cargo, r=weihanglo"

This reverts commit 76f3ff6059, reversing changes made to 1fc691e6dd.

The new pgo_works test fails when rust is built without profiling support, including in CI on x86_64-gnu-aux. See https://github.com/rust-lang/rust/pull/133499#issuecomment-2508901283 for how this happened.
2024-11-30 11:49:46 +00:00
Nikita Popov f5691baba6 Revert "Auto merge of #133654 - weihanglo:update-cargo, r=weihanglo"
This reverts commit 76f3ff6059, reversing
changes made to 1fc691e6dd.

The new pgo_works test fails when rust is built without profiling
support, including in CI on x86_64-gnu-aux.
2024-11-30 10:34:49 +01:00
许杰友 Jieyou Xu (Joe) 6512836be0 Rollup merge of #133625 - RalfJung:custom-mir-debug-info, r=compiler-errors
custom MIR: add doc comment for debuginfo

This is a revival of https://github.com/rust-lang/rust/pull/117015
2024-11-30 12:56:55 +08:00
许杰友 Jieyou Xu (Joe) ea72c19c7d Rollup merge of #133623 - nnethercote:parse_expr_bottom-spans, r=compiler-errors
Improve span handling in `parse_expr_bottom`.

`parse_expr_bottom` stores `this.token.span` in `lo`, but then fails to use it in many places where it could. This commit fixes that, and likewise (to a smaller extent) in `parse_ty_common`.

r? ``@spastorino``
2024-11-30 12:56:54 +08:00
许杰友 Jieyou Xu (Joe) c112195fec Rollup merge of #133620 - dev-ardi:simplify-hir_typeck_pass_to_variadic_function, r=compiler-errors
Simplify hir_typeck_pass_to_variadic_function

r? ``@compiler-errors``
This reworks a bit how the diagnostic is generated so that it does the same as #133538

The `help` is useless now so I removed it
2024-11-30 12:56:54 +08:00
许杰友 Jieyou Xu (Joe) 46f826cff7 Rollup merge of #133599 - esp-rs:target/esp32s2-forced-atomics, r=Amanieu
Add `+forced-atomics` feature to esp32s2 no_std  target

Similar to https://github.com/rust-lang/rust/pull/114499 but for the Xtensa backend. The ESP32-S2 doesn't have native atomic support, but can have atomic load/stores as part of the ISA with this LLVM codegen feature.

Note: The current rev of LLVM that rustc is using doesn't contain the `+forced-atomics` feature for Xtensa, but I'm pushing this now to remove the patch from our fork in `esp-rs/rust`.

r? ``@Amanieu`` because you reviewed the related RISC-V PR
2024-11-30 12:56:53 +08:00
许杰友 Jieyou Xu (Joe) ab4588a619 Rollup merge of #133587 - taiki-e:loongarch-asm-freg, r=Amanieu
Fix target_feature handling in freg of LoongArch inline assembly

In LoongArch inline assembly, freg currently always accepts f32/f64 as input/output.

https://github.com/rust-lang/rust/blob/9b4d7c6a40b328d212095c28670c629facf1557d/compiler/rustc_target/src/asm/loongarch.rs#L41

However, these types actually require f/d target features as in RISC-V.
Otherwise, an (ugly) compile error will occur: https://godbolt.org/z/K61Gq1E9E

f32/f64 without f:

```
error: couldn't allocate output register for constraint '{$f1}'
  --> <source>:12:11
   |
12 |     asm!("", in("$f1") x, lateout("$f1") y);
   |           ^
```

f64 with f but without d:

```
error: scalar-to-vector conversion failed, possible invalid constraint for vector type
  --> <source>:19:11
   |
19 |     asm!("", in("$f1") x, lateout("$f1") y);
   |           ^
```

cc ``@heiher``

r? ``@Amanieu``

``@rustbot`` label +O-LoongArch +A-inline-assembly
2024-11-30 12:56:53 +08:00
许杰友 Jieyou Xu (Joe) 70e71f570d Rollup merge of #133585 - estebank:issue-133563, r=jieyouxu
Do not call `extern_crate` on current trait on crate mismatch errors

When we encounter an error caused by traits/types of different versions of the same crate, filter out the current crate when collecting spans to add to the context so we don't call `extern_crate` on the `DefId` of the current crate, which is meaningless and ICEs.

Produced output with this filter:

```
error[E0277]: the trait bound `foo::Struct: Trait` is not satisfied
  --> y.rs:13:19
   |
13 |     check_trait::<foo::Struct>();
   |                   ^^^^^^^^^^^ the trait `Trait` is not implemented for `foo::Struct`
   |
note: there are multiple different versions of crate `foo` in the dependency graph
  --> y.rs:7:1
   |
4  | extern crate foo;
   | ----------------- one version of crate `foo` is used here, as a direct dependency of the current crate
5  |
6  | pub struct Struct;
   | ----------------- this type implements the required trait
7  | pub trait Trait {}
   | ^^^^^^^^^^^^^^^ this is the required trait
   |
  ::: x.rs:4:1
   |
4  | pub struct Struct;
   | ----------------- this type doesn't implement the required trait
5  | pub trait Trait {}
   | --------------- this is the found trait
   = note: two types coming from two different versions of the same crate are different types even if they look the same
   = help: you can use `cargo tree` to explore your dependency tree
note: required by a bound in `check_trait`
  --> y.rs:10:19
   |
10 | fn check_trait<T: Trait>() {}
   |                   ^^^^^ required by this bound in `check_trait`
```

Fix #133563.
2024-11-30 12:56:52 +08:00
许杰友 Jieyou Xu (Joe) 5ec505f4f3 Rollup merge of #133569 - paolobarbolini:ruzstd-0.7.3, r=Mark-Simulacrum
Bump `ruzstd` to 0.7.3

This upgrades `ruzstd` to a version not affected by [RUSTSEC-2024-0400](https://rustsec.org/advisories/RUSTSEC-2024-0400.html)
2024-11-30 12:56:52 +08:00
许杰友 Jieyou Xu (Joe) f1d9ba8741 Rollup merge of #133488 - Enselic:recurse-2, r=BoxyUwU
tests: Add regression test for self referential structs with cow as last field

Making compilation pass for this code was retroactively stabilized via FCP in 1.79. The code does not compile in 1.78.

See https://github.com/rust-lang/rust/issues/129541 for details.

Closes #107481
2024-11-30 12:56:51 +08:00
许杰友 Jieyou Xu (Joe) 5192810868 Rollup merge of #132750 - daltenty:daltenty/libs, r=jieyouxu
[AIX] handle libunwind native_libs

AIX should follow a similar path here to other libunwind platforms, with regards to system vs in-tree libunwind and the native lib search directories.

Having the right native lib search directories here is also required to get the correct default library search paths, due to some quirks of the AIX linker.
2024-11-30 12:56:50 +08:00
许杰友 Jieyou Xu (Joe) dd99f11ef8 Rollup merge of #116161 - Soveu:varargs2, r=cjgillot
Stabilize `extended_varargs_abi_support`

I think that is everything? If there is any documentation regarding `extern` and/or varargs to correct, let me know, some quick greps suggest that there might be none.

Tracking issue: https://github.com/rust-lang/rust/issues/100189
2024-11-30 12:56:50 +08:00
bors 76f3ff6059 Auto merge of #133654 - weihanglo:update-cargo, r=weihanglo
Update cargo

8 commits in 4c39aaff66862cc0da52fe529aa1990bb8bb9a22..3908f64086a3d7b9af8d87b4da2bd100776c3e61
2024-11-25 16:36:17 +0000 to 2024-11-29 17:32:44 +0000
- chore(deps): update msrv (rust-lang/cargo#14867)
- fix(fix): Migrate cargo script manifests across editions (rust-lang/cargo#14864)
- feat(toml): Allow adding/removing from cargo scripts (rust-lang/cargo#14857)
- Add future-incompat warning against keywords in cfgs and add raw-idents (rust-lang/cargo#14671)
- test(build-std): download deps first (rust-lang/cargo#14861)
- test(pgo): ensure PGO works (rust-lang/cargo#14859)
- git-fetch-with-cli: Set `GIT_DIR` for bare repository compatibility (rust-lang/cargo#14860)
- fix(build-std): always link to std when testing proc-macros (rust-lang/cargo#14850)
2024-11-30 01:22:00 +00:00
Weihang Lo 2ba7d68011 Update cargo 2024-11-29 18:41:03 -05:00
bors 1fc691e6dd Auto merge of #133533 - BoxyUwU:bump-boostrap, r=jieyouxu,Mark-Simulacrum
Bump boostrap compiler to new beta

Currently failing due to something about the const stability checks and `panic!`. I'm not sure why though since I wasn't able to see any PRs merged in the past few days that would result in a `cfg(bootstrap)` that shouldn't be removed. cc `@RalfJung` #131349
2024-11-29 22:39:10 +00:00
David Tenty a9cb2d6709 Add a comment 2024-11-29 16:40:13 -05:00
Boxy 5fa483cb10 Cargo patch 2024-11-29 21:31:42 +00:00
bors d10a6823f4 Auto merge of #133588 - flip1995:clippy-subtree-update, r=Manishearth
Clippy subtree update

r? `@Manishearth`
2024-11-29 19:52:08 +00:00
Orion Gonzalez ce98bf3d79 simplify how the hir_typeck_pass_to_variadic_function diagnostic is created 2024-11-29 20:49:06 +01:00
Esteban Küber 998ff2f0cd Move the crate-loading test to use diff output 2024-11-29 18:59:24 +00:00
Esteban Küber e97e15dea5 Use rmake diff output in test 2024-11-29 18:31:37 +00:00
bors a45391f4dd Auto merge of #133634 - matthiaskrgr:rollup-v7m4j2k, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #131323 (Support `clobber_abi` in AVR inline assembly)
 - #131718 ([rustdoc] Change impl items indent)
 - #133565 (chore: fix 404 status URL)
 - #133575 (Fix typo in RELEASES.md)
 - #133577 (Document s390x machine access via community cloud)
 - #133584 (Update more 2024 tests to remove -Zunstable-options)
 - #133592 (Misc: better instructions for envrc, ignore `/build` instead of `build/`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-29 17:06:37 +00:00
Matthias Krüger eabe6db9b1 Rollup merge of #133592 - WaffleLapkin:misc-meowing, r=jieyouxu
Misc: better instructions for envrc, ignore `/build` instead of `build/`

See commits for more information.

r? ``@jieyouxu``
2024-11-29 16:02:24 +01:00
Matthias Krüger 53bc38b3fe Rollup merge of #133584 - ehuss:more-2024-unstable-options, r=compiler-errors
Update more 2024 tests to remove -Zunstable-options

This removes `-Zunsable-options` from more tests that I missed in https://github.com/rust-lang/rust/pull/133349.
2024-11-29 16:02:23 +01:00
Matthias Krüger fbad22ea25 Rollup merge of #133577 - uweigand:s390x-doc-cloudaccess, r=jieyouxu
Document s390x machine access via community cloud
2024-11-29 16:02:22 +01:00
Matthias Krüger 271ff44c33 Rollup merge of #133575 - slanterns:typo, r=compiler-errors
Fix typo in RELEASES.md

An additional dot.
2024-11-29 16:02:22 +01:00
Matthias Krüger 11ee1ce973 Rollup merge of #133565 - longxiangqiao:master, r=ehuss
chore: fix 404 status URL
2024-11-29 16:02:21 +01:00
Matthias Krüger f46ed97009 Rollup merge of #131718 - GuillaumeGomez:impl-items-indent, r=rustdoc
[rustdoc] Change impl items indent

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

| before | after |
|-|-|
| ![image](https://github.com/user-attachments/assets/67679827-6aef-4bdb-93dd-e1a4784566b3) | ![image](https://github.com/user-attachments/assets/8a0e9fbc-794a-4b98-abc6-bbbe178736b1) |

Can be tested [here](https://rustdoc.crud.net/imperio/impl-items-indent/bar/struct.Bar.html).

r? `@notriddle`
2024-11-29 16:02:20 +01:00
Matthias Krüger 6c9e922685 Rollup merge of #131323 - jfrimmel:avr-inline-asm-clobber-abi, r=Amanieu
Support `clobber_abi` in AVR inline assembly

This PR implements the `clobber_abi` part necessary to eventually stabilize the inline assembly for AVR. This is tracked in #93335.
This is heavily inspired by the sibling-PR #131310 for the MSP430. I've explained my reasoning in the first commit message in detail, which is reproduced below for easier reviewing:

This follows the [ABI documentation] of AVR-GCC:

> The [...] call-clobbered general purpose registers (GPRs) are registers that might be destroyed (clobbered) by a function call.
>
> - **R18–R27, R30, R31**
>
>   These GPRs are call clobbered. An ordinary function may use them without restoring the contents. [...]
>
> - **R0, T-Flag**
>
>   The temporary register and the T-flag in SREG are also call-clobbered, but this knowledge is not exposed explicitly to the compiler (R0 is a fixed register).

Therefore this commit lists the aforementioned registers `r18–r27`, `r30` and `r31` as clobbered registers. Since the `r0` register (listed above as well) is not available in inline assembly at all (potentially because the AVR-GCC considers it a fixed register causing the register to never be used in register allocation and LLVM adopting this), there is no need to list it in the clobber list (the `r0`-variant is not even available). A comment was added to ensure, that the `r0` gets added to the clobber-list once the register gets usable in inline ASM.
Since the SREG is normally considered clobbered anyways (unless the user supplies the `preserve_flags`-option), there is no need to explicitly list a bit in this register (which is not possible to list anyways).

Note, that this commit completely ignores the case of interrupts (that are described in the ABI-specification), since every register touched in an ISR need to be saved anyways.

[ABI documentation]: https://gcc.gnu.org/wiki/avr-gcc#Call-Used_Registers

r? ``@Amanieu``

``@rustbot`` label +O-AVR
2024-11-29 16:02:20 +01:00
Ralf Jung 6e449e18ad refine mir debuginfo docs 2024-11-29 14:01:53 +01:00
bors 0c4f3a45b8 Auto merge of #133619 - matthiaskrgr:rollup-7ywaheb, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #132782 (improvements on initial sysroot and libdir finding logics)
 - #133466 (Fix typos in pin.rs)
 - #133492 (bootstrap: allow skipping steps with start of path)
 - #133501 (support revealing defined opaque post borrowck)
 - #133530 (Use consistent wording in docs, use is zero instead of is 0)
 - #133538 (Better diagnostic for fn items in variadic functions)
 - #133590 (Rename `-Zparse-only`)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-29 12:05:41 +00:00
Camille GILLOT c76f1f0b9b Doc comment custom MIR debuginfo.
and add a test for the constant case
2024-11-29 12:32:55 +01:00
Matthias Krüger ce52b7b3d8 Rollup merge of #133590 - nnethercote:rename-parse-only, r=estebank
Rename `-Zparse-only`

It's a misleading name.

r? ````@estebank````
2024-11-29 10:19:00 +01:00
Matthias Krüger 72cf40d9ed Rollup merge of #133538 - dev-ardi:69232-better-diag, r=compiler-errors
Better diagnostic for fn items in variadic functions

closes #69232
2024-11-29 10:18:59 +01:00
Matthias Krüger 8ca5a907a5 Rollup merge of #133530 - timvisee:master, r=jhpratt
Use consistent wording in docs, use is zero instead of is 0

In documentation, wording of _"`rhs` is zero"_ and _"`rhs` is 0"_ is intermixed. This is especially visible [here](https://doc.rust-lang.org/std/primitive.usize.html#method.div_ceil).

This changes all occurrences to _"`rhs` is zero"_ for better readability.
2024-11-29 10:18:58 +01:00
Matthias Krüger 6863327ecc Rollup merge of #133501 - lcnr:post-borrowck-analysis, r=compiler-errors
support revealing defined opaque post borrowck

By adding a new `TypingMode::PostBorrowckAnalysis`. Currently only supported with the new solver and I didn't look into the way we replace `ReErased`. ``@compiler-errors`` mentioned that always using existentials may be unsound.

r? ``@compiler-errors``
2024-11-29 10:18:57 +01:00
Matthias Krüger 95560d6fe7 Rollup merge of #133492 - MarcoIeni:bootstrap-path-check, r=onur-ozkan
bootstrap: allow skipping steps with start of path
2024-11-29 10:18:57 +01:00
Matthias Krüger 370fc13298 Rollup merge of #133466 - aksh1618:patch-1, r=thomcc
Fix typos in pin.rs
2024-11-29 10:18:56 +01:00
Matthias Krüger 45fd6b4d99 Rollup merge of #132782 - onur-ozkan:cleanup, r=jieyouxu
improvements on initial sysroot and libdir finding logics

Stabilized initial sysroot and libdir path resolution logic to work without dry-run conditions and utilized initial sysroot more broadly.
2024-11-29 10:18:55 +01:00
bors 5bbbc0938c Auto merge of #133431 - nnethercote:rm-HybridBitSet, r=Mark-Simulacrum
Remove `HybridBitSet`

`HybridBitSet` was introduced under the name `HybridIdxSetBuf` way back in #53383 where it was a big win for NLL borrow checker performance. In #93984 the more flexible `ChunkedBitSet` was added. Uses of `HybridBitSet` have gradually disappeared (e.g. #116152) and there are now few enough that they can be replaced with `BitSet` or `ChunkedBitSet`, and `HybridBitSet` can be removed, cutting more than 700 lines of code.

r? `@Mark-Simulacrum`
2024-11-29 09:03:50 +00:00
Nicholas Nethercote d626f6a2f4 Remove last vestiges of HybridBitSet.
This is in a test where the arrangement of backticks matters, but the
exact words do not.
2024-11-29 17:23:34 +11:00
Nicholas Nethercote 4846c1922d Remove HybridBitSet.
It's no longer used.
2024-11-29 17:23:34 +11:00
Nicholas Nethercote b7ff2aedd9 Stop using HybridBitSet in SparseBitMatrix.
Use `ChunkedBitSet` instead.
2024-11-29 17:23:34 +11:00
Nicholas Nethercote 688f28d670 Stop using HybridBitSet in clippy.
The compiler uses `BitSet<Local>`, because the number of locals doesn't
get that high, so clippy should do likewise.
2024-11-29 17:23:34 +11:00
Nicholas Nethercote 0df6a018e1 Stop using HybridBitSet in dataflow diffs.
As part of the larger goal of reducing `HybridBitSet` use in general.
This code is for debugging only and isn't performance sensitive, so
`ChunkedBitSet` should be fine.
2024-11-29 17:23:34 +11:00
Nicholas Nethercote 346929cb80 Remove unused HybridBitSet methods from BitSetExt. 2024-11-29 17:23:34 +11:00
Nicholas Nethercote ded4dfde19 Speed up ChunkedBitIter
The current implementation is slow because it does an operation for
every bit in the set, even zero bits. So if you have a large bitset with
many zero bits (which is common) it's very slow.

This commit improves the iterator to skip over `Zeros` chunks in a
single step, and uses the fast `BitIter` for `Mixed` chunks. It also
removes the existing `fold` implementation, which was only there because
the old iterator was slow.
2024-11-29 17:23:32 +11:00
Nicholas Nethercote ff78002566 Tiny ChunkedBitSet improvements.
- Fix a typo in a comment.
- Remove unnecessary `Chunk::` qualifiers.
- Rename `ChunkedBitIter::bitset` as `ChunkedBitIter::bit_set`, because
  `bit_set` is the form used everywhere else.
- Avoid some unnecessary local variables.
2024-11-29 17:01:48 +11:00
Nicholas Nethercote 15b24c46b4 Clarify ChunkSize invariants.
`ChunkedBitSet::is_empty` currently does an unnecessary check. This
commit removes that check and adds clarifying comments and an assertion
that demonstrate why it's unnecessary.
2024-11-29 17:01:48 +11:00