Commit Graph

314463 Commits

Author SHA1 Message Date
paradoxicalguy 484ea769d3 adding minicore to test file to avoid duplicating lang error 2026-01-09 02:30:33 +00:00
bors 94f8f4083e Auto merge of #150526 - JonathanBrouwer:rollup-j9hy7fm, r=JonathanBrouwer
Rollup of 3 pull requests

Successful merges:

 - rust-lang/rust#150058 (Enable file locking support for Hurd)
 - rust-lang/rust#150420 (Do not spill operand debuginfo to stack for AArch64 SVE predicates `<vscale x N x i1>` where `N != 16`)
 - rust-lang/rust#150501 (Fix Typos in Platform Support Tables)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-12-30 22:40:16 +00:00
Jonathan Brouwer 342a1acb71 Rollup merge of #150501 - qb42:patch-1, r=workingjubilee
Fix Typos in Platform Support Tables

3 recently demoted targets had their entries moved to the tier 3 table without adjusting for the extra "host" column, this PR adds an empty column so they display correctly.

2 recently promoted targets had the opposite problem, also fixed.

While doing that I noticed that empty columns were represented inconsistently throughout the file so I normalized them all to be 2 spaces, which seemed to be the majority opinion (139 instances vs 5 for 1 space and 19 for 3 spaces).

Closes: rust-lang/rust#150499
2025-12-30 23:27:45 +01:00
Jonathan Brouwer 4b49c9f9d8 Rollup merge of #150420 - h3fang:sve-debuginfo-fix, r=workingjubilee
Do not spill operand debuginfo to stack for AArch64 SVE predicates `<vscale x N x i1>` where `N != 16`

This pull request tries to fix rust-lang/rust#150419.

