Commit Graph

290693 Commits

Author SHA1 Message Date
onur-ozkan
a577bcc077 fix clippy warnings
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:33 +03:00
onur-ozkan
d2a6990122 fix bootstrap tests
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:28 +03:00
onur-ozkan
305890541f fix fs bug on CI and update ming-check-1 Dockerfile
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:25 +03:00
onur-ozkan
60394a807d fix CI-rustc bugs
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:22 +03:00
onur-ozkan
1ab2ba300c be able to build stage1 library with CI-rustc
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:20 +03:00
onur-ozkan
2938c8d310 add "library" to RUSTC_IF_UNCHANGED_ALLOWED_PATHS
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:17 +03:00
onur-ozkan
fcee761e50 improve comments and docs
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:14 +03:00
onur-ozkan
caca33192b add change entry
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:11 +03:00
onur-ozkan
9df53f58b4 update dev guidelines
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:08 +03:00
onur-ozkan
2b780cd517 split mingw-check into two
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:05 +03:00
onur-ozkan
d28cb1ceac use stage 1 for std on CI
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:02 +03:00
onur-ozkan
0803f62605 bless bootstrap tests
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:59 +03:00
onur-ozkan
4d5dab3f38 update stage defaults
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:57 +03:00
onur-ozkan
37cd39f3ce handle cfg bootstrap on compiler and miri
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:54 +03:00
onur-ozkan
613eceb80e improve check::Std handling
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:52 +03:00
onur-ozkan
c5adf58599 update std uplifting algorithm
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:49 +03:00
onur-ozkan
5dc0d89abc use initial rustc's std on stage 0
On stage 0, rather than compiling std utilize the one from the stage0 sysroot
as stage 0 should represent the snapshot version not the compiled one.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:46 +03:00
bors
aa5832b142 Auto merge of #141765 - matthiaskrgr:rollup-4hug83b, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#141703 (Structurally normalize types as needed in `projection_ty_core`)
 - rust-lang/rust#141719 (Add tls_model for cygwin and enable has_thread_local)
 - rust-lang/rust#141736 (resolve stage0 sysroot from rustc)
 - rust-lang/rust#141746 (Rework `#[doc(cfg(..))]` checks as distinct pass in rustdoc)
 - rust-lang/rust#141749 (Remove RUSTC_RETRY_LINKER_ON_SEGFAULT hack)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-30 12:13:28 +00:00
Matthias Krüger
4fce906481 Rollup merge of #141749 - Noratrieb:RUSTC_ACTUALLY_DO_NOT_RETRY_LINKER_ON_SEGFAULT, r=petrochenkov
Remove RUSTC_RETRY_LINKER_ON_SEGFAULT hack

It looks like this was added in rust-lang/rust#40422 6 years ago because of issues with the MacOS linker. MacOS got a new linker in the meantime, so that should probably be resolved now. Hopefully.

r? petrochenkov
2025-05-30 13:39:55 +02:00
Matthias Krüger
4aac899406 Rollup merge of #141746 - Urgau:rework-doc_cfg-checks, r=GuillaumeGomez
Rework `#[doc(cfg(..))]` checks as distinct pass in rustdoc

This PR reworks how rustdoc calls `rustc_attr_parsing::cfg_matches` to be in a separate pass, instead of being wired-up in a ad-hoc way, which is causing problems in https://github.com/rust-lang/rust/pull/138907#issuecomment-2920026627.

This un-does most part of https://github.com/rust-lang/rust/pull/140894, but the result is IMO much cleaner, easier to reason about, and most importantly no longer interfears with rust-lang/rust#138907.

r? `@GuillaumeGomez`
2025-05-30 13:39:54 +02:00
Matthias Krüger
611340ffc2 Rollup merge of #141736 - onur-ozkan:resolve-stage0-syroot-from-rustc, r=Kobzol
resolve stage0 sysroot from rustc

Similar to https://github.com/rust-lang/rust/pull/141729, instead of manually navigating directories based on stage0 rustc, use `--print sysroot` to get the sysroot directly. This also works when using the bootstrap `rustc` shim.

r? Kobzol
2025-05-30 13:39:53 +02:00
Matthias Krüger
c61a1e0f9b Rollup merge of #141719 - Berrysoft:cygwin-tls-model, r=mati865
Add tls_model for cygwin and enable has_thread_local

I've also tried to set `has_thread_local` to `true` and found it works actually. Why do we still implement our own `thread_local` instead of delegating all of them to LLVM?

cc: `@jeremyd2019`
2025-05-30 13:39:53 +02:00
Matthias Krüger
bace7f986c Rollup merge of #141703 - compiler-errors:deref-place, r=lcnr
Structurally normalize types as needed in `projection_ty_core`

