Commit graph

24605 commits

Author SHA1 Message Date
Jakub Beránek
ffa97a647e
Fix warning 2025-07-22 20:22:16 +02:00
Jakub Beránek
e07a1bbb79
Move tests around to appease tidy 2025-07-22 20:22:16 +02:00
Jakub Beránek
8dc2abb5c3
Update stdarch README 2025-07-22 20:17:49 +02:00
Jakub Beránek
ee6f2c5276
Reformat std_detect 2025-07-22 20:17:46 +02:00
Jakub Beránek
b23ab7888a
Make std_detect a direct dependency of std 2025-07-22 20:17:23 +02:00
Jakub Beránek
5b2de8ab27
Move std_detect from library/stdarch to library 2025-07-22 20:17:06 +02:00
bors
2e53675668 Auto merge of #144222 - Kobzol:stdarch-push, r=folkertdev
stdarch subtree update

Subtree update of `stdarch` to 5531955678.

Created using https://github.com/rust-lang/josh-sync.

I saw that there were non-trivial changes made to `std_detect` in `stdarch` recently. So I want to get them merged here before we move forward with https://github.com/rust-lang/rust/pull/143412.

r? `@folkertdev`
2025-07-22 15:25:31 +00:00
bors
c0b282f0cc Auto merge of #144205 - hkBst:flt2dec, r=workingjubilee
flt2dec: replace for loop by iter_mut

Perf is explored in https://github.com/rust-lang/rust/issues/144118, which initially showed small losses, but then also showed significant gains. Both are real, but given the smallness of the losses, this seems a good change.
2025-07-22 08:28:29 +00:00
许杰友 Jieyou Xu (Joe)
551cef9fc9
Rollup merge of #144212 - bjorn3:remove_unique_lang_item, r=oli-obk
Remove the ptr_unique lang item

Miri no longer uses it since https://github.com/rust-lang/miri/pull/4307.
2025-07-22 00:54:30 +08:00
许杰友 Jieyou Xu (Joe)
1f8b531b54
Rollup merge of #143768 - Randl:const-try, r=oli-obk
Constify Try, From, TryFrom and relevant traits
2025-07-22 00:54:26 +08:00
bors
3f9f20f71d Auto merge of #144154 - tgross35:update-builtins, r=tgross35
compiler-builtins subtree update

Subtree update of `compiler-builtins` to 2cdde03950.

Created using https://github.com/rust-lang/josh-sync.

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

r? `@ghost`
2025-07-21 12:47:33 +00:00
Evgenii Zheltonozhskii
3c76e3d002 Constify Try, From, TryFrom 2025-07-21 12:49:45 +03:00
Ralf Jung
d2be1c8d00 Option::as_slice: fix comment 2025-07-20 22:39:10 +02:00
Marijn Schouten
f147716e7d flt2dec: use fill instead of loop 2025-07-20 18:45:11 +00:00
Guillaume Gomez
5ba1251b55
Rollup merge of #143423 - hkBst:clippy-fix-1, r=workingjubilee
address clippy formatting nits

- int_log10.rs: change top level doc comments to outer
- collect.rs: remove empty line after doc comment
- clippy fix: markdown indentation for indented items after line break: a markdown list item continued over multiples lines, but those following lines which are part of the same item are not indented
- clippy fix: bound in one place: when there is a bound in angle brackets and another bound on the same variable in a where clause
2025-07-20 15:34:04 +02:00
Guillaume Gomez
0162cc50e3
Rollup merge of #143282 - nxsaken:strict_sub_signed, r=jhpratt
Add `uX::strict_sub_signed`

rust-lang/rust#116090 missed `strict_sub_signed`, adding it here.
Part of rust-lang/rust#118260.

r? ``@m-ou-se``
2025-07-20 15:34:04 +02:00
bjorn3
fdf8bdb7a2 Remove the ptr_unique lang item
Miri no longer uses it.
2025-07-20 09:50:58 +00:00
Matthias Krüger
72588c8eb0
Rollup merge of #144169 - RalfJung:type-id-fix, r=oli-obk
interpret: fix TypeId pointers being considered data pointers

Fixes https://github.com/rust-lang/miri/issues/4477
r? ````@oli-obk````
2025-07-20 08:56:10 +02:00
Matthias Krüger
5e5ac49bbb
Rollup merge of #144111 - clarfonthey:maybe-uninit-deprecated, r=jhpratt
Remove deprecated `MaybeUninit` slice methods

These were left in to make migration a bit easier, although they should be removed now since they were never stable.
2025-07-20 08:56:08 +02:00
Matthias Krüger
a8c2e540ec
Rollup merge of #143604 - nxsaken:const_float_round_methods, r=RalfJung
Stabilize `const_float_round_methods`

Closes rust-lang/rust#141555, waiting for FCP.
2025-07-20 08:56:06 +02:00
Matthias Krüger
6d7d366fd3
Rollup merge of #141260 - LuigiPiucco:volatile-null, r=RalfJung
Allow volatile access to non-Rust memory, including address 0

