Commit Graph

48659 Commits

Author SHA1 Message Date
Jana Dönszelmann
5c0a625205 move naked checks out of check_attr.rs 2025-06-23 12:22:57 +02:00
Jana Dönszelmann
73bcf4c117 make warnings methods on cx so it's easier to emit them elsewhere too 2025-06-23 12:21:44 +02:00
Jana Dönszelmann
82cbc3a35e rewrite #[naked] parser 2025-06-23 12:21:43 +02:00
Jana Dönszelmann
269b67d6b8 fix 142891 2025-06-23 12:20:02 +02:00
lcnr
e8e32c30c2 inspect: merge [Canonical]GoalEvaluation 2025-06-23 11:50:36 +02:00
lcnr
5132e6c540 evaluate_goal: avoid unnecessary step 2025-06-23 11:50:36 +02:00
Camille GILLOT
2074013f44 Only store the LocalDefId instead of the whole instance. 2025-06-23 08:44:31 +00:00
Jakub Beránek
332ae3b7e6 Add codegen timing section 2025-06-23 08:50:17 +02:00
Marijn Schouten
707a6f5463 update to literal-escaper 0.0.4 for better API without unreachable and faster string parsing 2025-06-23 06:36:22 +00:00
Matthias Krüger
57abad8cc5 Rollup merge of #142854 - folkertdev:centralize-min-function-alignment, r=workingjubilee
centralize `-Zmin-function-alignment` logic

tracking issue: https://github.com/rust-lang/rust/issues/82232
discussed in: https://github.com/rust-lang/rust/pull/142824#discussion_r2160056244

Apply the `-Zmin-function-alignment` value to the alignment field of the function attributes when those are created, so that individual backends don't need to consider it.

The one exception right now is cranelift, because it can't yet set the alignment for individual functions, but it can (and does) set the global minimum function alignment.

cc ``@RalfJung`` I think this is an improvement regardless, is there anything else that should be done for miri?
2025-06-23 06:07:20 +02:00
Matthias Krüger
9b6665fafa Rollup merge of #142823 - JonathanBrouwer:no_mangle_parser, r=jdonszelmann
Port `#[no_mangle]` to new attribute parsing infrastructure

Ports `no_mangle` to the new attribute parsing infrastructure for https://github.com/rust-lang/rust/issues/131229#issuecomment-2971353197

r? ``@jdonszelmann``
2025-06-23 06:07:19 +02:00
Mark Rousskov
928564c7bf Stop collecting unmentioned constants
This avoids generating useless dead LLVM IR.
2025-06-22 17:52:49 -04:00
Camille GILLOT
1b4a19d4ac Hash less while hashing def-ids. 2025-06-22 20:29:39 +00:00
Camille GILLOT
89e5db8fea Only inherit local hash for paths. 2025-06-22 20:25:55 +00:00
Jonathan Brouwer
2084831cd5 Port #[no_mangle] to new attribute parsing infrastructure
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
2025-06-22 22:17:04 +02:00
Camille GILLOT
8a35c7ac5b Cache queries. 2025-06-22 20:14:38 +00:00
bors
be19eda0dc Auto merge of #142508 - Mark-Simulacrum:skip-noop-drop-glue, r=fee1-dead
Skip no-op drop glue

Since rust-lang/rust#122662 this no longer gets used in vtables, so we're safe to fully
drop generating functions from vtables. Those are eventually cleaned up
by LLVM, but it's wasteful to produce them in the first place.

This doesn't appear to be a significant win (and shows some slight regressions) but
seems like the right thing to do. At minimum it reduces noise in the LLVM IR we generate,
which seems like a good thing.
2025-06-22 20:10:07 +00:00
Camille GILLOT
09aab29ebf Only compute recursive callees once. 2025-06-22 20:08:49 +00:00
Makai
e40515a494 add method to retrieve body of coroutine 2025-06-22 18:01:39 +00:00
bors
111e9bc64b Auto merge of #142878 - GuillaumeGomez:rollup-53dohob, r=GuillaumeGomez
Rollup of 10 pull requests

