305101 Commits

Author SHA1 Message Date
Ralf Jung
edbc0a08fb weak memory tests: add more info on where they come from 2025-09-10 16:09:28 +02:00
Ralf Jung
943aa93d46
Merge pull request #4484 from RalfJung/math-shims
move math shims to their own files, and some refactoring in fixed_float_value
2025-09-08 11:53:31 +00:00
Ralf Jung
84e1950065 move math foreign_items into their own file 2025-09-08 13:22:21 +02:00
Ralf Jung
e00051299a extract core operation name instead of listing all function name variants 2025-09-08 13:22:21 +02:00
Ralf Jung
94ab2b9f15 move math intrinsics to their own file 2025-09-08 13:22:21 +02:00
Ralf Jung
3430751d7e
Merge pull request #4573 from RalfJung/rustup
Rustup
2025-09-08 10:27:05 +00:00
Ralf Jung
24ce839fb9 clippy 2025-09-08 12:00:36 +02:00
Ralf Jung
c4d12688e3 Merge ref 'a09fbe2c8372' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: a09fbe2c8372643a27a8082236120f95ed4e6bba
Filtered ref: e8da14f32630072c76aeb944454175f4d8266918

This merge was created using https://github.com/rust-lang/josh-sync.
2025-09-08 12:00:24 +02:00
Fang He
4c849c73a4 fix typo in comment 2025-09-12 08:18:26 +08:00
Fang He
de359c569b fix typos in comment 2025-09-08 18:48:19 +08:00
Fang He
be284b697f add some comments to clarify the fix 2025-09-08 18:39:39 +08:00
Ralf Jung
deca4895ca Prepare for merging from rust-lang/rust
This updates the rust-version file to a09fbe2c8372643a27a8082236120f95ed4e6bba.
2025-09-08 11:57:19 +02:00
Fang He
c776fbf1eb check before test for hardware capabilites in bits 32~63 of usize 2025-09-08 16:35:03 +08:00
Ralf Jung
211461a4d5
Merge pull request #4566 from Patrick-6/miri-genmc-rmw
Add more features for GenMC mode (RMW, fences, new printing options)
2025-09-08 06:24:22 +00:00
Ralf Jung
344b4ac427 print proper error when using unsupported synchronization primitive with GenMC 2025-09-08 07:55:10 +02:00
bors
a09fbe2c83 Auto merge of #145910 - saethlin:ignore-intrinsic-calls, r=cjgillot
Ignore intrinsic calls in cross-crate-inlining cost model

I noticed in a side project that a function which just compares to `[u64; 2]` for equality is not cross-crate-inlinable. That was surprising to me because I didn't think that code contained a function call, but of course our array comparisons are lowered to an intrinsic. Intrinsic calls don't make a function no longer a leaf, so it makes sense to add this as an exception to the "only leaves" cross-crate-inline heuristic.

This is the useful compare link: https://perf.rust-lang.org/compare.html?start=7cb1a81145a739c4fd858abe3c624ce8e6e5f9cd&end=c3f0a64dbf9fba4722dacf8e39d2fe00069c995e&stat=instructions%3Au because it disables CGU merging in both commits, so effects that cause changes in the sysroot to perturb partitioning downstream are excluded. Perturbations to what is and isn't cross-crate-inlinable in the sysroot has chaotic effects on what items are in which CGUs after merging. It looks like before this PR by sheer luck some of the CGUs dirtied by the patch in eza incr-unchanged happened to be merged together, and with this PR they are not.

The perf runs on this PR point to a nice runtime performance improvement.
2025-09-08 03:03:21 +00:00
bors
2f3f27bf79 Auto merge of #145541 - cjgillot:dest-prop-live-range, r=Amanieu
Reimplement DestinationPropagation according to live ranges.

This PR reimplements DestinationPropagation as a problem of merging live-ranges of locals. We merge locals that have disjoint live-ranges. This allows merging several locals in the same round by updating live range information.

Live ranges are mainly computed using the `MaybeLiveLocals` analysis. The subtlety is that we split each statement and terminator in 2 positions. The first position is the regular statement. The second position is a shadow, which is always more live. It encodes partial writes and dead writes as a local being live for half a statement. This half statement ensures that writes conflict with another local's writes and regular liveness.

