Commit graph

158885 commits

Author SHA1 Message Date
Matthias Krüger
a8055f944f
Rollup merge of #136452 - RalfJung:miri-sync, r=RalfJung
Miri subtree update

r? `@ghost`

Unblocks https://github.com/rust-lang/rust/pull/122408 from the Miri side
2025-02-02 23:06:58 +01:00
Matthias Krüger
f1bdf3ba4a
Rollup merge of #136445 - bjorn3:diag_ctxt_cleanup, r=oli-obk
Couple of cleanups to DiagCtxt and EarlyDiagCtxt
2025-02-02 23:06:57 +01:00
Matthias Krüger
4d3a4ee9e8
Rollup merge of #136339 - veera-sivarajan:ignore-arm-unknown-headers, r=jieyouxu
CompileTest: Add Directives to Ignore `arm-unknown-*` Targets

In  #134626, I want to ignore `arm-unknown-*` targets because the LLVM IR for those looks very different compared to other targets: https://rust.godbolt.org/z/ssYMhdv4x.

I can use `ignore-arm` but, I think, it would exclude large number of Apple devices.

So this PR adds a few directives to ignore `arm-unknown-*` targets specifically.
2025-02-02 23:06:54 +01:00
Ralf Jung
3262fab0a8
Merge pull request #4142 from joboet/apple-futex
shim Apple's futex primitives
2025-02-02 19:55:06 +00:00
joboet
2d6c9b4c79
shim Apple's futex primitives
This is necessary to unblock rust-lang/rust#122408. The documentation for these is available [here](https://developer.apple.com/documentation/os/os_sync_wait_on_address?language=objc).

Because the futex wait operations (`os_sync_wait_on_address` et al.) return the number of remaining waiters after returning, this required some changes to the common futex infrastructure, which I've changed to take a callback instead of precalculating the return values.
2025-02-02 20:28:50 +01:00
Ralf Jung
60e1c0cb03
Merge pull request #4172 from RalfJung/miri_get_backtrace
miri_get_backtrace: stop supporting the v0 protocol
2025-02-02 19:14:20 +00:00
bors
4a43094662 Auto merge of #136448 - matthiaskrgr:rollup-pdim5di, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #134272 (Remove rustc_encodable_decodable feature)
 - #136283 (Update encode_utf16 to mention it is native endian)
 - #136394 (Clean up MonoItem::instantiation_mode)
 - #136402 (diagnostics: fix borrowck suggestions for if/while let conditionals)
 - #136415 (Highlight clarifying information in "expected/found" error)
 - #136422 (Convert two `rustc_middle::lint` functions to `Span` methods.)
 - #136434 (rustc_allowed_through_unstable_modules: require deprecation message)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-02 19:13:36 +00:00
Matthias Krüger
961bf7ffa6
Rollup merge of #136434 - RalfJung:rustc_allowed_through_unstable_modules-deprecation-required, r=compiler-errors
rustc_allowed_through_unstable_modules: require deprecation message

This changes the `#[rustc_allowed_through_unstable_modules]` attribute so that a deprecation message (ideally directing people towards the stable path) is required.
2025-02-02 18:05:25 +01:00
Matthias Krüger
5bc5827636
Rollup merge of #136422 - nnethercote:convert-lint-functions, r=Noratrieb
Convert two `rustc_middle::lint` functions to `Span` methods.

`rustc_middle` is a huge crate and it's always good to move stuff out of it. There are lots of similar methods already on `Span`, so these two functions, `in_external_macro` and `is_from_async_await`, fit right in. The diff is big because `in_external_macro` is used a lot by clippy lints.

r? ``@Noratrieb``
2025-02-02 18:05:24 +01:00
Ralf Jung
bc5e839f07 files: make write take callback to store result, rather than writing to 'dest' directly 2025-02-02 17:47:22 +01:00
Ralf Jung
35842d55be files: make read take callback to store result, rather than writing to 'dest' directly 2025-02-02 17:30:15 +01:00
bors
6c0de7f8fc Auto merge of #136376 - weihanglo:update-cargo, r=weihanglo
Update cargo