Successful merges:

 - rust-lang/rust#142458 (Merge unboxed trait object error suggestion into regular dyn incompat error)
 - rust-lang/rust#142593 (Add a warning to LateContext::get_def_path)
 - rust-lang/rust#142594 (Add DesugaringKind::FormatLiteral)
 - rust-lang/rust#142740 (Clean-up `FnCtxt::is_destruct_assignment_desugaring`)
 - rust-lang/rust#142780 (Port `#[must_use]` to new attribute parsing infrastructure)
 - rust-lang/rust#142798 (Don't fail to parse a struct if a semicolon is used to separate fields)
 - rust-lang/rust#142856 (Add a few inline directives in rustc_serialize.)
 - rust-lang/rust#142868 (remove few allow(dead_code))
 - rust-lang/rust#142874 (cranelift: fix target feature name typo: "fxsr")
 - rust-lang/rust#142877 (Document why tidy checks if `eslint` is installed via `npm`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-22 17:10:28 +00:00
Kornel
d18a43c3ac Init local_names lazily for borrowck diagnostics 2025-06-22 17:16:36 +01:00
Kornel
a7baff819d Avoid panic when debug info is missing 2025-06-22 17:00:09 +01:00
Mark Rousskov
a46ef2d01e Remove dead instructions in terminate blocks 2025-06-22 11:38:47 -04:00
Guillaume Gomez
1474a0f505 Rollup merge of #142874 - marxin:cranelift-typo-fix, r=bjorn3
cranelift: fix target feature name typo: "fxsr"

Fix a typo introduced in 71b698c0b8

CC: `@clubby789` `@bjorn3`
2025-06-22 17:35:36 +02:00
Guillaume Gomez
f1fa46d3ba Rollup merge of #142868 - klensy:dc, r=oli-obk
remove few allow(dead_code)

Few from serial/parallel compiler leftovers and few from bootstrap.
2025-06-22 17:35:36 +02:00
Guillaume Gomez
0f89e61c4d Rollup merge of #142856 - cjgillot:inline-serialize, r=petrochenkov
Add a few inline directives in rustc_serialize.

I see `debug_strict_add` and `debug_strict_sub` appearing in callgrind output. This bothers me. This PR should make them disappear.
2025-06-22 17:35:35 +02:00
Guillaume Gomez
194e58c75c Rollup merge of #142798 - camsteffen:recover-semi, r=compiler-errors
Don't fail to parse a struct if a semicolon is used to separate fields

The first commit is a small refactor.
2025-06-22 17:35:35 +02:00
Guillaume Gomez
2681bb0952 Rollup merge of #142780 - JonathanBrouwer:must_use_new_attr, r=jdonszelmann
Port `#[must_use]` to new attribute parsing infrastructure

Ports `must_use` to the new attribute parsing infrastructure for https://github.com/rust-lang/rust/issues/131229#issuecomment-2971353197

r? `@jdonszelmann`
2025-06-22 17:35:34 +02:00
Guillaume Gomez
a9a0753e96 Rollup merge of #142740 - ada4a:is-destruct-assignment-desugaring, r=fee1-dead
Clean-up `FnCtxt::is_destruct_assignment_desugaring`

I noticed the docstring thing and fixed that; then I thought I'd rewrite the method using let-chains while I'm at it, since that seemed appropriate. But I don't feel too strongly about the second change, so let me know if I should remove it
2025-06-22 17:35:34 +02:00
Guillaume Gomez
7bed341583 Rollup merge of #142594 - mejrs:new_desugaring, r=chenyukang
Add DesugaringKind::FormatLiteral

Implements `DesugaringKind::FormatLiteral` to mark the FormatArgs desugaring of format literals. The main use for this is to stop yapping about about formatting parameters if we're not anywhere near a format literal. The other use case is to fix suggestions such as https://github.com/rust-lang/rust/issues/141350. It might also be useful for new or existing diagnostics that check whether they're in a format-like macro.