r? `@Amanieu`
2025-09-07 23:36:21 +00:00
Patrick-6
61af5da8df Implement more features for GenMC mode
- Support for atomic fences.
- Support for atomic read-modify-write (RMW).
- Add tests using RMW and fences.
- Add options:
  - to disable weak memory effects in GenMC mode.
  - to print GenMC execution graphs.
  - to print GenMC output message.
- Fix GenMC full rebuild issue and run configure step when commit changes.
- Do cleanup.

Co-authored-by: Ralf Jung <post@ralfj.de>
2025-09-07 23:51:17 +02:00
bors
12eb345e55 Auto merge of #146304 - matthiaskrgr:rollup-69hs07h, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - rust-lang/rust#146170 (fix: offline rustdoc html missing favicon)
 - rust-lang/rust#146209 (Misc LTO cleanups)
 - rust-lang/rust#146269 (feat(std): emulate flock for solaris via fcntl)
 - rust-lang/rust#146297 (Introduce PlaceContext::may_observe_address.)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-07 20:27:43 +00:00
Matthias Krüger
36557d1046
Rollup merge of #146297 - cjgillot:may-observe-address, r=saethlin
Introduce PlaceContext::may_observe_address.

A small utility method to avoid open-coding the logic in several MIR opts.
2025-09-07 20:02:29 +02:00
Matthias Krüger
e4e4829579
Rollup merge of #146269 - weihanglo:solaris-flock, r=Mark-Simulacrum
feat(std): emulate flock for solaris via fcntl

Upstream Solaris flock emulation to libstd from cargo.

This is borrowed from
3b379fcc54/src/cargo/util/flock.rs (L502-L536) which was implemented by an Oracle employee.
The code has been in cargo since 2022-12.

Python's `fcntl.flock` emulates like this as well: c919d02ede/Modules/fcntlmodule.c (L337-L400)

We did the same thing in
0d0f4eac8b/compiler/rustc_data_structures/src/flock/unix.rs (L13-L39)

However, should we just always falls back to fcntl for all Unix, instead of "unsupported"?

try-job: `*-solaris`
2025-09-07 20:02:28 +02:00
Matthias Krüger
92bad93f06
Rollup merge of #146209 - bjorn3:lto_refactors5, r=dianqk
Misc LTO cleanups

Follow up to https://github.com/rust-lang/rust/pull/145955.

* Remove want_summary argument from `prepare_thin`.
   Since https://github.com/rust-lang/rust/pull/133250 ThinLTO summary writing is instead done by `llvm_optimize`.
* Two minor cleanups
2025-09-07 20:02:27 +02:00
Matthias Krüger
cb64a77550
Rollup merge of #146170 - kumarUjjawal:master, r=Mark-Simulacrum
fix: offline rustdoc html missing favicon

As discussed in the rust-lang/rust#146149 the doc was missing the favicon icon when build locally and viewed on a browser. I changed the relative path and also now we explicitly copy both SVG and PNG.

<img width="1132" height="425" alt="Screenshot 2025-09-03 at 11 57 46 PM" src="https://github.com/user-attachments/assets/062cbb08-04ec-4d88-a43a-710fb6190f82" />
2025-09-07 20:02:27 +02:00
bors
23718020b1 Auto merge of #146148 - Flakebi:global-addrspace-test, r=Mark-Simulacrum
Add amdgpu test for addrspacecasting global vars and the gpu-kernel calling convention

Add two tests that can now be added, as the amdgpu is merged.

- Global variables are casted to the default address space since rust-lang/rust#135026
- gpu-kernel calling convention, translatos to amdgpu_kernel rust-lang/rust#135047

Tracking issue: rust-lang/rust#135024
2025-09-07 17:12:08 +00:00
Camille Gillot
5d0e66d451 Use rustc_data_structures::union_find. 2025-09-07 16:46:34 +00:00
Camille Gillot
28ff5cf502 Simplify candidate collection. 2025-09-07 16:45:34 +00:00
Camille Gillot
99f6bcf380 Unify a source with all possible destinations. 2025-09-07 16:45:00 +00:00
Camille Gillot
4e9dd1b67b Do not use prepend to avoid quadratic behaviour. 2025-09-07 16:36:30 +00:00
Camille Gillot
de7c633ee5 Simplify VisitPlacesWith. 2025-09-07 16:36:22 +00:00
Camille Gillot
b9262bce67 Use regular MaybeLiveLocals. 2025-09-07 16:35:30 +00:00
Camille GILLOT
9b8a719ae4 Reimplement DestinationPropagation according to live ranges. 2025-09-07 16:24:46 +00:00
Camille GILLOT
2ff92e83af Introduce fast insertion at extremities to IntervalSet. 2025-09-07 16:06:40 +00:00
bors
55b9b4d1e1 Auto merge of #146289 - cjgillot:gvn-aggregate, r=dianqk
GVN: Allow reusing aggregates if LHS is not a simple local.

