Commit Graph

1452 Commits

Author SHA1 Message Date
Matthias Krüger
1ee4ae9eb2 Rollup merge of #122937 - Zalathar:unbox, r=oli-obk
Unbox and unwrap the contents of `StatementKind::Coverage`

The payload of coverage statements was historically a structure with several fields, so it was boxed to avoid bloating `StatementKind`.

Now that the payload is a single relatively-small enum, we can replace `Box<Coverage>` with just `CoverageKind`.

This patch also adds a size assertion for `StatementKind`, to avoid accidentally bloating it in the future.

``@rustbot`` label +A-code-coverage
2024-03-24 17:08:16 +01:00
Scott McMurray
1a05106f94 Add+Use mir::BinOp::Cmp 2024-03-23 23:23:41 -07:00
antoyo
51eae7e6e8
Merge pull request #5 from mubarak23/remove-pass-test
Remove pass test
2024-03-23 17:45:16 -04:00
mubarak23
a67cd0c4fd add fn-arg-incomplete-pattern-drop-order.rs to the list 2024-03-23 22:18:22 +01:00
Matthew Maurer
abbe1ba6f2 CFI: Use Instance at callsites
We already use `Instance` at declaration sites when available to glean
additional information about possible abstractions of the type in use.
This does the same when possible at callsites as well.

The primary purpose of this change is to allow CFI to alter how it
generates type information for indirect calls through `Virtual`
instances.
2024-03-23 18:30:39 +00:00
mubarak23
0319a80c5b remove more test that have passed 2024-03-23 19:21:45 +01:00
mubarak23
56eab3c484 remove trailing space 2024-03-23 18:09:18 +01:00
mubarak23
9c81910732 fix rebase 2024-03-23 13:27:33 +01:00
Zalathar
95c7fde6b1 Unbox and unwrap the contents of StatementKind::Coverage
The payload of coverage statements was historically a structure with several
fields, so it was boxed to avoid bloating `StatementKind`.

Now that the payload is a single relatively-small enum, we can replace
`Box<Coverage>` with just `CoverageKind`.

This patch also adds a size assertion for `StatementKind`, to avoid
accidentally bloating it in the future.
2024-03-23 22:05:11 +11:00
bors
a951158565 Auto merge of #119552 - krtab:dead_code_priv_mod_pub_field, r=cjgillot,saethlin
Replace visibility test with reachability test in dead code detection

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