This PR relaxes the `ub_check` in the `read_volatile`/`write_volatile` pointer operations to allow passing null. This is needed to support processors which hard-code peripheral registers on address 0, like the AVR chip ATtiny1626. LLVM understands this as valid and handles it correctly, as tested in my [PR to add a note about it](https://github.com/llvm/llvm-project/pull/139803/commits/6387c82255c56d3035d249eb54110695e76b8030#diff-81bbb96298c32fa901beb82ab3b97add27a410c01d577c1f8c01000ed2055826) (rustc generates the same LLVM IR as expected there when this PR is applied, and consequently the same AVR assembly).

Follow-up and implementation of the discussions in:
- https://internals.rust-lang.org/t/pre-rfc-conditionally-supported-volatile-access-to-address-0/12881/7
- https://github.com/Rahix/avr-device/pull/185;
- [#t-lang > Adding the possibility of volatile access to address 0](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/Adding.20the.20possibility.20of.20volatile.20access.20to.20address.200/with/513303502)
- https://discourse.llvm.org/t/rfc-volatile-access-to-non-dereferenceable-memory-may-be-well-defined/86303

r? ````@RalfJung````

Also fixes https://github.com/rust-lang/unsafe-code-guidelines/issues/29 (about as good as it'll get, null will likely never be a "normal" address in Rust)
2025-07-20 08:56:05 +02:00
ltdk
56288857d8 Remove deprecated MaybeUninit slice methods 2025-07-19 22:33:15 -04:00
Nurzhan Sakén
caf4f111bc Add #[rustc_intrinsic_const_stable_indirect] to float rounding
intrinsics
2025-07-20 00:09:32 +04:00
Nurzhan Sakén
ca01e7de6f Stabilize const_float_round_methods 2025-07-20 00:08:58 +04:00
Rémy Rakic
4ef92bec5a fix load-bearing typo 2025-07-19 15:17:04 +00:00
bors
12865ffd0d Auto merge of #144166 - matthiaskrgr:rollup-wccepuo, r=matthiaskrgr
Rollup of 10 pull requests

Successful merges:

 - rust-lang/rust#141076 (fix Zip unsoundness (again))
 - rust-lang/rust#142444 (adding run-make test to autodiff)
 - rust-lang/rust#143704 (Be a bit more careful around exotic cycles in in the inliner)
 - rust-lang/rust#144073 (Don't test panic=unwind in panic_main.rs on Fuchsia)
 - rust-lang/rust#144083 (miri sleep tests: increase slack)
 - rust-lang/rust#144092 (bootstrap: Detect musl hosts)
 - rust-lang/rust#144098 (Do not lint private-in-public for RPITIT)
 - rust-lang/rust#144103 (Rename `emit_unless` to `emit_unless_delay`)
 - rust-lang/rust#144108 (Ignore tests/run-make/link-eh-frame-terminator/rmake.rs when cross-compiling)
 - rust-lang/rust#144115 (fix outdated comment)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-07-19 11:10:04 +00:00
Ralf Jung
7672e4ed85 interpret: fix TypeId pointers being considered data pointers 2025-07-19 10:29:13 +02:00
Matthias Krüger
fff53f1dbb
Rollup merge of #141076 - the8472:fix-zip-panic-safety2, r=workingjubilee
fix Zip unsoundness (again)

Some history: The Zip TrustedRandomAccess specialization has tried to emulate the side-effects of the naive implementation for a long time, including backwards iteration. #82292 tried to fix unsoundness (#82291) in that side-effect-preservation code, but this introduced some panic-safety unsoundness (#86443), but the fix #86452 didn't fix it for nested Zip iterators (#137255).

Rather than piling yet another fix ontop of this heap of fixes this PR reduces the number of cases in which side-effects will be preserved; the necessary API guarantee change was approved in #83791 but we haven't made use of that so far.

fixes #137255
2025-07-19 08:55:33 +02:00
Amanieu d'Antras
9b7d31c851
Merge pull request #1862 from folkertdev/combine-c-files
`intrinsic-test`: combine C files for faster compilation
2025-07-18 21:23:35 +00:00
Amanieu d'Antras
8fe55684d8
Merge pull request #1860 from folkertdev/stdarch-test-cleanup
`stdarch-test`: various cleanups
2025-07-18 20:27:56 +00:00
Marijn Schouten
c79f62d1ea clippy fix: bound in one place 2025-07-18 20:13:24 +00:00
The rustc-josh-sync Cronjob Bot
3f04631ce0 Merge ref '82310651b9' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 82310651b9
Filtered ref: e13c0be8f13737c64082b89ce834546079767ac4

This merge was created using https://github.com/rust-lang/josh-sync.
2025-07-18 19:06:49 +00:00
The rustc-josh-sync Cronjob Bot
208687e9d3 Prepare for merging from rust-lang/rust
This updates the rust-version file to 82310651b9.
2025-07-18 19:04:50 +00:00
Julien THILLARD
6b87978169
Change the memcmp and bcmp return type to c_int
Fix the return type of `memcmp` and `bcmp` builtin functions on targets
with a `c_int` other than `i32`.

Linked issue: https://github.com/rust-lang/rust/issues/144076
2025-07-18 18:19:13 +00:00
Trevor Gross
7dacaef5d3 mem: Use core::ffi::c_int
This alias was added in 9897bfb8a ("Fix memset arguments for MSP430
target"), which predates `core::ffi`. Now that it exists we can just use
`core::ffi::c_int`.
2025-07-18 17:35:57 +00:00
Matthias Krüger
401aaf4ac1
Rollup merge of #143382 - fee1-dead-contrib:push-trrymlzqmmoz, r=jhpratt
stabilize `const_slice_reverse`

cc rust-lang/rust#135120, needs FCP.
2025-07-18 19:14:44 +02:00
Luigi Sartor Piucco
8a8717e971
fix: don't panic on volatile access to null
According to
https://discourse.llvm.org/t/rfc-volatile-access-to-non-dereferenceable-memory-may-be-well-defined/86303/4,
LLVM allows volatile operations on null and handles it correctly. This
should be allowed in Rust as well, because I/O memory may be hard-coded
to address 0 in some cases, like the AVR chip ATtiny1626.

A test case that ensured a failure when passing null to volatile was
removed, since it's now valid.

Due to the addition of `maybe_is_aligned` to `ub_checks`,
`maybe_is_aligned_and_not_null` was refactored to use it.

docs: revise restrictions on volatile operations

A distinction between usage on Rust memory vs. non-Rust memory was
introduced. Documentation was reworded to explain what that means, and
make explicit that:

- No trapping can occur from volatile operations;
- On Rust memory, all safety rules must be respected;
- On Rust memory, the primary difference from regular access is that
  volatile always involves a memory dereference;
- On Rust memory, the only data affected by an operation is the one
  pointed to in the argument(s) of the function;
- On Rust memory, provenance follows the same rules as non-volatile
  access;
- On non-Rust memory, any address known to not contain Rust memory is
  valid (including 0 and usize::MAX);
- On non-Rust memory, no Rust memory may be affected (it is implicit
  that any other non-Rust memory may be affected, though, even if not
  referenced by the pointer). This should be relevant when, for example,
  reading register A causes a flag to change in register B, or writing
  to A causes B to change in some way. Everything affected mustn't be
  inside an allocation.
- On non-Rust memory, provenance is irrelevant and a pointer with none
  can be used in a valid way.

fix: don't lint null as UB for volatile

Also remove a now-unneeded `allow` line.

fix: additional wording nits
2025-07-18 13:41:34 -03:00
Folkert de Vries
d198c4fbf5
Merge pull request #1874 from heiher/loong-safe
loongarch: Mark partial intrinsics as safe
2025-07-18 13:15:24 +00:00
Matthias Krüger
82fbbddf63
Rollup merge of #143925 - oli-obk:slice-const-partialeq, r=fee1-dead
Make slice comparisons const

This needed a fix for `derive_const`, too, as it wasn't usable in libcore anymore as trait impls need const stability attributes. I think we can't use the same system as normal trait impls while `const_trait_impl` is still unstable.

r? ```@fee1-dead```

cc rust-lang/rust#143800
2025-07-18 14:49:19 +02:00
Matthias Krüger
744ca5959a
Rollup merge of #143909 - nik-rev:patch-1, r=jhpratt
docs(alloc::fmt): Make type optional, instead of matching empty string

Think this is clearer.

Noticed as I was implementing [`tree-sitter-rust-format-args`](https://github.com/nik-rev/tree-sitter-rust-format-args), and attempting to match the empty string results in an error.
2025-07-18 14:49:19 +02:00
WANG Rui
da892b54be loongarch: Mark SIMD intrinsics without memory access as safe 2025-07-18 20:42:19 +08:00
Folkert de Vries
846c591bf6
intrinsic-test: combine C files for more efficient compilation 2025-07-18 13:24:11 +02:00
Folkert de Vries
6ed7ee36e6
exclude generated rust programs from the workspace 2025-07-18 13:17:38 +02:00
Folkert de Vries
a657eb29e2
Merge pull request #1878 from madhav-madhusoodanan/intrinsic-test-box-removing-and-more
`intrinsic-test`: Implemented DerefMut for ArmIntrinsicTest
2025-07-18 10:20:35 +00:00
Folkert de Vries
2b6d8f36c8
Merge pull request #1861 from folkertdev/streamline-c-compilation
`intrinsic-test`: streamline c compilation
2025-07-18 10:12:22 +00:00
Folkert de Vries
76de7566e4
Merge pull request #1877 from folkertdev/check-stdarch-gen
Check that the checked-in version of `stdarch-gen-{arm, loongarch}` is up-to-date
2025-07-18 09:48:49 +00:00
Folkert de Vries
75887cf995
improve cpp compiler execution 2025-07-18 11:38:18 +02:00
Folkert de Vries
668fdbe41e
pass the whole config to C compiler construction 2025-07-18 11:25:11 +02:00
Folkert de Vries
194aa89fdd
add CI action to check that generated files are correctly checked in 2025-07-18 11:13:59 +02:00
WANG Rui
b57ff35641 loongarch: Mark partial basic intrinsics as safe 2025-07-18 11:52:17 +08:00