cc `@xizheyin` `@fmease`
2025-06-22 17:35:33 +02:00
Guillaume Gomez
cab65efa2e Rollup merge of #142593 - blyxyas:improve-docs-itty-bitty-change, r=compiler-errors
Add a warning to LateContext::get_def_path

Preventing anyone from doing the same error as https://github.com/rust-lang/rust-clippy/pull/15043 fixed
2025-06-22 17:35:33 +02:00
Guillaume Gomez
371426334b Rollup merge of #142458 - oli-obk:dyn-incompat, r=compiler-errors
Merge unboxed trait object error suggestion into regular dyn incompat error

Another hir-walker removed from the well-formed queries. This error was always a duplicate of another, but it was able to provide more information because it could invoke `is_dyn_compatible` without worrying about cycle errors. That's also the reason we can't put the error directly into hir_ty_lowering when lowering a `dyn Trait` within an associated item signature. So instead I packed it into the error handling of wf obligation checking.
2025-06-22 17:35:32 +02:00
Urgau
188023a93c Don't suggest changing a method inside a expansion 2025-06-22 17:08:54 +02:00
Urgau
6ffd0e6c23 Address review comments 2025-06-22 16:45:16 +02:00
Martin Liska
75674e2c2a cranelift: fix target feature name type: "fxsr" 2025-06-22 16:32:54 +02:00
bors
c2ec7532ee Auto merge of #142706 - fee1-dead-contrib:push-zsznlqyrzsqo, r=oli-obk
completely deduplicate `Visitor` and `MutVisitor`

r? oli-obk

This closes rust-lang/rust#127615.

### Discussion

> * Give every `MutVisitor::visit_*` method a corresponding `flat_map_*` method.

Not every AST node exists in a location where they can be mapped to multiple instances of themselves. Not every AST node exists in a location where they can be removed from existence (e.g. `filter_map_expr`). I don't think this is doable.

> * Give every `MutVisitor::visit_*` method a corresponding `Visitor` method and vice versa

The only three remaining method-level asymmetries after this PR are `visit_stmt` and `visit_nested_use_tree` (only on `Visitor`) and `visit_span` (only on `MutVisitor`).

`visit_stmt` doesn't seem applicable to `MutVisitor` because `walk_flat_map_stmt_kind` will ask `flat_map_item` / `filter_map_expr` to potentially turn a single `Stmt` to multiple based on what a visitor wants. So only using `flat_map_stmt` seems appropriate.

`visit_nested_use_tree` is used for `rustc_resolve` to track stuff. Not useful for `MutVisitor` for now.

`visit_span` is currently not used for `MutVisitor` already, it was just kept in case we want to revive rust-lang/rust#127241. cc `@cjgillot` maybe we could remove for now and re-insert later if we find a use-case? It does involve some extra effort to maintain.

* Remaining FIXMEs

`visit_lifetime` has an extra param for `Visitor` that's not in `MutVisitor`. This is again something only used by `rustc_resolve`. I think we can keep that symmetry for now.
2025-06-22 14:03:44 +00:00
Jonathan Brouwer
b24df42488 Port #[must_use] to new attribute parsing infrastructure
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
2025-06-22 14:51:58 +02:00
Tomasz Miąsko
c353539109 Leave from CopyProp early when there are no replacements 2025-06-22 14:30:23 +02:00
Ada Alakbarova
fdb76e2296 Turn a comment that looks like a docstring into a docstring
rewrite using let-chains
2025-06-22 13:37:14 +02:00
klensy
2ddbe39bfb remove allow(dead_code) leftovers from serial/parallel compiler 2025-06-22 13:05:09 +03:00
bors
a30f1783fe Auto merge of #142864 - jhpratt:rollup-mf0yq8o, r=jhpratt
Rollup of 10 pull requests