This resolves a FIXME in the code. I don't see a reason not to allow this.
2025-09-07 14:02:09 +00:00
Camille GILLOT
4e7a068c9a Introduce PlaceContext::may_observe_address. 2025-09-07 13:51:53 +00:00
bors
f13ef0d75d Auto merge of #146216 - LorrensP-2158466:miri-float-nondet-foreign-items-take2, r=RalfJung
Miri: non-deterministic floating point operations in foreign_items

Take 2 of rust-lang/rust#143906. The last 2 commits are what changed compared to the original pr.

Verified the tests using (fish shell):
```fish
env MIRIFLAGS="-Zmiri-max-extra-rounding-error -Zmiri-many-seeds" ./x miri --no-fail-fast std core coretests  -- f32 f64
```

r? `@RalfJung`
2025-09-07 10:46:38 +00:00
bors
fbd8f95118 Auto merge of #146292 - matthiaskrgr:rollup-bkjs887, r=matthiaskrgr
Rollup of 2 pull requests

Successful merges:

 - rust-lang/rust#146254 (Use `Itertools::all_equal_value()` where applicable)
 - rust-lang/rust#146290 (Revert "Add LSX accelerated implementation for source file analysis")

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-07 07:28:43 +00:00
Matthias Krüger
1b492b0c54
Rollup merge of #146290 - heiher:r-src-analysis-lsx, r=lqd
Revert "Add LSX accelerated implementation for source file analysis"

This reverts commit 5b43244ac59119870c9e0f6b642340ab88355b23 to fix native build failures on LoongArch.

Link: https://github.com/rust-lang/rust/pull/145963#issuecomment-3263195096
Link: https://github.com/rust-lang/rust/pull/145963#issuecomment-3263420700
2025-09-07 08:18:59 +02:00
Matthias Krüger
cb8b5fa4e2
Rollup merge of #146254 - yotamofek:pr/itertools-all-equal-value, r=cjgillot
Use `Itertools::all_equal_value()` where applicable

Just a small cleanup.
We already have `itertools` as a dep in these crates, so might as well use another of its features.
Makes the code simpler IMHO :)
2025-09-07 08:18:59 +02:00
bors
ebdf2abea4 Auto merge of #146271 - niacdoial:improperctypes-refactor1, r=tgross35
lint ImproperCTypes: refactor linting architecture (part 1)

This is the first PR in an effort to split  rust-lang/rust#134697 into individually-mergeable parts.

This one focuses on properly packaging the lint and its tests, as well as properly separate the "linting" and "type-checking" code.

There is exactly one user-visible change: the safety of `Option<Box<FFISafePointee>>` is now the same in `extern` blocks and function definitions: it is safe.

r? `@tgross35` because you are already looking at the original
2025-09-07 04:17:27 +00:00
Weihang Lo
01edb24d3c
feat(std): emulate flock for solaris via fcntl
Upstream Solaris flock emulation to libstd from cargo.

This is borrowed from
3b379fcc54/src/cargo/util/flock.rs (L502-L536)
which was implemented by an Oracle employee.
The code has been in cargo since 2022-12.

Python's `fcntl.flock` emulates like this as well:
c919d02ede/Modules/fcntlmodule.c (L337-L400)