The debuginfo for AArch64 SVE predicates `<vscale x N x i1>` where `N != 16` should be ignored by this [commit](https://github.com/rust-lang/rust/pull/143924/changes/89eea57594e3e1d8e618dd530ea1c8e7c9b4c7a4).

https://github.com/rust-lang/rust/blob/89eea57594e3e1d8e618dd530ea1c8e7c9b4c7a4/compiler/rustc_codegen_ssa/src/mir/debuginfo.rs#L438-L452

But in line 446, the `marker_type.kind()` is `ty::Bool` instead of `ty::Slice`, so the code doesn't work as intended.

This pull request uses the [`Ty::scalable_vector_element_count_and_type`](https://github.com/rust-lang/rust/blob/main/compiler/rustc_middle/src/ty/sty.rs#L1272) method to fix the condition checks for  `<vscale x N x i1>` where `N != 16` and add a compiletest for this case.
2025-12-30 23:27:44 +01:00
Jonathan Brouwer de16c1aa4c Rollup merge of #150058 - Fabian-Gruenbichler:main, r=workingjubilee
Enable file locking support for Hurd

like Illumos (rust-lang/rust#148322) and aix (rust-lang/rust#148619), Hurd was missed when originally
introducing locking gates per target OS in rust-lang/rust#132977. building rustc on Hurd was
broken as a result since 1.91.
2025-12-30 23:27:44 +01:00
bors 0e89999425 Auto merge of #147247 - Qelxiros:vecdeque_splice, r=Mark-Simulacrum
add VecDeque::splice

Tracking issue: rust-lang/rust#146975
2025-12-30 19:18:37 +00:00
bors f0864c89ea Auto merge of #150512 - JonathanBrouwer:rollup-a3xpskp, r=JonathanBrouwer
Rollup of 2 pull requests

Successful merges:

 - rust-lang/rust#150422 (mir_build: Add a `SliceLenOp` enum for use by slice-length cases/tests)
 - rust-lang/rust#150509 (Adds a regression test for rust-lang/rust#137823)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-12-30 14:42:58 +00:00
Jonathan Brouwer 4b6f783e32 Rollup merge of #150509 - AprilNEA:fix-137823, r=petrochenkov
Adds a regression test for #137823

Adds a regression test for rust-lang/rust#137823. The test ensures that recursive generic function instantiation properly triggers the recursion limit error instead of ICE-ing with `type variables should not be hashed`.

Closes rust-lang/rust#137823
2025-12-30 15:06:17 +01:00
Jonathan Brouwer e9d1e57767 Rollup merge of #150422 - Zalathar:slice-len, r=Nadrieril
mir_build: Add a `SliceLenOp` enum for use by slice-length cases/tests

The main change in this PR introduces a `SliceLenOp` enum, to be used by the enum variants for slice-length tests in match lowering.

Slice-length tests must distinguish between `==` tests, and `>=` tests. The existing code represents this distinction with either a boolean (in `TestableCase`) or a `mir::BinOp` (in `TestKind`). Using a dedicated enum makes it easier to see what the two possible values represent.

This PR also includes a few relevant cleanups that would otherwise conflict.

r? Nadrieril
2025-12-30 15:06:16 +01:00
AprilNEA 36f86f9e6a Adds a regression test for 137823 2025-12-30 19:52:02 +08:00
bors 15f7c553a3 Auto merge of #150503 - JonathanBrouwer:rollup-15nukr5, r=JonathanBrouwer
Rollup of 2 pull requests

Successful merges:

 - rust-lang/rust#150239 (Simplify `TypeFreshener` methods.)
 - rust-lang/rust#150344 (Cleanup linked list)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-12-30 11:20:56 +00:00
Jonathan Brouwer 596e1e3f88 Rollup merge of #150344 - hkBst:cleanup-linked-list, r=jhpratt
Cleanup linked list

 - Replaces some checked_sub().unwrap_or(0) with saturating_sub().
 - Replaces NonNull::from(Box::leak(node)) with Box::into_non_null(node)
2025-12-30 10:42:28 +01:00
Jonathan Brouwer be715d4685 Rollup merge of #150239 - nnethercote:simplify-TypeFreshener-methods, r=lcnr
Simplify `TypeFreshener` methods.

`freshen_{ty,const}` take a `Result` and just do a fold if the input is `Ok`. It's simpler to do those folds at the call site, and only call `freshen_{ty,const}` in the `Err` case. That way we can also avoid useless fold operations on the results of `new_{int,uint,float}`.

Also, make some `bug!` calls more concise.

r? `@lcnr`
2025-12-30 10:42:27 +01:00
bors d465f99043 Auto merge of #150500 - jhpratt:rollup-ei77kqi, r=jhpratt
Rollup of 3 pull requests

Successful merges:

 - rust-lang/rust#146792 (Implement `TryFrom<char>` for `usize`.)
 - rust-lang/rust#150484 (Mark set_times as unavailable for RTEMS target)
 - rust-lang/rust#150498 (mir_build: Remove several remnants of `#![feature(inline_const_pat)]`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-12-30 08:02:56 +00:00
qb42 841091b846 Remove extra columns from promoted targets 2025-12-30 06:44:28 +00:00
qb42 e330a3fab1 Make empty columns consistent 2025-12-30 06:26:01 +00:00
qb42 8cc5dc374b Add missing columns to demoted targets 2025-12-30 06:13:43 +00:00
Jacob Pratt 50e6224d29 Rollup merge of #150498 - Zalathar:no-const-pat, r=BoxyUwU
mir_build: Remove several remnants of `#![feature(inline_const_pat)]`

This PR cleans up some THIR-related code that was only needed for inline `const { .. }` blocks in patterns. The `inline_const_pat` feature was removed in https://github.com/rust-lang/rust/pull/138492 due to implementation concerns.

I considered retaining the code for preserving `ExpandedConstant` for range endpoints, but ultimately decided to remove that too, because I found it very awkward to document an edge case that is currently not needed by any subsequent code.

With this PR, `is_const_pat_that_looks_like_binding` is the only function that meaningfully consumes `thir::PatKind::ExpandedConst`.
2025-12-30 01:10:29 -05:00
Jacob Pratt de21e04ec7 Rollup merge of #150484 - thesummer:rtems-fix-utimesat, r=jhpratt
Mark set_times as unavailable for RTEMS target

This PR just updates one of the config switches to exclude `utimesat` for the RTEMS target.
This currently creates undefined reference errors when building the target.
With this fix applied it also needs a fix in libc (see https://github.com/rust-lang/libc/pull/4875) which will hopefully be available in release 0.2.179.
2025-12-30 01:10:29 -05:00
Jacob Pratt 09baabc63f Rollup merge of #146792 - bjoernager:usize-try-from-char, r=dtolnay
Implement `TryFrom<char>` for `usize`.

Feature gate: `usize_try_from_char`.

This PR implements `TryFrom<char>` for `usize`.

`usize` is currently the only, unsigned, integral type to not implement `TryFrom<char>`. Technically, this conversion is trivial and can already be expressed with some indirection.

I think it useful to be able to describe this set of types with this interface.
2025-12-30 01:10:28 -05:00
bors d874dce125 Auto merge of #150386 - saethlin:no-const-assert-likely, r=tgross35
Remove the explicit branch hint from const_panic

This was asked for in PR review for equivalence with `assert!`, but we don't need likely/unlikely intrinsics here (and indeed they are a bit of an antipattern), because codegen knows about the pattern that `assert!` produces where only one target of a SwitchInt leads to a block terminated by a `#[cold]` call. All our panic entrypoints are `#[cold]`.

`assert!` does not use the likely/unlikely intrinsics, maybe it did in the past.

So the intrinsic call in `const_assert!` should be completely unnecessary. But currently it isn't, because `const_panic!` stamps out a runtime wrapper for its entrypoint which is not given `#[inline]`, citing compile times. It's not obvious to me why not using `#[inline]` would even be good in this case.

I think the runtime wrapper should have `#[inline]` or `#[cold]`, so I'm going to do 3 perf experiments here.
Just changing `const_assert!`: https://perf.rust-lang.org/compare.html?start=fabece9e9491d0a3c3655dba488881968b7c5f7a&end=f6b082cfcf880ad80b33523d5047c11654d907a8&stat=instructions:u
Also adding `#[inline]` to `const_panic!`'s runtime wrapper: https://perf.rust-lang.org/compare.html?start=fabece9e9491d0a3c3655dba488881968b7c5f7a&end=f467cc7e49b74b47da0e2cde49fc1a3140e00ff6&stat=instructions:u
Also adding `#[cold]` to `const_panic!`'s runtime wrapper: https://perf.rust-lang.org/compare.html?start=2e854a9344154564259de51385e9ec9506c0f3b7&end=fd8e098558ff08ac002b05ff78e9f91ffa6f3738&stat=instructions:u

The previous comment indicated perf would be worse with `#[inline]` on the runtime branch, but the results in this PR show that it is more mixed, and net positive. And in fact, the only regression in serde seems to be because we created a very tiny additional amount of codegen, but pushed the size of the second CGU just high enough that we no longer merge all CGUs together. So now serde (in debug with incremental disabled) has 2 CGUs instead of 1. If we just so happened to be still below the threshold where the CGUs don't merge, adding `#[inline]` would have been nearly all improvements.
2025-12-30 04:45:36 +00:00
Zalathar 89f7d70045 Remove several remnants of #![feature(inline_const_pat)] 2025-12-30 14:29:35 +11:00
Zalathar b3c26f10c8 Extract shared helper function is_const_pat_that_looks_like_binding 2025-12-30 14:16:59 +11:00
bors b082bd59d2 Auto merge of #150496 - JonathanBrouwer:rollup-va9ofgq, r=JonathanBrouwer
Rollup of 3 pull requests

Successful merges:

 - rust-lang/rust#150396 ([rustdoc] If line number setting is disabled, do not make line numbers take space)
 - rust-lang/rust#150489 (Disable debuginfo when building GCC)
 - rust-lang/rust#150490 (Specify bug URL when building GCC)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-12-30 01:26:01 +00:00
Jonathan Brouwer 18b3b66c01 Rollup merge of #150490 - Kobzol:gcc-bug-url, r=antoyo
Specify bug URL when building GCC

r? `@antoyo`
2025-12-30 02:07:08 +01:00
Jonathan Brouwer 1953001256 Rollup merge of #150489 - Kobzol:gcc-no-debuginfo, r=antoyo
Disable debuginfo when building GCC

To reduce size of libgccjit.so from ~400 MiB to ~50 MiB.

r? `@antoyo`
2025-12-30 02:07:08 +01:00
Jonathan Brouwer 71c248a2e1 Rollup merge of #150396 - GuillaumeGomez:fix-line-numbers-hidden, r=lolbinarycat
[rustdoc] If line number setting is disabled, do not make line numbers take space

While working on https://github.com/rust-lang/rust/pull/150395, I realized that when enabled then disabled the "show line numbers" setting, instead of looking like initially:

<img width="904" height="148" alt="Screenshot From 2025-12-26 16-51-44" src="https://github.com/user-attachments/assets/a24df2f2-61be-4db5-b60f-519b35425fd2" />

The "space" taken by line numbers was still there:

<img width="904" height="148" alt="Screenshot From 2025-12-26 16-51-41" src="https://github.com/user-attachments/assets/b44af75d-52a4-4401-98e4-602b16bf6b9b" />

This PR fixes it.

First commit cleans up the `utils.goml` file a bit, I think I'll do more cleanup because switching the settings without reloading the page should make GUI tests a bit faster.

r? `@yotamofek`
2025-12-30 02:07:07 +01:00
bors 67944d6bec Auto merge of #149694 - lolbinarycat:alloc-extend-slice-of-str-spec, r=Mark-Simulacrum
alloc: specialize String::extend for slices of str

Here's a small optimization via specialization that can potentially eliminate a fair few reallocations when building strings using specific patterns, unsure if this justifies the use of unsafe, but I had the code implemented from rust-lang/rust#148604, so I thought it was worth submitting to see.
2025-12-29 22:07:30 +00:00
Marijn Schouten eea3d794ff LinkedList: use Box::into_non_null_with_allocator 2025-12-29 19:08:34 +00:00
bors 56f24e00c6 Auto merge of #150488 - JonathanBrouwer:rollup-9ugn7py, r=JonathanBrouwer
Rollup of 2 pull requests

Successful merges:

 - rust-lang/rust#150394 (Accommodate LLVM PassPlugin rename)
 - rust-lang/rust#150483 (miri subtree update)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-12-29 18:50:18 +00:00
Jeremy Smart 0763954226 add VecDeque::splice 2025-12-29 13:25:56 -05:00
Jakub Beránek 0cc8608493 Specify bug URL when building GCC 2025-12-29 18:06:48 +01:00
Jakub Beránek 1313e958c8 Disable debuginfo when building GCC 2025-12-29 17:49:45 +01:00
Jonathan Brouwer 2c89d1c2a0 Rollup merge of #150483 - RalfJung:miri, r=RalfJung
miri subtree update

Subtree update of `miri` to https://github.com/rust-lang/miri/commit/70e245140004b97a23737d3585ecb1bc57dcd61d.

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

r? `@ghost`
2025-12-29 17:17:57 +01:00
Jonathan Brouwer 122f02ad02 Rollup merge of #150394 - DKLoehr:passplugin, r=nikic
Accommodate LLVM PassPlugin rename

LLVM [recently moved](https://github.com/llvm/llvm-project/pull/173279) their `PassPlugin` files to a new folder. This PR updates our `PassWrapper` to point to the new location.
2025-12-29 17:17:56 +01:00
Ben Kimock 315646a7a0 Remove the explicit branch hint from const_panic 2025-12-29 10:30:02 -05:00
bors 8cd58dd99d Auto merge of #148332 - jyn514:cargo-deny-warnings, r=Kobzol
bootstrap: Use cargo's `build.warnings=deny` rather than -Dwarnings

This has two major advantages. First, it makes us less dependent on the rustc shim, which is nice but not super important. More importantly, it gives us much nicer caching properties.

Previously, `x build --warnings warn && x build --warnings deny` would rebuild all of bootstrap, and if there were any warnings emitted on the last build of the compiler, they would *not* fail the build, because cargo would cache the output rather than rerunning the shim.

After this change, bootstrap rebuilds instantly, and cargo knows that it should fail the build but *without* invalidating the cache.

<details><summary>An example of rebuilding bootstrap after a switch from warn->deny:</summary>

```
INFO: Downloading and building bootstrap before processing --help command.
      See src/bootstrap/README.md for help with common commands.
Building bootstrap
   Compiling bootstrap v0.0.0 (/Users/jyn/src/ferrocene3/src/bootstrap)
warning: unused variable: `x`
    --> src/bootstrap/src/core/builder/mod.rs:1792:13
     |
1792 |         let x: ();
     |             ^
     |
     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
help: if this is intentional, prefix it with an underscore
     |
1792 |         let _x: ();
     |             +
help: you might have meant to pattern match on the similarly named constant `_`
     |
1792 -         let x: ();
1792 +         let utils::render_tests::_: ();
     |

warning: `bootstrap` (lib) generated 1 warning (run `cargo fix --lib -p bootstrap` to apply 1 suggestion)
    Finished `dev` profile [unoptimized] target(s) in 5.14s
error: warnings are denied by `build.warnings` configuration
failed to run: /Users/jyn/src/ferrocene3/build/aarch64-apple-darwin/stage0/bin/cargo build --jobs=default --manifest-path /Users/jyn/src/ferrocene3/src/bootstrap/Cargo.toml -Zroot-dir=/Users/jyn/src/ferrocene3 -Zwarnings
```

</details>

building the compiler from scratch with `deny`: https://gist.github.com/jyn514/493ed26c2aa6f61bf47c21e75efa2175

<details><summary>and rebuilding the compiler after switching from deny->warn (note that it reuses the whole cache, there are no invalidations):</summary>

```
$ x c compiler
Building bootstrap
    Finished `dev` profile [unoptimized] target(s) in 0.15s
Checking stage1 compiler artifacts{rustc-main, rustc_abi, rustc_arena, rustc_ast, rustc_ast_ir, rustc_ast_lowering, rustc_ast_passes, rustc_ast_pretty, rustc_attr_parsing, rustc_baked_icu_data, rustc_borrowck, rustc_builtin_macros, rustc_codegen_llvm, rustc_codegen_ssa, rustc_const_eval, rustc_data_structures, rustc_driver, rustc_driver_impl, rustc_error_codes, rustc_error_messages, rustc_errors, rustc_expand, rustc_feature, rustc_fluent_macro, rustc_fs_util, rustc_graphviz, rustc_hashes, rustc_hir, rustc_hir_analysis, rustc_hir_id, rustc_hir_pretty, rustc_hir_typeck, rustc_incremental, rustc_index, rustc_index_macros, rustc_infer, rustc_interface, rustc_lexer, rustc_lint, rustc_lint_defs, rustc_llvm, rustc_log, rustc_macros, rustc_metadata, rustc_middle, rustc_mir_build, rustc_mir_dataflow, rustc_mir_transform, rustc_monomorphize, rustc_next_trait_solver, rustc_parse, rustc_parse_format, rustc_passes, rustc_pattern_analysis, rustc_privacy, rustc_proc_macro, rustc_public, rustc_public_bridge, rustc_query_impl, rustc_query_system, rustc_resolve, rustc_sanitizers, rustc_serialize, rustc_session, rustc_span, rustc_symbol_mangling, rustc_target, rustc_thread_pool, rustc_trait_selection, rustc_traits, rustc_transmute, rustc_ty_utils, rustc_type_ir, rustc_type_ir_macros, rustc_windows_rc} (stage0 -> stage1, aarch64-apple-darwin)
warning: function `foo` is never used
  --> compiler/rustc_hashes/src/lib.rs:16:4
   |
16 | fn foo() {}
   |    ^^^
   |
   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

warning: `rustc_hashes` (lib) generated 1 warning
    Finished `release` profile [optimized + debuginfo] target(s) in 0.53s
Build completed successfully in 0:00:08
```

</details>

thanks to `@epage` for the help finding this!

r? bootstrap
2025-12-29 15:29:00 +00:00
Jan Sommer cfd859a99f Mark set_times as unavailable for RTEMS target 2025-12-29 14:32:55 +01:00
Ralf Jung d1c8e9342c Merge pull request #4796 from RalfJung/data-race-ice
fix ICE for particular data race situations
2025-12-29 12:23:47 +00:00
bors 7e7280f24b Auto merge of #150481 - matthiaskrgr:rollup-f5b2wkm, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - rust-lang/rust#150108 (Offload: Build offload as a single Step)
 - rust-lang/rust#150262 (slice iter cleanup: replace checked_sub with saturating_sub)
 - rust-lang/rust#150427 (add has_offload/needs-offload to the test infra)
 - rust-lang/rust#150458 (fix running stdlib doctests in Miri in CI)
 - rust-lang/rust#150477 (Fix enum variant suggestion consuming trailing parenthesis)
 - rust-lang/rust#150478 (Fix new bors config)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-12-29 12:11:08 +00:00
Matthias Krüger 3748bdef2e Rollup merge of #150478 - Kobzol:bors-config, r=jieyouxu
Fix new bors config

I added the root config under `[labels]` by accident, so it failed to be deserialized by bors.
2025-12-29 12:59:12 +01:00
Matthias Krüger 72f53d86f4 Rollup merge of #150477 - el-ev:issue150459, r=Urgau
Fix enum variant suggestion consuming trailing parenthesis

- Closes rust-lang/rust#150459

Previously the logic incorrectly assumed the variant itself was the function being called when the parent node was a function all. This change adds a check to ensure the replacement span is only expanded if the path expression is actually the callee of the parent expression.
2025-12-29 12:59:11 +01:00
Matthias Krüger fc8230ffd9 Rollup merge of #150458 - RalfJung:miri-doctests, r=bjorn3
fix running stdlib doctests in Miri in CI

r? `@bjorn3`
2025-12-29 12:59:11 +01:00
Matthias Krüger 19907e67d7 Rollup merge of #150427 - ZuseZ4:offload-testinfra, r=jieyouxu
add has_offload/needs-offload to the test infra

unblocks: https://github.com/rust-lang/rust/pull/150426

Mostly copied from https://github.com/rust-lang/rust/pull/131044
lmk if some of these changes should land separately?

r? jieyouxu
2025-12-29 12:59:10 +01:00
Matthias Krüger 9de01a88b7 Rollup merge of #150262 - hkBst:slice-iter-2, r=joboet
slice iter cleanup: replace checked_sub with saturating_sub

Continuation of https://github.com/rust-lang/rust/pull/146436

r? `@joboet`
2025-12-29 12:59:09 +01:00
Matthias Krüger f67b02087d Rollup merge of #150108 - ZuseZ4:offload-build-rework, r=Kobzol
Offload: Build offload as a single Step

r? `@Kobzol`

Since it looks like we'll postpone enabling offload in CI for a bit, I factored out these improvements which we want independently. I locally tested both build options successfully, the in-tree-clang build, as well as the build where we provide a path to an external clang.
2025-12-29 12:59:09 +01:00
Ralf Jung a6c2e50e82 fix ICE for particular data race situations 2025-12-29 12:58:15 +01:00
Manuel Drehwald 6e0b610049 document the needs-enzyme flag 2025-12-29 02:48:36 -08:00
Manuel Drehwald 7ee7d446bf add has_offload/needs-offload to the test infra 2025-12-29 02:47:53 -08:00
Gabriel Bjørnager Jensen cb5f95c101 Implement 'TryFrom<char>' for 'usize'; 2025-12-29 10:46:18 +01:00