Also included is a fix for an error now flagged by the lint
2024-03-23 00:37:05 +00:00
antoyo
eea2f89c80
Merge pull request #2 from GuillaumeGomez/rm-build_sysroot-folder
Remove `build_sysroot` folder
2024-03-22 16:37:06 -04:00
Guillaume Gomez
da070d3569 Clean up y.sh path in CI 2024-03-22 20:37:55 +01:00
Shashank Trivedi
f16a006c23
CI cargo test added (#6) 2024-03-22 15:32:34 -04:00
Guillaume Gomez
7ccd8ce693 Add fmt check on build_system 2024-03-22 20:19:20 +01:00
Guillaume Gomez
52f6d5d589 Run test commands in the provided order 2024-03-22 20:19:20 +01:00
Guillaume Gomez
cde105a651 Move build_sysroot folder into build_system 2024-03-22 20:19:20 +01:00
Guillaume Gomez
ab1ea400a8 Format code 2024-03-22 20:19:20 +01:00
Michael Goulet
83eaede000 Make RawPtr take Ty and Mutbl separately 2024-03-22 11:13:29 -04:00
Mubarak Muhammad Aminu
906a2ab5b3
Update tests/failing-ui-tests.txt
Co-authored-by: antoyo <antoyo@users.noreply.github.com>
2024-03-22 15:51:48 +01:00
Mark Rousskov
c8cb091e1e Codegen const panic messages as function calls
This skips emitting extra arguments at every callsite (of which there
can be many). For a librustc_driver build with overflow checks enabled,
this cuts 0.7MB from the resulting binary.
2024-03-22 09:55:50 -04:00
mubarak23
67c6c7e00d add two fail test back to the list 2024-03-22 12:29:56 +01:00
mubarak23
486f6b7300 remove lto-abort.rs since it has passed 2024-03-21 17:04:03 +01:00
mubarak23
193d165e22 add back lto-abort.rs to the list 2024-03-21 16:47:20 +01:00
mubarak23
3cb807b6d3 remove more pass test from the lists 2024-03-21 16:19:49 +01:00
mubarak23
6a2f725a45 remove pass test 2024-03-21 16:00:30 +01:00
Guillaume Gomez
9b17b3d184 Simplify directory creation 2024-03-20 15:48:59 +01:00
Guillaume Gomez
51d27a63b8 Move cleanup of sysroot build into its own function 2024-03-20 15:16:52 +01:00
antoyo
17abfa7041
Merge pull request #1 from mubarak23/remove-debug-info
remove debug info from emitting
2024-03-19 09:27:02 -04:00
mubarak23
09dbab8fab change the debug option from true to limited 2024-03-19 13:49:07 +01:00
mubarak23
4ef3bac2a6 remove debug info from emitting 2024-03-19 08:54:11 +01:00
bors
678e62405f Auto merge of #122055 - compiler-errors:stabilize-atb, r=oli-obk
Stabilize associated type bounds (RFC 2289)

This PR stabilizes associated type bounds, which were laid out in [RFC 2289]. This gives us a shorthand to express nested type bounds that would otherwise need to be expressed with nested `impl Trait` or broken into several `where` clauses.

### What are we stabilizing?

We're stabilizing the associated item bounds syntax, which allows us to put bounds in associated type position within other bounds, i.e. `T: Trait<Assoc: Bounds...>`. See [RFC 2289] for motivation.

In all position, the associated type bound syntax expands into a set of two (or more) bounds, and never anything else (see "How does this differ[...]" section for more info).

Associated type bounds are stabilized in four positions:
* **`where` clauses (and APIT)** - This is equivalent to breaking up the bound into two (or more) `where` clauses. For example, `where T: Trait<Assoc: Bound>` is equivalent to `where T: Trait, <T as Trait>::Assoc: Bound`.
* **Supertraits** - Similar to above, `trait CopyIterator: Iterator<Item: Copy> {}`. This is almost equivalent to breaking up the bound into two (or more) `where` clauses; however, the bound on the associated item is implied whenever the trait is used. See #112573/#112629.
* **Associated type item bounds** - This allows constraining the *nested* rigid projections that are associated with a trait's associated types. e.g. `trait Trait { type Assoc: Trait2<Assoc2: Copy>; }`.
* **opaque item bounds (RPIT, TAIT)** - This allows constraining associated types that are associated with the opaque without having to *name* the opaque. For example, `impl Iterator<Item: Copy>` defines an iterator whose item is `Copy` without having to actually name that item bound.

The latter three are not expressible in surface Rust (though for associated type item bounds, this will change in #120752, which I don't believe should block this PR), so this does represent a slight expansion of what can be expressed in trait bounds.

### How does this differ from the RFC?

Compared to the RFC, the current implementation *always* desugars associated type bounds to sets of `ty::Clause`s internally. Specifically, it does *not* introduce a position-dependent desugaring as laid out in [RFC 2289], and in particular:
* It does *not* desugar to anonymous associated items in associated type item bounds.
* It does *not* desugar to nested RPITs in RPIT bounds, nor nested TAITs in TAIT bounds.

This position-dependent desugaring laid out in the RFC existed simply to side-step limitations of the trait solver, which have mostly been fixed in #120584. The desugaring laid out in the RFC also added unnecessary complication to the design of the feature, and introduces its own limitations to, for example:
* Conditionally lowering to nested `impl Trait` in certain positions such as RPIT and TAIT means that we inherit the limitations of RPIT/TAIT, namely lack of support for higher-ranked opaque inference. See this code example: https://github.com/rust-lang/rust/pull/120752#issuecomment-1979412531.
* Introducing anonymous associated types makes traits no longer object safe, since anonymous associated types are not nameable, and all associated types must be named in `dyn` types.

This last point motivates why this PR is *not* stabilizing support for associated type bounds in `dyn` types, e.g, `dyn Assoc<Item: Bound>`. Why? Because `dyn` types need to have *concrete* types for all associated items, this would necessitate a distinct lowering for associated type bounds, which seems both complicated and unnecessary compared to just requiring the user to write `impl Trait` themselves. See #120719.

### Implementation history:

Limited to the significant behavioral changes and fixes and relevant PRs, ping me if I left something out--
* #57428
* #108063
* #110512
* #112629
* #120719
* #120584

Closes #52662

[RFC 2289]: https://rust-lang.github.io/rfcs/2289-associated-type-bounds.html
2024-03-19 00:04:09 +00:00
Erik Desjardins
ff2b405a3c revert changes and just delete the fixme
Avoiding the naming didn't have any meaningful perf impact.
2024-03-16 11:11:53 -04:00
antoyo
7ff5d39980
Merge pull request #469 from tempdragon/master
Clippy related fixes
2024-03-16 10:34:22 -04:00
tempdragon
0a493514d7 fix(lifetime): Add lifetimes back. 2024-03-16 21:30:04 +08:00
tempdragon
3b01fba0f5 fix(intrinsic/mod.rs): Update comments 2024-03-16 21:16:41 +08:00
tempdragon
4e4efb9b9e feat(ci): Add clippy check for both master and non-master 2024-03-16 12:30:52 +08:00
tempdragon
89acb108b4 feat(ci): Install clippy in ci.yml(But no testing)
Done incrementally to avoid potential failure.
2024-03-16 12:24:05 +08:00
tempdragon
225a32f7d0 Revert "feat(CI): Add clippy check to workflow."
This reverts commit f6cab2cd1e.
2024-03-16 12:14:01 +08:00
tempdragon
653118e797 feat(clippy): Suppress lint suspicious_else_formatting temporarily 2024-03-16 12:08:39 +08:00
tempdragon
f6cab2cd1e feat(CI): Add clippy check to workflow. 2024-03-16 12:05:56 +08:00
tempdragon
390f9064e1 revert(lifetime): Add "needless" lifetime(s) and allow it in clippy
This reverts commit ad97b8c061.
2024-03-16 10:17:35 +08:00
tempdragon
878f572d0e fix(comments): Add some info and revert else if
1. Put the `else if` comment in intrinsic/mod.rs away
2. Add TODO to debuginfo.rs in `make_mir_scope()`
2024-03-16 10:07:52 +08:00
tempdragon
817d2f298e fix(pattern_type_mismatch)): Fix mismatch with ref/deref 2024-03-16 09:43:16 +08:00
Erik Desjardins
9476fe7c3b avoid naming LLVM basic blocks when fewer_names is true 2024-03-15 15:53:49 -04:00
antoyo
b5d61f1c9e
Merge pull request #471 from GuillaumeGomez/intrinsics-conversions
Regen intrinsics conversions
2024-03-14 14:28:03 -04:00
Guillaume Gomez
6c9156717e Regen intrinsics conversions 2024-03-13 16:44:54 +01:00
Arthur Carcano
a64942a3e9 Mark codegen_gcc fields used only on feature master as such
The dead_code lint was previously eroneously missing those.
Since this lint bug has been fixed, the unused fields need
to be feature gated.
2024-03-12 10:59:41 +01:00
Oli Scherer
e7795ed0fe Some comment nits 2024-03-12 08:51:20 +00:00
Oli Scherer
6d573e9e31 Ensure nested allocations in statics do not get deduplicated 2024-03-12 05:53:46 +00:00
Oli Scherer
8fdfbf54ff Make some functions private that are only ever used in the same module 2024-03-12 05:53:46 +00:00