We did the same thing in
0d0f4eac8b/compiler/rustc_data_structures/src/flock/unix.rs (L13-L39)
2025-09-07 00:05:13 -04:00
WANG Rui
58e2cd4263 Revert "Add LSX accelerated implementation for source file analysis"
This reverts commit 5b43244ac59119870c9e0f6b642340ab88355b23 to fix
native build failures on LoongArch.
2025-09-07 11:27:20 +08:00
Camille GILLOT
52f74a5162 Allow simplifying aggregates if LHS is not a simple local. 2025-09-07 03:23:23 +00:00
bors
f4b2f68e04 Auto merge of #146285 - matthiaskrgr:rollup-oaokoo3, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - rust-lang/rust#146200 (Simplify rustdoc-gui tester by calling directly browser-ui-test)
 - rust-lang/rust#146236 (gpu offload: change suspicious map into filter)
 - rust-lang/rust#146240 (DynamicConfig: use canonical clone impl)
 - rust-lang/rust#146251 (rustc_middle: clippy fixes)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-07 01:04:57 +00:00
Matthias Krüger
019486082d
Rollup merge of #146251 - hkBst:clippy-fix-8, r=cjgillot
rustc_middle: clippy fixes

Fixes for:
```text
warning: bound is defined in more than one place
warning: empty line after doc comment
```
2025-09-06 23:49:54 +02:00
Matthias Krüger
bb27a2b93d
Rollup merge of #146240 - hkBst:query-1, r=cjgillot
DynamicConfig: use canonical clone impl

Fixes clippy warning:
```text
warning: non-canonical implementation of `clone` on a `Copy` type
  --> compiler/rustc_query_impl/src/lib.rs:60:29
   |
60 |       fn clone(&self) -> Self {
   |  _____________________________^
61 | |         DynamicConfig { dynamic: self.dynamic }
62 | |     }
   | |_____^ help: change this to: `{ *self }`
```
2025-09-06 23:49:54 +02:00
Matthias Krüger
1123d49090
Rollup merge of #146236 - hkBst:gpu-1, r=ZuseZ4
gpu offload: change suspicious map into filter

Fixes clippy warning:
```text
warning: this call to `map()` won't have an effect on the call to `count()`
   --> compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs:194:25
    |
194 |       let num_ptr_types = types
    |  _________________________^
195 | |         .iter()
196 | |         .map(|&x| matches!(cx.type_kind(x), rustc_codegen_ssa::common::TypeKind::Pointer))
197 | |         .count();
    | |________________^
    |
    = help: make sure you did not confuse `map` with `filter`, `for_each` or `inspect`
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_map
    = note: `-W clippy::suspicious-map` implied by `-W clippy::suspicious`
    = help: to override `-W clippy::suspicious` add `#[allow(clippy::suspicious_map)]`
```
2025-09-06 23:49:53 +02:00
Matthias Krüger
4b9b0265a0
Rollup merge of #146200 - GuillaumeGomez:simplify-rustdoc-gui-tests, r=lolbinarycat
Simplify rustdoc-gui tester by calling directly browser-ui-test

The output and handling of `browser-ui-test` is now mostly the same as we did manually, so no need to keep our wrapper anymore. Lot of code removed! \o/

r? `@lolbinarycat`
2025-09-06 23:49:53 +02:00
bors
76863e3404 Auto merge of #146282 - tgross35:rollup-0n5tjnm, r=tgross35
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#139524 (Add socket extensions for cygwin)
 - rust-lang/rust#145940 (single buffer for exponent fmt of integers)
 - rust-lang/rust#146206 (identity uses are ok, even if there are no defining uses)
 - rust-lang/rust#146272 (Update comment for `-Werror` on LLVM builds)
 - rust-lang/rust#146280 (Make `LetChainsPolicy` public for rustfmt usage)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-09-06 21:47:58 +00:00
niacdoial
20f050b444
ImproperCTypes: redo state tracking
No changes should be visible by rustc users
This is just some architecture changes to the type checking to
facilitate FFI-safety decisions that depend on how the type is used
(the change here is not complete, there are still bits of "legacy" state
passing for this, but since this is a retconned commit, I can tell you
those bits will disappear before the end of the commit chain)
(there is at least one bit where the decision making code is weird, but
that this is because we do not want to change the lint's behaviour this
early in the chain)
2025-09-06 22:00:28 +02:00
niacdoial
050c119784
ImproperCTypes: re-separate linting and checking
no visible changes to rust users, just making the inner architecture of
the ImproperCTypes lints more sensible, with a clean separation between
the struct (now singular) that interacts with the linting system
and the struct (now singular) that visits the types to check FFI-safety
2025-09-06 21:46:33 +02:00