about summary refs log tree commit diff
path: root/compiler
AgeCommit message (Collapse)AuthorLines
2025-07-08Expose nested bodies in rustc_borrowck::consumersNico Lehmann-54/+89
2025-07-08Auto merge of #143621 - matthiaskrgr:rollup-p1ce8l7, r=matthiaskrgrbors-82/+91
Rollup of 7 pull requests Successful merges: - rust-lang/rust#142098 (Implement `int_format_into` feature) - rust-lang/rust#143567 (Point to correct argument in Func Call when Self type fails trait bound) - rust-lang/rust#143570 (consider nested cases for duplicate RPITIT) - rust-lang/rust#143571 (remove `has_nested` from builtin candidates) - rust-lang/rust#143586 (Fix wrong cache event query key) - rust-lang/rust#143589 (const-block-as-pattern: do not refer to no-longer-existing nightly feature) - rust-lang/rust#143608 (Fix in std::String docs) r? `@ghost` `@rustbot` modify labels: rollup
2025-07-08Rollup merge of #143589 - RalfJung:const-pat, r=compiler-errorsMatthias Krüger-2/+4
const-block-as-pattern: do not refer to no-longer-existing nightly feature Surely everyone who used this nightly feature has fixed their code by now. So let's not confused people on stable that try to use a const block as a pattern by referring to some dead nightly feature.
2025-07-08Rollup merge of #143586 - Kobzol:self-profile-fix, r=oli-obkMatthias Krüger-1/+1
Fix wrong cache event query key I messed this up in https://github.com/rust-lang/rust/pull/142978. It is only an issue if someone enables the event manually, which almost no-one does, so it could take a while before we found it :D Luckily I noticed it while re-reading the PR. r? `@oli-obk`
2025-07-08Rollup merge of #143571 - lcnr:has_nested-bb, r=compiler-errorsMatthias Krüger-66/+54
remove `has_nested` from builtin candidates it's no longer necessary r? types
2025-07-08Rollup merge of #143570 - bvanjoi:issue-143560, r=compiler-errorsMatthias Krüger-10/+24
consider nested cases for duplicate RPITIT Fixes rust-lang/rust#143560 r? `@compiler-errors` cc `@Zoxc`
2025-07-08Rollup merge of #143567 - xizheyin:143336, r=compiler-errorsMatthias Krüger-3/+8
Point to correct argument in Func Call when Self type fails trait bound Fixes rust-lang/rust#143336 When a trait bound fails due to the `Self` type parameter, `adjust_fulfillment_errors` now correctly points to the corresponding function argument instead of incorrectly pointing to other arguments. This is because `Call` may also need to handle the `self` parameter, and not just `MethodCall` needs to be handled, as rust-lang/rust#143336. r? compiler
2025-07-08Auto merge of #143433 - oli-obk:ty_span_qry, r=compiler-errorsbors-18/+28
Add `ty_span` query r? `@compiler-errors` fixes diagnostic regressions from https://github.com/rust-lang/rust/pull/142030 Also uses the new query in `check_const_item`
2025-07-07Auto merge of #143601 - matthiaskrgr:rollup-9iw2sqk, r=matthiaskrgrbors-28/+87
Rollup of 9 pull requests Successful merges: - rust-lang/rust#132469 (Do not suggest borrow that is already there in fully-qualified call) - rust-lang/rust#143340 (awhile -> a while where appropriate) - rust-lang/rust#143438 (Fix the link in `rustdoc.md`) - rust-lang/rust#143539 (Regression tests for repr ICEs) - rust-lang/rust#143566 (Fix `x86_64-unknown-netbsd` platform support page) - rust-lang/rust#143572 (Remove unused allow attrs) - rust-lang/rust#143583 (`loop_match`: fix 'no terminator on block') - rust-lang/rust#143584 (make `Machine::load_mir` infallible) - rust-lang/rust#143591 (Fix missing words in future tracking issue) r? `@ghost` `@rustbot` modify labels: rollup
2025-07-07Rollup merge of #143584 - fee1-dead-contrib:push-skswvrwsrmll, r=RalfJungMatthias Krüger-6/+6
make `Machine::load_mir` infallible it doesn't need to return an `InterpResult`.
2025-07-07Rollup merge of #143583 - folkertdev:loop-match-no-terminator-on-block, r=bjorn3Matthias Krüger-1/+3
`loop_match`: fix 'no terminator on block' tracking issue: https://github.com/rust-lang/rust/issues/132306 fixes https://github.com/rust-lang/rust/issues/143435 The argument `block` was not properly closed on an error path. r? `@bjorn3`
2025-07-07Rollup merge of #143572 - yotamofek:pr/unused-allow-attrs, r=fee1-deadMatthias Krüger-13/+0
Remove unused allow attrs These `#[allow]`s seem to be unused (at least according to `x check`, didn't run `x test` locally). Let's clean them up! 🧹
2025-07-07Rollup merge of #143340 - nabijaczleweli:awhile, r=mati865Matthias Krüger-1/+1
awhile -> a while where appropriate
2025-07-07Rollup merge of #132469 - estebank:issue-132041, r=NadrierilMatthias Krüger-7/+77
Do not suggest borrow that is already there in fully-qualified call When encountering `&str::from("value")` do not suggest `&&str::from("value")`. Fix #132041.
2025-07-07Auto merge of #143182 - xdoardo:more-addrspace, r=workingjubileebors-160/+405
Allow custom default address spaces and parse `p-` specifications in the datalayout string Some targets, such as CHERI, use as default an address space different from the "normal" default address space `0` (in the case of CHERI, [200 is used](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-877.pdf)). Currently, `rustc` does not allow to specify custom address spaces and does not take into consideration [`p-` specifications in the datalayout string](https://llvm.org/docs/LangRef.html#langref-datalayout). This patch tries to mitigate these problems by allowing targets to define a custom default address space (while keeping the default value to address space `0`) and adding the code to parse the `p-` specifications in `rustc_abi`. The main changes are that `TargetDataLayout` now uses functions to refer to pointer-related informations, instead of having specific fields for the size and alignment of pointers in the default address space; furthermore, the two `pointer_size` and `pointer_align` fields in `TargetDataLayout` are replaced with an `FxHashMap` that holds info for all the possible address spaces, as parsed by the `p-` specifications. The potential performance drawbacks of not having ad-hoc fields for the default address space will be tested in this PR's CI run. r? workingjubilee
2025-07-07Auto merge of #143582 - jieyouxu:rollup-8t9mhfj, r=jieyouxubors-1381/+1320
Rollup of 11 pull requests Successful merges: - rust-lang/rust#143130 (doc(std): clarify `NonZero<T>` usage limitation in doc comment) - rust-lang/rust#143415 (Get rid of build-powerpc64le-toolchain.sh) - rust-lang/rust#143464 (Make tests/ui/abi/debug.rs cross-compile) - rust-lang/rust#143482 (Fix short linker error output) - rust-lang/rust#143524 (Move `stable_mir` back to its own crate) - rust-lang/rust#143528 (interpret: rename StackPopCleanup) - rust-lang/rust#143551 (Dont resolve instance of root in `mir_callgraph_cyclic`) - rust-lang/rust#143558 (mbe: Refactors and function extractions in `compile_declarative_macro`) - rust-lang/rust#143563 (std: fix typo in `std::path`) - rust-lang/rust#143564 (compiler: Deduplicate `must_emit_unwind_tables()` comments) - rust-lang/rust#143577 (Disable download-rustc for library profile) r? `@ghost` `@rustbot` modify labels: rollup
2025-07-07const-block-as-pattern: do not refer to no-longer-existing nightly featureRalf Jung-2/+4
2025-07-07Fix wrong cache event query keyJakub Beránek-1/+1
2025-07-07Remove unused allow attrsYotam Ofek-13/+0
2025-07-07make `Machine::load_mir` infallibleDeadbeef-6/+6
it doesn't need to return an `InterpResult`.
2025-07-07`loop_match`: fix 'no terminator on block'Folkert de Vries-1/+3
2025-07-07Rollup merge of #143564 - Enselic:must_emit_unwind_tables-comment, r=oli-obk许杰友 Jieyou Xu (Joe)-17/+8
compiler: Deduplicate `must_emit_unwind_tables()` comments There is one comment at a call site and one comment in the function definition that are mostly saying the same thing. Fold the call site comment into the function definition comment to reduce duplication. There are actually some inaccuracies in the comments but let's deduplicate before we address the inaccuracies.
2025-07-07Rollup merge of #143558 - joshtriplett:mbe-refactors, r=SparrowLii许杰友 Jieyou Xu (Joe)-23/+27
mbe: Refactors and function extractions in `compile_declarative_macro` These refactors help pave the way for parsing attribute rules. Best reviewed commit-by-commit. - **mbe: Simplify compile_declarative_macro by factoring out some variables** - **mbe: Factor out a helper to check an LHS** - **mbe: Factor out a helper to check for unexpected EOF in definition** - **mbe: Clarify comments about error handling in `compile_declarative_macro`**
2025-07-07Rollup merge of #143551 - compiler-errors:root-sub, r=cjgillot许杰友 Jieyou Xu (Joe)-9/+2
Dont resolve instance of root in `mir_callgraph_cyclic` `Instance::try_resolve` on a default trait body method will always fail, since it's still possible to further substitute. This leads to a cycle, since in `tests/mir-opt/inline_default_trait_body.rs`, both `Trait::a` and `Trait::b` need to consider the other to be cyclical, but since we couldn't resolve a body, we'd just consider *nothing* to be cyclical. The root instance we care about when computing `mir_callgraph_cyclic` is trivial to compute (it's just `InstanceKind::Item`), so just replace it with a call to `Instance::new_raw`. r? `@cjgillot` `@oli-obk` Fixes rust-lang/rust#143534
2025-07-07Rollup merge of #143528 - RalfJung:stack-pop-cleanup, r=oli-obk许杰友 Jieyou Xu (Joe)-40/+40
interpret: rename StackPopCleanup The name `StackPopCleanup` stopped making sense a long time ago IMO -- in the common case, it has nothing to do with "cleanup", and everything with where the program should jump next. If we didn't have unwinding this would be just the return block, but given that we do have unwinding I figured maybe "continuation" would be a good name. This comes up in [continuation-passing style](https://en.wikipedia.org/wiki/Continuation-passing_style) and refers to where the program will *continue* when a function is done. So from a PL perspective it is the most fitting term I think -- but it may be too jargony. r? `@oli-obk` what do you think?
2025-07-07Rollup merge of #143524 - makai410:smir-move-back, r=oli-obk许杰友 Jieyou Xu (Joe)-1288/+1232
Move `stable_mir` back to its own crate We've finished the refactoring, so it's time to move `stable_mir` back to its own crate. This PR leaves an empty `rustc_internal` module with a `#[deprecated]` attribute in `rustc_smir` to let users know we just moved it to `stable_mir`.
2025-07-07Rollup merge of #143482 - ia0:fix, r=fee1-dead许杰友 Jieyou Xu (Joe)-4/+11
Fix short linker error output This PR does 2 things: - It removes the braces when there's a single element. This is required since brace expansion (at least in bash and zsh) only triggers if there's at least 2 elements. - It removes the extra `.rlib` suffixes of the elements. See https://github.com/rust-lang/rust/pull/135707#discussion_r2185212393 for context. Running `cargo +stage1 build` on the following program: ```rust unsafe extern "C" { fn foo() -> libc::c_int; } fn main() { let x = unsafe { foo() } as u32; // println!("{}", data_encoding::BASE64.encode(&x.to_le_bytes())); } ``` Gives the following diff before and after the PR: ```diff -/tmp/foo/target/debug/deps/{liblibc-faf416f178830595.rlib}.rlib +/tmp/foo/target/debug/deps/liblibc-faf416f178830595.rlib ``` Running on the same program with the additional dependency, we get the following diff: ```diff -/tmp/foo/target/debug/deps/{liblibc-faf416f178830595.rlib,libdata_encoding-84bb5aadfa9e8839.rlib}.rlib +/tmp/foo/target/debug/deps/{liblibc-faf416f178830595,libdata_encoding-84bb5aadfa9e8839}.rlib ```
2025-07-07Auto merge of #143035 - ywxt:less-work-steal, r=oli-obkbors-112/+308
Only work-steal in the main loop for rustc_thread_pool This PR is a replica of <https://github.com/rust-lang/rustc-rayon/pull/12> that only retained work-steal in the main loop for rustc_thread_pool. r? `@oli-obk` cc `@SparrowLii` `@Zoxc` `@cuviper` Updates rust-lang/rust#113349
2025-07-07remove `has_nested`lcnr-66/+54
2025-07-07consider nested cases for duplicate RPITITbohan-10/+24
2025-07-07Point to correct argument in Func Call when Self type fails trait boundxizheyin-3/+8
When a trait bound fails due to the Self type parameter, adjust_fulfillment_errors now correctly points to the corresponding function argument instead of incorrectly pointing to other arguments. Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
2025-07-07Add `ty_span` queryOli Scherer-18/+28
2025-07-07compiler: Deduplicate `must_emit_unwind_tables()` commentsMartin Nordholts-16/+8
There is one comment at a call site and one comment in the function definition that are mostly saying the same thing. Fold the call site comment into the function definition comment to reduce duplication. There are actually some inaccuracies in the comments but let's deduplicate before we address the inaccuracies.
2025-07-07rustc_codegen_llvm: Remove reference to non-existing `no_landing_pads()`Martin Nordholts-6/+5
Removing this reference was forgotten in eb4725fc54056. Grepping for no_landing_pads returns no hits after this.
2025-07-07compiler: Parse `p-` specs in datalayout string, allow definition of custom ↵Edoardo Marangoni-160/+405
default data address space
2025-07-07Reverse comparison orderJulien Cretin-1/+1
Co-authored-by: beef <ent3rm4n@gmail.com>
2025-07-06mbe: Clarify comments about error handling in `compile_declarative_macro`Josh Triplett-3/+2
2025-07-06mbe: Factor out a helper to check for unexpected EOF in definitionJosh Triplett-7/+14
Will get called additional times when expanding parsing to cover attributes
2025-07-06mbe: Factor out a helper to check an LHSJosh Triplett-2/+7
This currently gets called only once, but will get called multiple times when handling attributes.
2025-07-06mbe: Simplify compile_declarative_macro by factoring out some variablesJosh Triplett-11/+4
2025-07-07Rollup merge of #143544 - workingjubilee:rename-bare-fn, r=fmeaseJacob Pratt-92/+86
compiler: rename BareFn to FnPtr At some point "BareFn" was the chosen name for a "bare" function, without the niceties of `~fn`, `&fn`, or a few other ways of writing a function type. However, at some point the syntax for a "bare function" and any other function diverged even more. We started calling them what they are: function pointers, denoted by their own syntax. However, we never changed the *internal* name for these, as this divergence was very gradual. Personally, I have repeatedly searched for "FnPtr" and gotten confused until I find the name is BareFn, only to forget this until the next time, since I don't routinely interact with the higher-level AST and HIR. But even tools that interact with these internal types only touch on them in a few places, making a migration easy enough. Let's use a more intuitive and obvious name, as this 12+ year old name has little to do with current Rust.
2025-07-07Rollup merge of #143535 - reallesee:patch-1, r=jdonszelmannJacob Pratt-1/+1
Remove duplicate word Deleted a duplicated word to improve text clarity. contains contains - contains
2025-07-07Rollup merge of #143456 - joshtriplett:mbe-unused-rules-bitset, r=lqdJacob Pratt-6/+8
mbe: Change `unused_macro_rules` to a `DenseBitSet` Now that it only contains indexes, and no other information, a bitset provides a more compact and simpler representation. This builds on <https://github.com/rust-lang/rust/pull/143416>. Only the last commit is new.
2025-07-07Rollup merge of #143344 - JonathanBrouwer:path-parser, r=jdonszelmannJacob Pratt-37/+77
Port `#[path]` to the new attribute parsing infrastructure Ports `#[path]` to the new attribute parsing infrastructure for https://github.com/rust-lang/rust/issues/131229#issuecomment-2971353197 This PR duplicates a change from https://github.com/rust-lang/rust/pull/143237 Draft until that one is merged
2025-07-07Rollup merge of #143206 - Jules-Bertholet:align-attr-fixes, r=workingjubileeJacob Pratt-14/+16
Align attr fixes - Remove references to the superseded `repr(align)` syntax - Allow the attribute on fn items in `extern` blocks - Test attribute in combination with `async fn` and `dyn` r? workingjubilee Tracking issue: https://github.com/rust-lang/rust/issues/82232 `@rustbot` label A-attributes F-fn_align T-compiler
2025-07-06Dont resolve instance of root in mir_callgraph_cyclicMichael Goulet-9/+2
2025-07-06compiler: rename {ast,hir}::BareFn* to FnPtr*Jubilee Young-92/+86
Fix some comments and related types and locals where it is obvious, e.g. - bare_fn -> fn_ptr - LifetimeBinderKind::BareFnType -> LifetimeBinderKind::FnPtrType Co-authored-by: León Orell Valerian Liehr <me@fmease.dev>
2025-07-06Support `#[align(…)]` on fns in `extern` blocksJules Bertholet-1/+1
2025-07-06Remove `repr(align)` codeJules Bertholet-13/+15
2025-07-06Port `#[path]` to the new attribute parsing infrastructureJonathan Brouwer-1/+42
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>