Successful merges:

 - rust-lang/rust#140254 (Pass -Cpanic=abort for the panic_abort crate)
 - rust-lang/rust#142600 (Port `#[rustc_pub_transparent]` to the new attribute system)
 - rust-lang/rust#142617 (improve search graph docs, reset `encountered_overflow` between reruns)
 - rust-lang/rust#142747 (rustdoc_json: conversion cleanups)
 - rust-lang/rust#142776 (All HIR attributes are outer)
 - rust-lang/rust#142800 (integer docs: remove extraneous text)
 - rust-lang/rust#142841 (Enable fmt-write-bloat for Windows)
 - rust-lang/rust#142845 (Enable textrel-on-minimal-lib for Windows)
 - rust-lang/rust#142850 (remove asm_goto feature annotation, for it is now stabilized)
 - rust-lang/rust#142860 (Notify me on tidy changes)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-22 09:49:14 +00:00
mejrs
b1d18129d1 Implement DesugaringKind::FormatLiteral 2025-06-22 10:58:25 +02:00
Jacob Pratt
bf63acfd35 Rollup merge of #142776 - dtolnay:hirattrstyle2, r=jdonszelmann
All HIR attributes are outer

Fixes https://github.com/rust-lang/rust/issues/142649. Closes https://github.com/rust-lang/rust/pull/142759.

All HIR attributes, including parsed and not yet parsed, will now be rendered as outer attributes by `rustc_hir_pretty`. The original style of the corresponding AST attribute(s) is not relevant for pretty printing, only for diagnostics.

r? ````@jdonszelmann````
2025-06-22 08:49:05 +02:00
Jacob Pratt
9c09dd51f9 Rollup merge of #142617 - lcnr:search_graph-3, r=compiler-errors
improve search graph docs, reset `encountered_overflow` between reruns

I think this shouldn't really matter for now. It will be more relevant for my current rework as we otherwise cannot partially reevaluate the root goal in case there has been overflow during the prervious iteration.

r? ````@BoxyUwU````
2025-06-22 08:49:04 +02:00
Jacob Pratt
431a822938 Rollup merge of #142600 - GrigorenkoPV:attributes/rustc_pub_transparent, r=jdonszelmann
Port `#[rustc_pub_transparent]` to the new attribute system

Very similar to rust-lang/rust#142498.

This is a part of rust-lang/rust#131229, so
r? ````@jdonszelmann````

---

For reference, the `#[rustc_pub_transparent]` attribute was created by me back in rust-lang/rust#129487.

As mentioned back in https://github.com/rust-lang/rust/pull/129487#discussion_r1730120385, this attribute does not check that it is applied to an ADT, because it checks that `#[repr(transparent)]` is also applied to the same item, which, in turn, should check for ADT.
2025-06-22 08:49:04 +02:00
bors
9972ebfcc2 Auto merge of #142675 - tmiasko:preserve-cache, r=oli-obk
Preserve caches in a call to shrink_to_fit

A small follow up to rust-lang/rust#142542.
2025-06-22 06:49:02 +00:00
Camille GILLOT
8e9552a6b5 Add a few inline directives in rustc_serialize. 2025-06-21 23:54:16 +00:00
Mark Rousskov
1f40573507 Skip collecting no-op DropGlue in vtables
Since 122662 this no longer gets used in vtables, so we're safe to fully
drop generating these empty functions. Those are eventually cleaned up
by LLVM, but it's wasteful to produce them in the first place.

This also adds a missing test for fn-ptr casts, which do still need to
generate no-op drop glue. It's possible a future optimization could
point all of those at the same drop glue (e.g., for *mut ()) rather than
for each separate type, but that would require extra work for CFI and
isn't particularly easy to do anyway.
2025-06-21 18:59:36 -04:00
Folkert de Vries
a123a36a1f centralize -Zmin-function-alignment logic 2025-06-22 00:47:10 +02:00
bors
d4e1159b8c Auto merge of #142546 - cjgillot:reachable-jump, r=compiler-errors
Only traverse reachable blocks in JumpThreading.

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

We only compute loop headers for reachable blocks. We shouldn't try to perform an opt on unreachable blocks anyway.
2025-06-21 18:54:29 +00:00