Commit Graph

1396 Commits

Author SHA1 Message Date
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
Oli Scherer
e3a9b1dbec Check whether a static is mutable instead of passing it down 2024-03-12 05:53:46 +00:00
Guillaume Gomez
be24d391bc Use published gccjit dependency instead of git repository 2024-03-11 16:29:00 +01:00
Jacob Pratt
a6202e2a77 Rollup merge of #121840 - oli-obk:freeze, r=dtolnay
Expose the Freeze trait again (unstably) and forbid implementing it manually

non-emoji version of https://github.com/rust-lang/rust/pull/121501

cc #60715

This trait is useful for generic constants (associated consts of generic traits). See the test (`tests/ui/associated-consts/freeze.rs`) added in this PR for a usage example. The builtin `Freeze` trait is the only way to do it, users cannot work around this issue.

It's also a useful trait for building some very specific abstrations, as shown by the usage by the `zerocopy` crate: https://github.com/google/zerocopy/issues/941

cc ```@RalfJung```

T-lang signed off on reexposing this unstably: https://github.com/rust-lang/rust/pull/121501#issuecomment-1969827742
2024-03-11 03:47:19 -04:00
tempdragon
a7d39b852a fix(from_low_high): Renamed according to clippy requirements
Changed for clippy naming convention requirement:
```
warning: methods called `from_*` usually take no `self`
   --> src/int.rs:996:22
    |
996 |     fn from_low_high(&self, typ: Type<'gcc>, low: i64, high: i64) -> RValue<'gcc> {
    |                      ^^^^^
    |
    = help: consider choosing a less ambiguous name
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention
    = note: `#[warn(clippy::wrong_self_convention)]` on by default
```
2024-03-11 12:55:28 +08:00
tempdragon
3fd9db31bf fix(fmt): Rewrite a condition according to clippy
This looks like an (inverted) exclusive-or but I still leave it as it is in clippy.
2024-03-11 12:41:37 +08:00
tempdragon
d2cda90e4e fix(clippy): redundant variables in simd.rs 2024-03-11 12:36:39 +08:00