Introduce a `structurally_normalize` callback to `projection_ty_core`, and then use it before we match on the ty kind in `projection_ty_core`.

Previously we were only structurally normalizing the return type of the `handle_field` struct, but if we were to (e.g.) apply a deref projection to that type, then the resulting type is not guaranteed to be structurally normalized and any subsequent projections applied would ICE.

Fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/221

I'll leave a few comments inline to explain the changes.

r? lcnr

---

Also fixes rust-lang/rust#141708
2025-05-30 13:39:52 +02:00
bors
e6152cdf5b Auto merge of #141573 - nnethercote:rustdoc-alloc-cleanups, r=camelid
rustdoc: cleanups relating to allocations

These commits generally clean up the code a bit and also reduce allocation rates a bit.

r? `@camelid`
2025-05-30 08:55:18 +00:00
bors
6de3a73312 Auto merge of #141753 - matthiaskrgr:rollup-bw4j2u0, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - rust-lang/rust#133823 (Use `cfg_attr_trace` in AST with a placeholder attribute for accurate suggestion)
 - rust-lang/rust#141004 (Report text_direction_codepoint_in_literal when parsing)
 - rust-lang/rust#141407 (Refactor the two-phase check for impls and impl items)
 - rust-lang/rust#141430 (remove `visit_clobber` and move `DummyAstNode` to `rustc_expand`)
 - rust-lang/rust#141507 (atomic_load intrinsic: use const generic parameter for ordering)
 - rust-lang/rust#141538 (implement `va_arg` for x86_64 systemv)
 - rust-lang/rust#141669 (float: Replace some approximate assertions with exact)
 - rust-lang/rust#141747 (rustdoc: display doc(cfg(false)) properly)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-30 05:38:39 +00:00
Matthias Krüger
71529f59b1 Rollup merge of #141747 - lolbinarycat:rustdoc-cfg-138112, r=GuillaumeGomez
rustdoc: display doc(cfg(false)) properly

before we had an extra 'on' that was
ungramatical.

fixes https://github.com/rust-lang/rust/issues/138112

