about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2025-02-24Make allocator shim creation mostly use safe codeOli Scherer-96/+94
2025-02-24Generalize BaseTypeCodegenMethodsOli Scherer-29/+35
2025-02-24Generalize `BackendTypes` over `GenericCx`Oli Scherer-12/+15
2025-02-24Avoid some duplication between SimpleCx and CodegenCxOli Scherer-88/+94
2025-02-24Remove an unnecessary lifetimeOli Scherer-11/+11
2025-02-24Use safe FFI for various functions in codegen_llvmOli Scherer-7/+3
2025-02-24Auto merge of #137511 - jhpratt:rollup-07whsax, r=jhprattbors-333/+852
Rollup of 10 pull requests Successful merges: - #136610 (Allow `IndexSlice` to be indexed by ranges.) - #136991 ([rustdoc] Add new setting to wrap source code lines when too long) - #137061 (Unstable `gen_future` Feature Tracking ) - #137393 (Stabilize `unbounded_shifts`) - #137482 (Windows: use existing wrappers in `File::open_native`) - #137484 (Fix documentation for unstable sort on slice) - #137491 (Tighten `str-to-string-128690.rs``CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling) - #137495 (Added into_value function to ControlFlow<T, T>) - #137501 (Move `impl` blocks out of `rustc_middle/src/mir/syntax.rs`) - #137505 (Add a span to `CompilerBuiltinsCannotCall`) r? `@ghost` `@rustbot` modify labels: rollup
2025-02-24Rollup merge of #137505 - tgross35:builtins-cannot-call-error, r=compiler-errorsJacob Pratt-6/+16
Add a span to `CompilerBuiltinsCannotCall` Currently, this error emit a diagnostic with no context like: error: `compiler_builtins` cannot call functions through upstream monomorphizations; encountered invalid call from `<math::libm::support::hex_float::Hexf<i32> as core::fmt::LowerHex>::fmt` to `core::fmt::num::<impl core::fmt::LowerHex for i32>::fmt` With this change, it at least usually points to the problematic function: error: `compiler_builtins` cannot call functions through upstream monomorphizations; encountered invalid call from `<math::libm::support::hex_float::Hexf<i32> as core::fmt::LowerHex>::fmt` to `core::fmt::num::<impl core::fmt::LowerHex for i32>::fmt` --> src/../libm/src/math/support/hex_float.rs:270:5 | 270 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
2025-02-24Rollup merge of #137501 - nnethercote:mv-impls-out-of-syntax, r=compiler-errorsJacob Pratt-116/+110
Move `impl` blocks out of `rustc_middle/src/mir/syntax.rs` Best reviewed one commit at a time.
2025-02-24Rollup merge of #137495 - โ†ตJacob Pratt-0/+21
madhav-madhusoodanan:feature-unstable-control-flow-into-value, r=jhpratt Added into_value function to ControlFlow<T, T>
2025-02-24Rollup merge of #137491 - jieyouxu:mango-less-likely, r=saethlinJacob Pratt-4/+6
Tighten `str-to-string-128690.rs``CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling The `invoke` to match on to `CHECK` or `CHECK-NOT` (latest master) looks like ```llvm %_0.i.i.i.i.i.i.i.i.i.i.i.i.i1.i = invoke noundef zeroext i1 ``@"_ZN42_$LT$str$u20$as$u20$core..fmt..Display$GT$3fmt17ha18033e7fb4f14fcE"(ptr`` noalias noundef nonnull readonly align 1 %_3.val.i.i.i.i.i.i.i.i.i.i.i.i.i, i64 noundef %_3.val1.i.i.i.i.i.i.i.i.i.i.i.i.i, ptr noalias noundef nonnull align 8 dereferenceable(64) %formatter.i) to label %bb1.i unwind label %cleanup.i, !noalias !80 ``` in the local `.ll` output. This test incorrectly failed in https://github.com/rust-lang/rust/pull/137483#issuecomment-2676925819 due to ``` // CHECK-NOT: {{(call|invoke).*}}fmt ``` matching against the unrelated call ```llvm tail call void ``@_RNvNtCseLfmtnDCoTB_5alloc7raw_vec12handle_error`` ``` It's not pretty by any means, but... r? ``@saethlin``
2025-02-24Rollup merge of #137484 - chenyukang:yukang-fix-sort-doc, r=NoratriebJacob Pratt-15/+33
Fix documentation for unstable sort on slice Fixes #136665
2025-02-24Rollup merge of #137482 - rust9x:win-file-open-truncate, r=ChrisDentonJacob Pratt-25/+11
Windows: use existing wrappers in `File::open_native` Just a small improvement I've noticed - prevents accidents regarding `SetFileInformationByHandle` parameters. Probably ``@ChrisDenton`` since we talked about it on discord :)
2025-02-24Rollup merge of #137393 - chorman0773:unbounded-shifts-stabilize, r=AmanieuJacob Pratt-8/+336
Stabilize `unbounded_shifts` This stabilizes and const-stabilizes `<iN>::unbounded_shl` and `<uN>::unbounded_shr` from https://github.com/rust-lang/rust/issues/129375.
2025-02-24Rollup merge of #137061 - progressive-galib:gen_future-closing#76249, โ†ตJacob Pratt-4/+4
r=ibraheemdev Unstable `gen_future` Feature Tracking This PR removes the reference to the closed tracking issue **#50547** for the `gen_future` feature. Since `gen_future` is an internal feature used in async block desugaring, it does not require a public tracking issue. #### Changes: - Replaced `issue = "50547"` with `issue = "none"` in **library/core/src/future/mod.rs**. - Ensures that it is correctly identified as an internal feature. #### Rationale: With this change, the Unstable Book will now state: > *"This feature has no tracking issue and is therefore likely internal to the compiler, not being intended for general use."* Closes **#76249**. ๐Ÿš€๐Ÿฆ€
2025-02-24Rollup merge of #136991 - GuillaumeGomez:code-wrapping, r=notriddleJacob Pratt-113/+171
[rustdoc] Add new setting to wrap source code lines when too long Fixes https://github.com/rust-lang/rust/issues/127334. Wrapped lines look like this: ![image](https://github.com/user-attachments/assets/92006a27-ed1e-4beb-91f2-f453b72c5e1a) It works in both source code pages and doc pages. You can test it [here](https://rustdoc.crud.net/imperio/code-wrapping/bar/index.html). r? ``@notriddle``
2025-02-24Rollup merge of #136610 - Jarcho:range_idx, r=NoratriebJacob Pratt-42/+144
Allow `IndexSlice` to be indexed by ranges. This comes with some annoyances as the index type can no longer inferred from indexing expressions. The biggest offender for this is `IndexVec::from_fn_n(|idx| ..., n)` where the index type won't be inferred from the call site or any index expressions inside the closure. My main use case for this is mapping a `Place` to `Range<Idx>` for value tracking where the range represents all the values the place contains.
2025-02-24Auto merge of #137285 - yotamofek:pr/rustdoc/pulldown-escaping, r=GuillaumeGomezbors-48/+5
librustdoc: Use `pulldown-cmark-escape` for HTML escaping Implementation of `@notriddle` 's [suggestion](https://github.com/rust-lang/rust/pull/137274#issuecomment-2669001585). Somewhat related to #137274 , but the two PRs should be complementary. Local perf results look like a nice improvement! (so would love a perf run on the CI)
2025-02-24Add a span to `CompilerBuiltinsCannotCall`Trevor Gross-6/+16
Currently, this error emit a diagnostic with no context like: error: `compiler_builtins` cannot call functions through upstream monomorphizations; encountered invalid call from `<math::libm::support::hex_float::Hexf<i32> as core::fmt::LowerHex>::fmt` to `core::fmt::num::<impl core::fmt::LowerHex for i32>::fmt` With this change, it at least usually points to the problematic function: error: `compiler_builtins` cannot call functions through upstream monomorphizations; encountered invalid call from `<math::libm::support::hex_float::Hexf<i32> as core::fmt::LowerHex>::fmt` to `core::fmt::num::<impl core::fmt::LowerHex for i32>::fmt` --> src/../libm/src/math/support/hex_float.rs:270:5 | 270 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
2025-02-24Auto merge of #137271 - nikic:gep-nuw-2, r=scottmcmbors-29/+93
Emit getelementptr inbounds nuw for pointer::add() Lower pointer::add (via intrinsic::offset with unsigned offset) to getelementptr inbounds nuw on LLVM versions that support it. This lets LLVM make use of the pre-condition that the offset addition does not wrap in an unsigned sense. Together with inbounds, this also implies that the offset is non-negative. Fixes https://github.com/rust-lang/rust/issues/137217.
2025-02-24Added into_value const function to ControlFlow<T, T>Madhav Madhusoodanan-0/+21
Fixed issue with usage of generics and moved feature gate to crate root Removed const tag Fixed alphabetical ordering of feature gate, added same to doctest Removed crate-level declaration of feature gate control_flow_into_value Used const_precise_live_drops to constify into_value without issue of a drop
2025-02-23Auto merge of #137497 - tgross35:rollup-1oeclrr, r=tgross35bors-441/+406
Rollup of 8 pull requests Successful merges: - #136439 (Misc. `rustc_codegen_ssa` cleanups ๐Ÿงน) - #136543 (intrinsics: unify rint, roundeven, nearbyint in a single round_ties_even intrinsic) - #136637 (Add binary_format to rustc target specs) - #137099 (Fix rustdoc test directives that were accidentally ignored ๐Ÿง) - #137297 (Update `compiler-builtins` to 0.1.147) - #137451 (FIx `sym` -> `syn` typo in tail-expr-drop-order type opt-out) - #137452 (bootstrap: add module docs for core:metadata) - #137483 (rename sub_ptr to offset_from_unsigned) r? `@ghost` `@rustbot` modify labels: rollup
2025-02-24Fix some `use` items that import more than necessary.Nicholas Nethercote-4/+4
2025-02-24Move `impl` blocks out of `rustc_middle/src/mir/syntax.rs`.Nicholas Nethercote-112/+106
As the comment at the top says, this file is not supposed to contain any code. But some has crept in. This commit moves it out.
2025-02-23Auto merge of #137476 - onur-ozkan:137469, r=jieyouxubors-47/+14
avoid `compiler_for` for dist tools and force the current compiler Using `compiler_for` in dist steps was causing to install stage1 tools into the dist tarballs, which doesn't match with the stage2 compiler. Fixes https://github.com/rust-lang/rust/issues/137469
2025-02-23Rollup merge of #137483 - bend-n:๐Ÿ˜…, r=NoratriebTrevor Gross-51/+51
rename sub_ptr to offset_from_unsigned i also made `byte_sub_ptr` `byte_offset_from_unsigned` fixes #137121 tracking issue #95892
2025-02-23Rollup merge of #137452 - โ†ตTrevor Gross-0/+7
Shourya742:2025-02-23-add-module-level-doc-for-core-metadata, r=Kobzol bootstrap: add module docs for core:metadata Add module doc for bootstrap:core:metadata
2025-02-23Rollup merge of #137451 - compiler-errors:synm, r=NoratriebTrevor Gross-1/+1
FIx `sym` -> `syn` typo in tail-expr-drop-order type opt-out The #131326 PR attempts to reduce some false positives for the `tail_expr_drop_order` lint by hard-coding some common ecosystem crate names. Specifically, I believe it attempts to opt out the drop impls from `syn` which only exist as optimizations. However, this was typo'd like "sym", which is a crate that has been [yanked](https://crates.io/crates/sym) (lol). This PR fixes that. cc `@dingxiangfei2009` `@nikomatsakis` -- did I mistake this? Was this meant to be a different crate? `@bors` rollup
2025-02-23Rollup merge of #137297 - tgross35:update-builtins, r=tgross35Trevor Gross-6/+6
Update `compiler-builtins` to 0.1.147 Removes an ABI hack that used `<2 x i64>` to return `i128` in `xmm0` on Windows [1]. [1]: https://github.com/rust-lang/compiler-builtins/pull/759 Link: https://github.com/rust-lang/rust/issues/116558 Link: https://github.com/rust-lang/compiler-builtins/issues/758 try-job: x86_64-mingw-1 try-job: x86_64-mingw-2
2025-02-23Rollup merge of #137099 - yotamofek:pr/rustdoc/fix-ignored-test-directives, โ†ตTrevor Gross-17/+17
r=fmease Fix rustdoc test directives that were accidentally ignored ๐Ÿง Replace "// `@"` with "//@ ", and fix the tests so they actually pass, after directives are checked. ~~Only the first commit is mandatory, other two are small drive-bys.~~
2025-02-23Rollup merge of #136637 - Pyr0de:binary-format, r=NoratriebTrevor Gross-48/+102
Add binary_format to rustc target specs Added binary format field to `TargetOptions` Fixes #135724 r? `@Noratrieb`
2025-02-23Rollup merge of #136543 - RalfJung:round-ties-even, r=tgross35Trevor Gross-208/+127
intrinsics: unify rint, roundeven, nearbyint in a single round_ties_even intrinsic LLVM has three intrinsics here that all do the same thing (when used in the default FP environment). There's no reason Rust needs to copy that historically-grown mess -- let's just have one intrinsic and leave it up to the LLVM backend to decide how to lower that. Suggested by `@hanna-kruppe` in https://github.com/rust-lang/rust/issues/136459; Cc `@tgross35` try-job: test-various
2025-02-23Rollup merge of #136439 - yotamofek:pr/codegen-ssa-no-indexing, r=NoratriebTrevor Gross-110/+95
Misc. `rustc_codegen_ssa` cleanups ๐Ÿงน Just a bunch of stuff I found while reading the crate's code. Each commit can stand on its own. Maybe r? `@Noratrieb` because I saw you did some similar cleanups on these files a while ago? (feel free to re-assign, I'm just guessing)
2025-02-24tests: tighten `CHECK-NOT`s to make `str-to-string-128690.rs` less likely to โ†ต่ฎธๆฐๅ‹ Jieyou Xu (Joe)-4/+6
collide with symbol name mangling
2025-02-23rename sub_ptr ๐Ÿ˜…bendn-51/+51
2025-02-23Fix documentation for unstable sortyukang-15/+33
2025-02-23Auto merge of #137225 - RalfJung:vectorcall, r=nnethercotebors-108/+172
vectorcall ABI: require SSE2 According to the official docs at https://learn.microsoft.com/en-us/cpp/cpp/vectorcall, SSE2 is required for this ABI. Add a check that enforces this. I put this together with the other checks ensuring the target features required for a function are present... however, since the ABI is known pre-monomorphization, it would be possible to do this check earlier, which would have the advantage of checking even in `cargo check`. It would have the disadvantage of spreading this code in yet more places. The first commit just does a little refactoring of the mono-time ABI check to make it easier to add the new check. Cc `@workingjubilee` try-job: dist-i586-gnu-i586-i686-musl
2025-02-23Win: use existing wrappers for `SetFileInformationByHandle` in โ†ตDennis Duda-25/+11
`File::open_native`
2025-02-23add FIXME note on `Builder::compiler_for`onur-ozkan-0/+3
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-23avoid `compiler_for` for dist tools and force the current compileronur-ozkan-47/+11
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-23Auto merge of #137237 - cuviper:stage0, r=Mark-Simulacrumbors-1102/+543
Master bootstrap update https://forge.rust-lang.org/release/process.html#master-bootstrap-update-tuesday r? `@Mark-Simulacrum`
2025-02-23add stdarch compatibility hackRalf Jung-0/+12
2025-02-23Auto merge of #137466 - jhpratt:rollup-spyi02y, r=jhprattbors-420/+1151
Rollup of 9 pull requests Successful merges: - #135354 ([Debuginfo] Add MSVC Synthetic and Summary providers to LLDB) - #136826 (Replace mem::zeroed with mem::MaybeUninit::uninit for large struct in Unix) - #137194 (More const {} init in thread_local) - #137334 (Greatly simplify lifetime captures in edition 2024) - #137382 (bootstrap: add doc for vendor build step) - #137423 (Improve a bit HIR pretty printer) - #137435 (Fix "missing match arm body" suggestion involving `!`) - #137448 (Fix bugs due to unhandled `ControlFlow` in compiler) - #137458 (Fix missing self subst when rendering `impl Fn*<T>` with no output type) r? `@ghost` `@rustbot` modify labels: rollup
2025-02-23Rollup merge of #137458 - compiler-errors:render-fn, r=fmeaseJacob Pratt-21/+39
Fix missing self subst when rendering `impl Fn*<T>` with no output type r? `@fmease` or reassign Fixes #133597 cc #137456
2025-02-23Rollup merge of #137448 - compiler-errors:control-flow-oops, r=scottmcmJacob Pratt-2/+2
Fix bugs due to unhandled `ControlFlow` in compiler Well, one bug and one nit.
2025-02-23Rollup merge of #137435 - estebank:match-arm-2, r=compiler-errorsJacob Pratt-16/+94
Fix "missing match arm body" suggestion involving `!` Include the match arm guard in the gated span, so that the suggestion to add a body is correct instead of inserting the body before the guard. Make the suggestion verbose. ``` error: `match` arm with no body --> $DIR/feature-gate-never_patterns.rs:43:9 | LL | Some(_) if false, | ^^^^^^^^^^^^^^^^ | help: add a body after the pattern | LL | Some(_) if false => { todo!() }, | ++++++++++++++ ``` r? `@compiler-errors`
2025-02-23Rollup merge of #137423 - Urgau:imprv-pretty-hir, r=compiler-errorsJacob Pratt-21/+152
Improve a bit HIR pretty printer This PR improve (a bit) the HIR pretty printer. It does so by: - Not printing elided lifetimes (those are not expressible in surface Rust anyway) - And by rendering implicit self with the shorthand syntax I also tried fixing some indentation and other things but gave up for now. Best reviewed commit by commit.
2025-02-23Rollup merge of #137382 - Shourya742:2025-02-21-add-vendor-step-doc, r=KobzolJacob Pratt-0/+18
bootstrap: add doc for vendor build step This PR adds docs for vendor build step.
2025-02-23Rollup merge of #137334 - compiler-errors:edition-2024-fresh-2, โ†ตJacob Pratt-294/+223
r=saethlin,traviscross Greatly simplify lifetime captures in edition 2024 Remove most of the `+ Captures` and `+ '_` from the compiler, since they are now unnecessary with the new edition 2021 lifetime capture rules. Use some `+ 'tcx` and `+ 'static` rather than being overly verbose with precise capturing syntax.
2025-02-23Rollup merge of #137194 - kornelski:ftls, r=tgross35Jacob Pratt-7/+25
More const {} init in thread_local `const {}` in `thread_local!` gets an optimization just based on the syntax, rather than the expression being const-compatible. This is easy to miss, so I've added more examples to the docs. I've also added `const {}` in a couple of places in std where this optimization has been missed.