12 commits in cecde95c119a456c30e57d3e4b31fff5a7d83df4..0e3d73849ab8cbbab3ec5c65cbd555586cb21339
2025-01-24 17:15:24 +0000 to 2025-02-01 20:14:40 +0000
- Revert "Conditionally mark the `test` cfg as a well known cfg (rust-lang/cargo#15007)" (rust-lang/cargo#15132)
- Don't suggest `cargo login` when using incompatible credental providers (rust-lang/cargo#15124)
- chore: Update clap_complete (rust-lang/cargo#15121)
- Move the changelog to the cargo book (rust-lang/cargo#15119)
- Conditionally mark the `test` cfg as a well known cfg (rust-lang/cargo#15007)
- fix broken links in the Cargo book (rust-lang/cargo#15109)
- Fix a typo and touch up documentation (rust-lang/cargo#15108)
- Fix shared_std_dependency_rebuild running on Windows (rust-lang/cargo#15111)
- Fix warnings on Windows (rust-lang/cargo#15112)
- fix(login): Deprecate CLI token (rust-lang/cargo#15057)
- Update tests to fix nightly errors (rust-lang/cargo#15110)
- Fix comment on Ord for SourceId (rust-lang/cargo#15103)
2025-02-02 16:25:13 +00:00
bjorn3
6a566ee092 Replace ParseSess::set_dcx with DiagCtxt::set_emitter
Replacing the error emitter doesn't accidentally clear the error count.
2025-02-02 16:09:39 +00:00
bjorn3
6556147d15 Use fallback fluent bundle from inner emitter in SilentEmitter 2025-02-02 16:06:43 +00:00
bjorn3
aa2b870bb5 Slightly simplify DiagCtxt::make_silent 2025-02-02 16:06:43 +00:00
bjorn3
d237378cd1 Some cleanups around EarlyDiagCtxt
All callers of EarlyDiagCtxt::early_error now emit a fatal error.
2025-02-02 16:06:43 +00:00
Ralf Jung
2a519a459c fix use of deprecated rand API 2025-02-02 16:14:32 +01:00
Ralf Jung
f034a15441 Merge from rustc 2025-02-02 16:13:07 +01:00
Ralf Jung
bf69458973 Preparing for merge from rustc 2025-02-02 16:13:01 +01:00
Ralf Jung
726c9d84d1 miri_get_backtrace: stop supporting the v0 protocol 2025-02-02 16:11:19 +01:00
bors
e1f09207fb Auto merge of #136433 - matthiaskrgr:rollup-co27itw, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #133266 (ci: fix explanation why LLVM download is disabled for windows-gnu)
 - #136133 (Fix sentence in process::abort)
 - #136279 (Rename `tcx.ensure()` to `tcx.ensure_ok()`, and improve the associated docs)
 - #136328 (Rework "long type names" printing logic)
 - #136358 (`#[optimize(none)]` implies `#[inline(never)]`)
 - #136368 (Make comma separated lists of anything easier to make for errors)
 - #136412 (Tweak fn pointer suggestion span)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-02 13:38:43 +00:00
Ralf Jung
3320e91575 rustc_allowed_through_unstable_modules: require deprecation message 2025-02-02 12:36:12 +01:00
Matthias Krüger
58a5f891f9
Rollup merge of #136279 - Zalathar:ensure-ok, r=oli-obk
Rename `tcx.ensure()` to `tcx.ensure_ok()`, and improve the associated docs

This is all based on my archaeology for https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/.60TyCtxtEnsure.60.

The main renamings are:
- `tcx.ensure()` → `tcx.ensure_ok()`
- `tcx.ensure_with_value()` → `tcx.ensure_done()`
- Query modifier `ensure_forwards_result_if_red` → `return_result_from_ensure_ok`

Hopefully these new names are a better fit for the *actual* function and purpose of these query call modes.
2025-02-02 12:31:55 +01:00
Matthias Krüger
78794d0f88
Rollup merge of #133266 - mati865:windows-gnu-llvm-download, r=Kobzol
ci: fix explanation why LLVM download is disabled for windows-gnu

Continuation of https://github.com/rust-lang/rust/pull/132781
2025-02-02 12:31:54 +01:00
bors
6dd75f0d68 Auto merge of #136238 - marcoieni:free-disk-refactor, r=Kobzol
ci: refactor how directories are removed in free-disk-space disk

try-job: aarch64-gnu
2025-02-02 10:51:49 +00:00
Nicholas Nethercote
06090e89d3 Convert two rustc_middle::lint functions to Span methods.
`rustc_middle` is a huge crate and it's always good to move stuff out of
it. There are lots of similar methods already on `Span`, so these two
functions, `in_external_macro` and `is_from_async_await`, fit right in.
The diff is big because `in_external_macro` is used a lot by clippy
lints.
2025-02-02 13:57:34 +11:00
Weihang Lo
649610bf2d
Update cargo 2025-02-01 16:26:46 -05:00
Matthias Krüger
2fd3007cbc
Rollup merge of #130514 - compiler-errors:unsafe-binders, r=oli-obk
Implement MIR lowering for unsafe binders

This is the final bit of the unsafe binders puzzle. It implements MIR, CTFE, and codegen for unsafe binders, and enforces that (for now) they are `Copy`. Later on, I'll introduce a new trait that relaxes this requirement to being "is `Copy` or `ManuallyDrop<T>`" which more closely models how we treat union fields.

Namely, wrapping unsafe binders is now `Rvalue::WrapUnsafeBinder`, which acts much like an `Rvalue::Aggregate`. Unwrapping unsafe binders are implemented as a MIR projection `ProjectionElem::UnwrapUnsafeBinder`, which acts much like `ProjectionElem::Field`.

Tracking:
- https://github.com/rust-lang/rust/issues/130516
2025-02-01 16:41:03 +01:00
Eduardo Sánchez Muñoz
eab3528b07 Test getrandom 0.3 2025-02-01 16:26:13 +01:00
Eduardo Sánchez Muñoz
13f3132aed Bump rand to 0.9 and getrandom to 0.3 2025-02-01 16:22:35 +01:00
bors
e08cd3cf05 Auto merge of #136136 - marcoieni:ubuntu-24, r=Kobzol
ci: use ubuntu 24 on free runners

try-job: aarch64-gnu
try-job: aarch64-gnu-debug
2025-02-01 11:46:40 +00:00
The Miri Cronjob Bot
c925c826bf fmt 2025-02-01 05:14:23 +00:00
The Miri Cronjob Bot
aa74d61665 Merge from rustc 2025-02-01 05:13:09 +00:00
The Miri Cronjob Bot
027ce394ca Preparing for merge from rustc 2025-02-01 05:06:21 +00:00
bors
9e48dfe5e0 Auto merge of #136371 - matthiaskrgr:rollup-0b880v3, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #135840 (omit unused args warnings for intrinsics without body)
 - #135900 (Manually walk into WF obligations in `BestObligation` proof tree visitor)
 - #136163 (Fix off-by-one error causing slice::sort to abort the program)
 - #136266 (fix broken release notes id)
 - #136314 (Use proper type when applying deref adjustment in const)
 - #136348 (miri: make float min/max non-deterministic)
 - #136351 (Add documentation for derive(CoercePointee))

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-01 03:08:52 +00:00
Zalathar
24cdaa146a Rename tcx.ensure() to tcx.ensure_ok() 2025-02-01 12:38:54 +11:00
bors
9709af7901 Auto merge of #135768 - jieyouxu:migrate-symbol-mangling-hashed, r=Noratrieb
tests: Port `symbol-mangling-hashed` to rmake.rs

Part of #121876.

This PR supersedes #128567 and is co-authored with `@lolbinarycat.`

### Summary

This PR ports `tests/run-make/symbol-mangling-hashed` to rmake.rs. Notable differences when compared to the Makefile version includes:

- It's no longer limited to linux + x86_64 only. In particular, this now is exercised on darwin and windows (esp. msvc) too.
- The test uses `object` crate to be more precise in the filtering, and avoids relying on parsing the human-readable `nm` output for *some* `nm` in the given environment (which isn't really a thing on msvc anyway, and `llvm-nm` doesn't handle msvc dylibs AFAICT).
- Dump the symbols satisfying various criteria on test failure to make it hopefully less of a pain to debug if it ever fails in CI.

### Review advice

- Best reviewed commit-by-commit.
- I'm not *super* sure about the msvc logic, would benefit from a MSVC (PE/COFF) expert taking a look.

---

try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: i686-mingw
try-job: x86_64-mingw-1
try-job: x86_64-apple-1
try-job: aarch64-apple
try-job: test-various
2025-02-01 00:19:28 +00:00
Matthias Krüger
1935bbfd18
Rollup merge of #136348 - RalfJung:miri-float-min-max, r=oli-obk
miri: make float min/max non-deterministic

This makes Miri match the documentation that landed in https://github.com/rust-lang/rust/pull/136296.

r? ``@oli-obk``
2025-02-01 01:19:22 +01:00
bors
854f22563c Auto merge of #136350 - matthiaskrgr:rollup-6eqfyvh, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #134531 ([rustdoc] Add `--extract-doctests` command-line flag)
 - #135860 (Compiler: Finalize dyn compatibility renaming)
 - #135992 (Improve documentation when adding a new target)
 - #136194 (Support clobber_abi in BPF inline assembly)
 - #136325 (Delay a bug when indexing unsized slices)
 - #136326 (Replace our `LLVMRustDIBuilderRef` with LLVM-C's `LLVMDIBuilderRef`)
 - #136330 (Remove unnecessary hooks)
 - #136336 (Overhaul `rustc_middle::util`)
 - #136341 (Remove myself from vacation)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-01-31 20:16:46 +00:00
Michael Goulet
b63341e892 Enforce unsafe binders must be Copy (for now) 2025-01-31 17:40:28 +00:00
Michael Goulet
fc1a9186dc Implement MIR, CTFE, and codegen for unsafe binders 2025-01-31 17:19:53 +00:00
bors
aa4cfd0809 Auto merge of #134424 - 1c3t3a:null-checks, r=saethlin
Insert null checks for pointer dereferences when debug assertions are enabled

Similar to how the alignment is already checked, this adds a check
for null pointer dereferences in debug mode. It is implemented similarly
to the alignment check as a `MirPass`.

This inserts checks in the same places as the `CheckAlignment` pass and additionally
also inserts checks for `Borrows`, so code like
```rust
let ptr: *const u32 = std::ptr::null();
let val: &u32 = unsafe { &*ptr };
```
will have a check inserted on dereference. This is done because null references
are UB. The alignment check doesn't cover these places, because in `&(*ptr).field`,
the exact requirement is that the final reference must be aligned. This is something to
consider further enhancements of the alignment check.

For now this is implemented as a separate `MirPass`, to make it easy to disable
this check if necessary.

This is related to a 2025H1 project goal for better UB checks in debug
mode: https://github.com/rust-lang/rust-project-goals/pull/177.

r? `@saethlin`
2025-01-31 15:56:53 +00:00
Ralf Jung
883ba24665 clarify apply_random_float_error logic 2025-01-31 16:21:02 +01:00
Matthias Krüger
f818842ce2
Rollup merge of #135992 - madsmtm:new-target-docs, r=jieyouxu
Improve documentation when adding a new target

https://github.com/rust-lang/rust/pull/133631#issuecomment-2607877936 shows that it can be a bit difficult process-wise to add a new target.

I've added a bit of text to the docs, suggesting that users add the target defintion/spec first, and later work on `std` support.

I also found that we have two places where we document how to add a new target. I've linked these for now, but they should probably be merged somehow in the future.

`@rustbot` label A-docs
r? compiler
CC `@workingjubilee` who's worked a lot on target specs IIRC.
2025-01-31 12:28:16 +01:00
Matthias Krüger
86595e4c88
Rollup merge of #134531 - GuillaumeGomez:extract-doctests, r=notriddle,aDotInTheVoid
[rustdoc] Add `--extract-doctests` command-line flag

Part of https://github.com/rust-lang/rust/issues/134529.

It was discussed with the Rust-for-Linux project recently that they needed a way to extract doctests so they can modify them and then run them more easily (look for "a way to extract doctests" [here](https://github.com/Rust-for-Linux/linux/issues/2)).

For now, I output most of `ScrapedDoctest` fields in JSON format with `serde_json`. So it outputs the following information:

 * filename
 * line
 * langstr
 * text

cc `@ojeda`
r? `@notriddle`
2025-01-31 12:28:15 +01:00
Bastian Kersting
b151b513ba Insert null checks for pointer dereferences when debug assertions are enabled
Similar to how the alignment is already checked, this adds a check
for null pointer dereferences in debug mode. It is implemented similarly
to the alignment check as a MirPass.

This is related to a 2025H1 project goal for better UB checks in debug
mode: https://github.com/rust-lang/rust-project-goals/pull/177.
2025-01-31 11:13:34 +00:00
Ralf Jung
d98270b07a miri: make float min/max non-deterministic 2025-01-31 11:56:02 +01:00
Ralf Jung
25cdd06b46 increase thread limit for many-seeds mode 2025-01-31 11:22:56 +01:00
bors
7f36543a48 Auto merge of #136332 - jhpratt:rollup-aa69d0e, r=jhpratt
Rollup of 9 pull requests

Successful merges:

 - #132156 (When encountering unexpected closure return type, point at return type/expression)
 - #133429 (Autodiff Upstreaming - rustc_codegen_ssa, rustc_middle)
 - #136281 (`rustc_hir_analysis` cleanups)
 - #136297 (Fix a typo in profile-guided-optimization.md)
 - #136300 (atomic: extend compare_and_swap migration docs)
 - #136310 (normalize `*.long-type.txt` paths for compare-mode tests)
 - #136312 (Disable `overflow_delimited_expr` in edition 2024)
 - #136313 (Filter out RPITITs when suggesting unconstrained assoc type on too many generics)
 - #136323 (Fix a typo in conventions.md)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-01-31 09:42:28 +00:00
Mads Marquart
7df38d94a1 Recommend adding target spec first, then std support later
Co-Authored-By: Jieyou Xu <jieyouxu@outlook.com>
2025-01-31 09:41:59 +01:00