this is what it looks like now:
![screenshot: Available nowhere](https://github.com/user-attachments/assets/e27b4990-09a7-4f13-8bcf-26d44c8c1bea)
2025-05-30 07:01:31 +02:00
Matthias Krüger
3ebdd59770 Rollup merge of #141669 - tgross35:float-test-cleanup, r=RalfJung
float: Replace some approximate assertions with exact

As was mentioned at [1], we currently use `assert_approx_eq` for testing
some math functions that guarantee exact results. Replace approximate
assertions with exact ones for the following:

* `ceil`
* `floor`
* `fract`
* `from_bits`
* `mul_add`
* `round_ties_even`
* `round`
* `trunc`

This likely wasn't done in the past to avoid writing out exact decimals
that don't match the intuitive answer (e.g. 1.3 - 1.0 = 0.300...004),
but ensuring our results are accurate seems more important here.

[1]: https://github.com/rust-lang/rust/pull/138087#issuecomment-2842069281

The first commit is a small bit of macro cleanup.

try-job: aarch64-gnu
try-job: x86_64-gnu-aux
2025-05-30 07:01:31 +02:00
Matthias Krüger
5023691213 Rollup merge of #141538 - folkertdev:systemv-x86_64-va_arg, r=workingjubilee
implement `va_arg` for x86_64 systemv

tracking issue: https://github.com/rust-lang/rust/issues/44930

Turns out LLVM's `va_arg` is also unreliable for this target.

https://github.com/llvm/llvm-project/issues/141361

So, like clang, we implement our own. I used

- the spec at https://gitlab.com/x86-psABIs/x86-64-ABI
- the clang implementation at 9a440f8477/clang/lib/CodeGen/Targets/X86.cpp (L3041)

We can take a bunch of shortcuts because the return type of `va_list` must implement `VaArgSafe`. I also extended some of the tests, because up to 11 floats can be stored in the `reg_safe_area` for this calling convention.

r? `@workingjubilee`
`@rustbot` label +F-c_variadic

try-job: x86_64-apple-1
2025-05-30 07:01:30 +02:00
Matthias Krüger
ad2d91ce11 Rollup merge of #141507 - RalfJung:atomic-intrinsics, r=bjorn3
atomic_load intrinsic: use const generic parameter for ordering

We have a gazillion intrinsics for the atomics because we encode the ordering into the intrinsic name rather than making it a parameter. This is particularly bad for those operations that take two orderings. Let's fix that!

This PR only converts `load`, to see if there's any feedback that would fundamentally change the strategy we pursue for the const generic intrinsics.

The first two commits are preparation and could be a separate PR if you prefer.

`@BoxyUwU` -- I hope this is a use of const generics that is unlikely to explode? All we need is a const generic of enum type. We could funnel it through an integer if we had to but an enum is obviously nicer...

`@bjorn3` it seems like the cranelift backend entirely ignores the ordering?
2025-05-30 07:01:30 +02:00
Matthias Krüger
a87bc9d9fe Rollup merge of #141430 - fee1-dead-contrib:push-nmzoprvtsvww, r=petrochenkov
remove `visit_clobber` and move `DummyAstNode` to `rustc_expand`

`visit_clobber` is not really useful except for one niche purpose
involving generic code. We should just use the replace logic where we
can.
2025-05-30 07:01:29 +02:00
Matthias Krüger
896be667b8 Rollup merge of #141407 - mu001999-contrib:dead-code/refactor, r=petrochenkov
Refactor the two-phase check for impls and impl items

Refactor the two-phase dead code check to make the logic clearer and simpler:
1. adding assoc fn and impl into `unsolved_items` directly during the initial construction of the worklist
2. converge the logic of checking whether assoc fn and impl are used to `item_should_be_checked`, and the item is considered used only when its corresponding trait and Self adt are used

This PR only refactors as much as possible to avoid affecting the original functions. However, due to the adjustment of the order of checks, the test results are slightly different, but overall, there is no regression problem

Fixes rust-lang/rust#127911
Fixes rust-lang/rust#128839

Extracted from https://github.com/rust-lang/rust/pull/128637.
r? petrochenkov

try-job: dist-aarch64-linux
2025-05-30 07:01:29 +02:00
Matthias Krüger
5fc3f26748 Rollup merge of #141004 - matthewjasper:unicode-before-expansion, r=davidtwco
Report text_direction_codepoint_in_literal when parsing

The lint is now reported in code that gets removed/modified/duplicated by macro expansion, and spans are more accurate so we don't get ICEs from trying to split a span in the middle of a character.

This removes support for lint level attributes for `text_direction_codepoint_in_literal` except at the crate level, I don't think that there's an easy way around this when the lint can be reported on code that's removed by `cfg` or that is only in the input of a macro.

Fixes #140281
2025-05-30 07:01:28 +02:00
Matthias Krüger
7aba37da44 Rollup merge of #133823 - estebank:issue-56328, r=petrochenkov
Use `cfg_attr_trace` in AST with a placeholder attribute for accurate suggestion

In rust-lang/rust#138515, we insert a placeholder attribute so that checks for attributes can still know about the placement of `cfg` attributes. When we suggest removing items with `cfg_attr`s (fix rust-lang/rust#56328) and make them verbose. We tweak the wording of the existing "unused `extern crate`" lint.

```
warning: unused `extern crate`
  --> $DIR/removing-extern-crate.rs:9:1
   |
LL | extern crate removing_extern_crate as foo;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unused
   |
note: the lint level is defined here
  --> $DIR/removing-extern-crate.rs:6:9
   |
LL | #![warn(rust_2018_idioms)]
   |         ^^^^^^^^^^^^^^^^
   = note: `#[warn(unused_extern_crates)]` implied by `#[warn(rust_2018_idioms)]`
help: remove the unused `extern crate`
   |
LL - #[cfg_attr(test, macro_use)]
LL - extern crate removing_extern_crate as foo;
   |
```

r? `@petrochenkov`

try-job: x86_64-gnu-aux
2025-05-30 07:01:27 +02:00
Nicholas Nethercote
68f32169e5 Address review comments. 2025-05-30 13:26:36 +10:00
bors
1c0849d8ba Auto merge of #141651 - compiler-errors:less-assert, r=lcnr
Make some assertions in solver into debug assertions

These may or may not be expensive :>

r? lcnr
2025-05-30 02:21:17 +00:00
bors
1ac1950c33 Auto merge of #141739 - GuillaumeGomez:rollup-ivboqwd, r=GuillaumeGomez
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#137574 (Make `std/src/num` mirror `core/src/num`)
 - rust-lang/rust#141384 (Enable review queue tracking)
 - rust-lang/rust#141448 (A variety of improvements to the codegen backends)
 - rust-lang/rust#141636 (avoid some usages of `&mut P<T>` in AST visitors)
 - rust-lang/rust#141676 (float: Disable `total_cmp` sNaN tests for `f16`)
 - rust-lang/rust#141705 (Add eslint as part of `tidy` run)
 - rust-lang/rust#141715 (Add `loongarch64` with `d` feature to `f32::midpoint` fast path)
 - rust-lang/rust#141723 (Provide secrets to try builds with new bors)
 - rust-lang/rust#141728 (Fix false documentation of FnCtxt::diverges)
 - rust-lang/rust#141729 (resolve target-libdir directly from rustc)
 - rust-lang/rust#141732 (creader: Remove extraenous String::clone)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-29 23:02:31 +00:00
Noratrieb
f1778074fb Remove RUSTC_RETRY_LINKER_ON_SEGFAULT hack
It looks like this was added 6 years ago because of issues with the
MacOS linker. MacOS got a new linker in the meantime, so that should
probably be resolved now. Hopefully.
2025-05-29 23:30:29 +02:00
Trevor Gross
70cce1c762 float: Use assert_biteq! where possible
`assert_eq!` ignores the sign of zero, but for any tests involving zeros
we do care about this sign. Replace `assert_eq!` with `assert_biteq!`
everywhere possible for float tests to ensure we don't miss this.
`assert_biteq!` is also updated to check equality on non-NaNs, to catch
the unlikely case that bitwise equality works but our `==`
implementation is broken.

There is one notable output change: we were asserting that
`(-0.0).fract()` and `(-1.0).fract()` both return -0.0, but both
actually return +0.0.
2025-05-29 21:13:26 +00:00
Trevor Gross
5446ba3c2d float: Enable some f16 and f128 rounding tests on miri
The rounding tests are now supported, so there is no longer any reason
to skip these.
2025-05-29 21:13:26 +00:00
Trevor Gross
9907c5a806 float: Replace some approximate assertions with exact
As was mentioned at [1], we currently use `assert_approx_eq` for testing
some math functions that guarantee exact results. Replace approximate
assertions with exact ones for the following:

* `ceil`
* `floor`
* `fract`
* `from_bits`
* `mul_add`
* `round_ties_even`
* `round`
* `trunc`

This likely wasn't done in the past to avoid writing out exact decimals
that don't match the intuitive answer (e.g. 1.3 - 1.0 = 0.300...004),
but ensuring our results are accurate seems more important here.

[1]: https://github.com/rust-lang/rust/pull/138087#issuecomment-2842069281
2025-05-29 21:13:26 +00:00
Trevor Gross
6a79b272ba float: Use a shared assert_biteq! macro for tests
Clean up the separate `assert_f{16,32,64,128}` macros with a single
`assert_biteq!` macro that works for all float widths.
2025-05-29 21:13:26 +00:00
binarycat
c6eb1d95d3 rustdoc: display doc(cfg(false)) properly
before we had an extra 'on' that was
ungramatical.

fixes https://github.com/rust-lang/rust/issues/138112
2025-05-29 15:40:50 -05:00
Folkert de Vries
94cc72682e implement va_arg for x86_64 systemv and macOS
Turns out LLVM's `va_arg` is also unreliable for this target, so we need
our own implementation.
2025-05-29 22:06:02 +02:00
Urgau
9d0845a782 Rework #[doc(cfg(..))] checks as distinct pass in rustdoc 2025-05-29 21:50:14 +02:00
bors
1bbd62e547 Auto merge of #141490 - compiler-errors:bump-pgo, r=Kobzol
Bump rustc-perf and update PGO crates

Updates rustc-perf to rust-lang/rustc-perf@8158f78f73, and updates the crates.

r? `@Kobzol`
2025-05-29 19:42:49 +00:00
Berrysoft
9281958c6a Add tls_model for cygwin and enable has_thread_local 2025-05-30 00:23:18 +08:00
Guillaume Gomez
18646a8a7f Rollup merge of #141732 - osiewicz:creader-remove-extraenous-string-clone, r=Kobzol
creader: Remove extraenous String::clone

A leftover from rust-lang/rust#132910
2025-05-29 17:03:03 +02:00
Guillaume Gomez
aaa915944d Rollup merge of #141729 - onur-ozkan:fix-141722, r=jieyouxu
resolve target-libdir directly from rustc

Leaving stage0 target-libdir resolution to rustc. This should also fix the issue with hard-coding `$sysroot/lib` which fails on systems that use `$sysroot/lib64` or `$sysroot/lib32`.

Haven't tested, but should fix rust-lang/rust#141722
2025-05-29 17:03:03 +02:00
Guillaume Gomez
710fa11737 Rollup merge of #141728 - JonathanBrouwer:fix-docs, r=compiler-errors
Fix false documentation of FnCtxt::diverges

While I was working on another issue I came across this false documentation, and was mislead by it.
Therefore I decided to fix this :)

The newly documented usecase is located here: 38081f22c2/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs (L1968)
2025-05-29 17:03:02 +02:00
Guillaume Gomez
5f6f23ad6a Rollup merge of #141723 - Kobzol:new-bors-try, r=marcoieni
Provide secrets to try builds with new bors

We need to use the `bors` environment on `automation/bors/try` to enable the new bors to do try builds.

r? `@marcoieni`
2025-05-29 17:03:02 +02:00