]> git.lizzy.rs Git - rust.git/log
rust.git
23 months agoStop resolving lifetime elision on HIR.
Camille GILLOT [Mon, 23 May 2022 14:27:52 +0000 (16:27 +0200)]
Stop resolving lifetime elision on HIR.

23 months agoMove fn parameter ribs outwards.
Camille GILLOT [Sun, 22 May 2022 21:31:39 +0000 (23:31 +0200)]
Move fn parameter ribs outwards.

23 months agoCheck that we do not ICE when anonymous lifetimes appear in AnonConst.
Camille GILLOT [Wed, 6 Jul 2022 16:27:43 +0000 (18:27 +0200)]
Check that we do not ICE when anonymous lifetimes appear in AnonConst.

Fixes #98932.

23 months agoReplace LifetimeRes::Anonymous by LifetimeRes::Infer.
Camille GILLOT [Mon, 13 Jun 2022 06:22:06 +0000 (08:22 +0200)]
Replace LifetimeRes::Anonymous by LifetimeRes::Infer.

23 months agoRemove the distinction between LifetimeName::Implicit and LifetimeName::Underscore.
Camille GILLOT [Sun, 22 May 2022 08:22:20 +0000 (10:22 +0200)]
Remove the distinction between LifetimeName::Implicit and LifetimeName::Underscore.

23 months agoDo not produce extra lifetime parameters when not needed.
Camille GILLOT [Mon, 13 Jun 2022 05:36:45 +0000 (07:36 +0200)]
Do not produce extra lifetime parameters when not needed.

23 months agoAuto merge of #99680 - workingjubilee:revert-revert-icf, r=Mark-Simulacrum
bors [Tue, 26 Jul 2022 13:31:31 +0000 (13:31 +0000)]
Auto merge of #99680 - workingjubilee:revert-revert-icf, r=Mark-Simulacrum

Revert "Revert "Use ICF (identical code folding) for building rustc""

This reverts commit rust-lang/rust@45575d23f316af7476ccd0a895234ac59c47a6be,
thereby enabling identical code folding again.

Closes #99440 (again).

23 months agoAuto merge of #99753 - Dylan-DPC:rollup-k046940, r=Dylan-DPC
bors [Tue, 26 Jul 2022 10:35:25 +0000 (10:35 +0000)]
Auto merge of #99753 - Dylan-DPC:rollup-k046940, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #99618 (handle consts with param/infer in `const_eval_resolve` better)
 - #99666 (Restore `Opaque` behavior to coherence check)
 - #99692 (interpret, ptr_offset_from: refactor and test too-far-apart check)
 - #99739 (Remove erroneous E0133 code from an error message.)
 - #99748 (Use full type name instead of just saying `impl Trait` in "captures lifetime" error)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoRollup merge of #99748 - compiler-errors:better-impl-trait-printing, r=fee1-dead
Dylan DPC [Tue, 26 Jul 2022 08:57:00 +0000 (14:27 +0530)]
Rollup merge of #99748 - compiler-errors:better-impl-trait-printing, r=fee1-dead

Use full type name instead of just saying `impl Trait` in "captures lifetime" error

I think this is very useful, especially when there's >1 `impl Trait`, and it just means passing around a bit more info that we already have access to.

23 months agoRollup merge of #99739 - nnethercote:rm-E0133, r=Dylan-DPC
Dylan DPC [Tue, 26 Jul 2022 08:56:59 +0000 (14:26 +0530)]
Rollup merge of #99739 - nnethercote:rm-E0133, r=Dylan-DPC

Remove erroneous E0133 code from an error message.

This error message is about `derive` and `packed`, but E0133 is for
"Unsafe code was used outside of an unsafe function or block".

r? ``@estebank``

23 months agoRollup merge of #99692 - RalfJung:too-far, r=oli-obk
Dylan DPC [Tue, 26 Jul 2022 08:56:58 +0000 (14:26 +0530)]
Rollup merge of #99692 - RalfJung:too-far, r=oli-obk

interpret, ptr_offset_from: refactor and test too-far-apart check

We didn't have any tests for the "too far apart" message, and indeed that check mostly relied on the in-bounds check and was otherwise probably not entirely correct... so I rewrote that check, and it is before the in-bounds check so we can test it separately.

23 months agoRollup merge of #99666 - compiler-errors:issue-99663, r=lcnr
Dylan DPC [Tue, 26 Jul 2022 08:56:57 +0000 (14:26 +0530)]
Rollup merge of #99666 - compiler-errors:issue-99663, r=lcnr

Restore `Opaque` behavior to coherence check

Fixes #99663.

This broke in 84c3fcd2a0285c06a682c9b064640084e4c7271b. I'm not exactly certain that adding this behavior back is necessarily correct, but at least the UI test I provided may stimulate some thoughts.

I think delaying a bug here is certainly not correct in the case of opaques -- if we want to change coherence behavior for opaques, then we should at least be emitting a new error.

r? ``@lcnr``

23 months agoRollup merge of #99618 - compiler-errors:uhh-idk, r=lcnr
Dylan DPC [Tue, 26 Jul 2022 08:56:56 +0000 (14:26 +0530)]
Rollup merge of #99618 - compiler-errors:uhh-idk, r=lcnr

handle consts with param/infer in `const_eval_resolve` better

This PR addresses [this thread here](https://github.com/rust-lang/rust/pull/99449#discussion_r924141230). Was this the change you were looking for ``@lcnr?``

Interestingly, one test has begun to pass. Was that expected?

r? ``@lcnr``

23 months agoAuto merge of #99677 - pietroalbini:pa-fix-97786-perf-regression, r=Mark-Simulacrum
bors [Tue, 26 Jul 2022 07:29:29 +0000 (07:29 +0000)]
Auto merge of #99677 - pietroalbini:pa-fix-97786-perf-regression, r=Mark-Simulacrum

Remove new allocations from `imported_source_files`

https://github.com/rust-lang/rust/pull/97786 introduced a [large performance regression](https://github.com/rust-lang/rust/pull/97786#issuecomment-1176552836). After some local investigation it turns out the allocations performed by my change were the cause of the perf regression. This PR refactors my change to remove those allocations.

23 months agoAddress nits, move substs replacement to separate function
Michael Goulet [Tue, 26 Jul 2022 00:43:29 +0000 (00:43 +0000)]
Address nits, move substs replacement to separate function

23 months agoUse real opaque type instead of just saying impl Trait
Michael Goulet [Tue, 26 Jul 2022 06:19:58 +0000 (06:19 +0000)]
Use real opaque type instead of just saying impl Trait

23 months agoAuto merge of #99745 - JohnTitor:rollup-lvrie64, r=JohnTitor
bors [Tue, 26 Jul 2022 04:28:41 +0000 (04:28 +0000)]
Auto merge of #99745 - JohnTitor:rollup-lvrie64, r=JohnTitor

Rollup of 7 pull requests

Successful merges:

 - #98211 (Implement `fs::get_path` for FreeBSD.)
 - #99353 (Slightly improve mismatched GAT where clause error)
 - #99593 (Suggest removing the tuple struct field for the unwrapped value)
 - #99615 (Remove some explicit `self.infcx` for `FnCtxt`, which already derefs into `InferCtxt`)
 - #99711 (Remove reachable coverage without counters)
 - #99718 (Avoid `&str`/`Symbol` to `String` conversions)
 - #99720 (Sync rustc_codegen_cranelift)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoRollup merge of #99720 - bjorn3:sync_cg_clif-2022-07-25, r=bjorn3
Yuki Okushi [Tue, 26 Jul 2022 04:12:24 +0000 (13:12 +0900)]
Rollup merge of #99720 - bjorn3:sync_cg_clif-2022-07-25, r=bjorn3

Sync rustc_codegen_cranelift

This time most of the changes are bugfixes. No exciting new features to report. Thanks `@matthiaskrgr` for reporting a bunch of crashes!

r? `@ghost`

`@rustbot` label +A-codegen +A-cranelift +T-compiler

23 months agoRollup merge of #99718 - TaKO8Ki:avoid-&str-symbol-to-string-conversions, r=michaelwo...
Yuki Okushi [Tue, 26 Jul 2022 04:12:23 +0000 (13:12 +0900)]
Rollup merge of #99718 - TaKO8Ki:avoid-&str-symbol-to-string-conversions, r=michaelwoerister

Avoid `&str`/`Symbol` to `String` conversions

follow-up to #99342 and #98668

23 months agoRollup merge of #99711 - tmiasko:coverage, r=wesleywiser
Yuki Okushi [Tue, 26 Jul 2022 04:12:22 +0000 (13:12 +0900)]
Rollup merge of #99711 - tmiasko:coverage, r=wesleywiser

Remove reachable coverage without counters

Remove reachable coverage without counters to maintain invariant that
either there is no coverage at all or there is a live coverage counter
left that provides the function source hash.

The motivating example would be a following closure:

```rust
    let f = |x: bool| {
        debug_assert!(x);
    };
```

Which, with span changes from #93967, with disabled debug assertions,
after the final CFG simplifications but before removal of dead blocks,
gives rise to MIR:

```rust
fn main::{closure#0}(_1: &[closure@a.rs:2:13: 2:22], _2: bool) -> () {
    debug x => _2;
    let mut _0: ();

    bb0: {
        Coverage::Expression(4294967295) = 1 - 2;
        return;
    }

    ...
}
```

Which also makes the initial instrumentation quite suspect, although
this pull request doesn't attempt to address that aspect directly.

Fixes #98833.

r? ``@wesleywiser`` ``@richkadel``

23 months agoRollup merge of #99615 - compiler-errors:remove-some-explicit-infcx, r=lcnr
Yuki Okushi [Tue, 26 Jul 2022 04:12:21 +0000 (13:12 +0900)]
Rollup merge of #99615 - compiler-errors:remove-some-explicit-infcx, r=lcnr

Remove some explicit `self.infcx` for `FnCtxt`, which already derefs into `InferCtxt`

The use of `self.infcx.method_on_infcx` vs `self.method_on_infcx` when `self` is a `FnCtxt` is a bit inconsistent, so I'm moving some `self.infcx` usages I found to just use autoderef

23 months agoRollup merge of #99593 - TaKO8Ki:suggest-removing-tuple-struct-field, r=compiler...
Yuki Okushi [Tue, 26 Jul 2022 04:12:20 +0000 (13:12 +0900)]
Rollup merge of #99593 - TaKO8Ki:suggest-removing-tuple-struct-field, r=compiler-errors

Suggest removing the tuple struct field for the unwrapped value

fixes #99416

23 months agoRollup merge of #99353 - compiler-errors:gat-where-clause-mismatch, r=cjgillot
Yuki Okushi [Tue, 26 Jul 2022 04:12:19 +0000 (13:12 +0900)]
Rollup merge of #99353 - compiler-errors:gat-where-clause-mismatch, r=cjgillot

Slightly improve mismatched GAT where clause error

This makes the error reporting a bit more standardized between `where` on GATs and functions.

cc #99206 (`@BoxyUwU),` don't want to mark this as as "fixed" because they're still not perfect, but this is still an improvement IMO so I want to land it incrementally.

regarding "consider adding where clause to trait definition", we don't actually do that for methods as far as i can tell? i could file an issue to look into that maybe.

23 months agoRollup merge of #98211 - devnexen:get_path_freebsd, r=Mark-Simulacrum
Yuki Okushi [Tue, 26 Jul 2022 04:12:18 +0000 (13:12 +0900)]
Rollup merge of #98211 - devnexen:get_path_freebsd, r=Mark-Simulacrum

Implement `fs::get_path` for FreeBSD.

Using `F_KINFO` fcntl flag, the kf_structsize field
needs to be set beforehand for that effect.

23 months agoRemove erroneous E0133 code from an error message.
Nicholas Nethercote [Tue, 26 Jul 2022 00:31:06 +0000 (10:31 +1000)]
Remove erroneous E0133 code from an error message.

This error message is about `derive` and `packed`, but E0133 is for
"Unsafe code was used outside of an unsafe function or block".

23 months agoAuto merge of #98989 - dpaoliello:rawdylibbin, r=michaelwoerister
bors [Tue, 26 Jul 2022 01:47:34 +0000 (01:47 +0000)]
Auto merge of #98989 - dpaoliello:rawdylibbin, r=michaelwoerister

Enable raw-dylib for bin crates

Fixes #93842

When `raw-dylib` is used in a `bin` crate, we need to collect all of the `raw-dylib` functions, generate the import library and add that to the linker command line.

I also changed the tests so that 1) the C++ dlls are created after the Rust dlls, thus there is no chance of accidentally using them in the Rust linking process and 2) disabled generating import libraries when building with MSVC.

23 months agoRemove some explicit self.infcx for fcx, which derefs into infcx
Michael Goulet [Fri, 22 Jul 2022 18:49:35 +0000 (18:49 +0000)]
Remove some explicit self.infcx for fcx, which derefs into infcx

23 months agohandle consts with param/infer in const_eval_resolve better
Michael Goulet [Fri, 22 Jul 2022 01:46:43 +0000 (01:46 +0000)]
handle consts with param/infer in const_eval_resolve better

23 months agoRestore Opaque behavior to coherence check
Michael Goulet [Sun, 24 Jul 2022 10:34:35 +0000 (10:34 +0000)]
Restore Opaque behavior to coherence check

23 months agoAuto merge of #99735 - JohnTitor:rollup-d93jyr2, r=JohnTitor
bors [Mon, 25 Jul 2022 22:57:23 +0000 (22:57 +0000)]
Auto merge of #99735 - JohnTitor:rollup-d93jyr2, r=JohnTitor

Rollup of 9 pull requests

Successful merges:

 - #92390 (Constify a few `(Partial)Ord` impls)
 - #97077 (Simplify some code that depend on Deref)
 - #98710 (correct the output of a `capacity` method example)
 - #99084 (clarify how write_bytes can lead to UB due to invalid values)
 - #99178 (Lighten up const_prop_lint, reusing const_prop)
 - #99673 (don't ICE on invalid dyn calls)
 - #99703 (Expose size_hint() for TokenStream's iterator)
 - #99709 (`Inherited` always has `TypeckResults` available)
 - #99713 (Fix sidebar background)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoImplement `fs::get_path` for FreeBSD.
David CARLIER [Fri, 17 Jun 2022 19:31:59 +0000 (20:31 +0100)]
Implement `fs::get_path` for FreeBSD.

Using `F_KINFO` fcntl flag, the kf_structsize field
needs to be set beforehand for that effect.

23 months agoRollup merge of #99713 - GuillaumeGomez:fix-sidebar-background, r=notriddle
Yuki Okushi [Mon, 25 Jul 2022 22:14:52 +0000 (07:14 +0900)]
Rollup merge of #99713 - GuillaumeGomez:fix-sidebar-background, r=notriddle

Fix sidebar background

Fixes #99691.

cc `@jsha`
r? `@notriddle`

23 months agoRollup merge of #99709 - lcnr:rm-MaybeTypeckResults, r=compiler-errors
Yuki Okushi [Mon, 25 Jul 2022 22:14:51 +0000 (07:14 +0900)]
Rollup merge of #99709 - lcnr:rm-MaybeTypeckResults, r=compiler-errors

`Inherited` always has `TypeckResults` available

23 months agoRollup merge of #99703 - dtolnay:tokenstreamsizehint, r=petrochenkov
Yuki Okushi [Mon, 25 Jul 2022 22:14:50 +0000 (07:14 +0900)]
Rollup merge of #99703 - dtolnay:tokenstreamsizehint, r=petrochenkov

Expose size_hint() for TokenStream's iterator

The iterator for `proc_macro::TokenStream` is a wrapper around a `Vec` iterator:

https://github.com/rust-lang/rust/blob/babff2211e3ae9ef52852dc1b01f3eacdd94c12e/library/proc_macro/src/lib.rs#L363-L371

so it can cheaply provide a perfectly precise size hint, with just a pointer subtraction:

https://github.com/rust-lang/rust/blob/babff2211e3ae9ef52852dc1b01f3eacdd94c12e/library/alloc/src/vec/into_iter.rs#L170-L177

I need the size hint in syn (https://github.com/dtolnay/syn/blob/1.0.98/src/buffer.rs) to reduce allocations when converting TokenStream into syn's internal TokenBuffer representation.

Aside from `size_hint`, the other non-default methods in `std::vec::IntoIter`'s `Iterator` impl are `advance_by`, `count`, and `__iterator_get_unchecked`. I've included `count` in this PR since it is trivial. I did not include `__iterator_get_unchecked` because it is spoopy and I did not feel like dealing with that. Lastly, I did not include `advance_by` because that requires `feature(iter_advance_by)` (https://github.com/rust-lang/rust/issues/77404) and I noticed this comment at the top of libproc_macro:

https://github.com/rust-lang/rust/blob/babff2211e3ae9ef52852dc1b01f3eacdd94c12e/library/proc_macro/src/lib.rs#L20-L22

23 months agoRollup merge of #99673 - RalfJung:interpret-invalid-dyn, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:49 +0000 (07:14 +0900)]
Rollup merge of #99673 - RalfJung:interpret-invalid-dyn, r=oli-obk

don't ICE on invalid dyn calls

Due to https://github.com/rust-lang/rust/issues/50781 this is actually reachable.
Fixes https://github.com/rust-lang/miri/issues/2432

r? ``@oli-obk``

23 months agoRollup merge of #99178 - Dajamante:clean_up, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:48 +0000 (07:14 +0900)]
Rollup merge of #99178 - Dajamante:clean_up, r=oli-obk

Lighten up const_prop_lint, reusing const_prop

r? `@oli-obk`

23 months agoRollup merge of #99084 - RalfJung:write_bytes, r=thomcc
Yuki Okushi [Mon, 25 Jul 2022 22:14:46 +0000 (07:14 +0900)]
Rollup merge of #99084 - RalfJung:write_bytes, r=thomcc

clarify how write_bytes can lead to UB due to invalid values

Fixes https://github.com/rust-lang/unsafe-code-guidelines/issues/330

Cc ``@5225225``

23 months agoRollup merge of #98710 - mojave2:string, r=JohnTitor
Yuki Okushi [Mon, 25 Jul 2022 22:14:45 +0000 (07:14 +0900)]
Rollup merge of #98710 - mojave2:string, r=JohnTitor

correct the output of a `capacity` method example

The output of this example in std::alloc is different from which shown in the comment. I have tested it on both Linux and Windows.

23 months agoRollup merge of #97077 - ouz-a:Optimize-backend, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:44 +0000 (07:14 +0900)]
Rollup merge of #97077 - ouz-a:Optimize-backend, r=oli-obk

Simplify some code that depend on Deref

Now that we can assume #97025 works, it's safe to expect Deref is always in the first place of projections. With this, I was able to simplify some code that depended on Deref's place in projections. When we are able to move Derefer before `ElaborateDrops` successfully we will be able to optimize more places.

r? `@oli-obk`

23 months agoRollup merge of #92390 - fee1-dead-contrib:const_cmp, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 22:14:43 +0000 (07:14 +0900)]
Rollup merge of #92390 - fee1-dead-contrib:const_cmp, r=oli-obk

Constify a few `(Partial)Ord` impls

Only a few `impl`s are constified for now, as #92257 has not landed in the bootstrap compiler yet and quite a few impls would need that fix.

This unblocks #92228, which unblocks marking iterator methods as `default_method_body_is_const`.

23 months agoAuto merge of #97313 - cjgillot:ast-lifetimes-anon, r=petrochenkov
bors [Mon, 25 Jul 2022 20:02:55 +0000 (20:02 +0000)]
Auto merge of #97313 - cjgillot:ast-lifetimes-anon, r=petrochenkov

Resolve function lifetime elision on the AST

~Based on https://github.com/rust-lang/rust/pull/97720~

Lifetime elision for functions is purely syntactic in nature, so can be resolved on the AST.
This PR replicates the elision logic and diagnostics on the AST, and replaces HIR-based resolution by a `delay_span_bug`.

This refactor allows for more consistent diagnostics, which don't have to guess the original code from HIR.

r? `@petrochenkov`

23 months agoClippy fallout.
Camille GILLOT [Mon, 6 Jun 2022 18:26:41 +0000 (20:26 +0200)]
Clippy fallout.

23 months agoUpdate file description.
Camille GILLOT [Fri, 22 Jul 2022 18:15:14 +0000 (20:15 +0200)]
Update file description.

23 months agoReport elision failures on the AST.
Camille GILLOT [Sun, 5 Jun 2022 16:33:09 +0000 (18:33 +0200)]
Report elision failures on the AST.

23 months agoAuto merge of #99722 - RalfJung:miri, r=RalfJung
bors [Mon, 25 Jul 2022 16:48:01 +0000 (16:48 +0000)]
Auto merge of #99722 - RalfJung:miri, r=RalfJung

update Miri

Fixes https://github.com/rust-lang/rust/issues/99664
r? `@ghost`

23 months agoupdate Miri
Ralf Jung [Mon, 25 Jul 2022 15:23:59 +0000 (11:23 -0400)]
update Miri

23 months agoUpdate list of allowed dependencies
bjorn3 [Mon, 25 Jul 2022 15:08:20 +0000 (17:08 +0200)]
Update list of allowed dependencies

Cranelift started depending on a couple of new crates

23 months agoMerge commit 'c19edfd71a1d0ddef86c2c67fdb40718d40a72b4' into sync_cg_clif-2022-07-25
bjorn3 [Mon, 25 Jul 2022 14:07:57 +0000 (16:07 +0200)]
Merge commit 'c19edfd71a1d0ddef86c2c67fdb40718d40a72b4' into sync_cg_clif-2022-07-25

23 months agoRustup to rustc 1.64.0-nightly (7fe022f5a 2022-07-24)
bjorn3 [Mon, 25 Jul 2022 14:06:39 +0000 (16:06 +0200)]
Rustup to rustc 1.64.0-nightly (7fe022f5a 2022-07-24)

23 months agoAuto merge of #85673 - csmoe:export-exe-sym, r=bjorn3
bors [Mon, 25 Jul 2022 14:04:40 +0000 (14:04 +0000)]
Auto merge of #85673 - csmoe:export-exe-sym, r=bjorn3

RFC-2841: add codegen flag export symbols from executable

Closes #84161
r? `@nikomatsakis` `@Mark-Simulacrum`

23 months agoSync from rust 2f320a224e827b400be25966755a621779f797cc
bjorn3 [Mon, 25 Jul 2022 14:00:44 +0000 (16:00 +0200)]
Sync from rust 2f320a224e827b400be25966755a621779f797cc

23 months agoremoved CanConstProp + Visitor
Aïssata [Mon, 25 Jul 2022 13:54:49 +0000 (13:54 +0000)]
removed CanConstProp + Visitor

23 months agoUpdate Cranelift to 0.85.3
bjorn3 [Mon, 25 Jul 2022 13:50:43 +0000 (13:50 +0000)]
Update Cranelift to 0.85.3

This fixes a couple of potential miscompilations. None affect cg_clif on
x86_64, but one may affect cg_clif on AArch64.

23 months agoMerge pull request #1247 from bjorn3/melt_some_ice
bjorn3 [Mon, 25 Jul 2022 13:46:04 +0000 (15:46 +0200)]
Merge pull request #1247 from bjorn3/melt_some_ice

Melt some ICE

23 months agoavoid `&str`/`Symbol` to `String` conversions
Takayuki Maeda [Mon, 25 Jul 2022 13:40:00 +0000 (22:40 +0900)]
avoid `&str`/`Symbol` to `String` conversions

23 months agoremove `is_local_span` as it is no longer used
Takayuki Maeda [Mon, 25 Jul 2022 13:37:14 +0000 (22:37 +0900)]
remove `is_local_span` as it is no longer used

23 months agoLighten up const_prop_lint, reusing const_prop
Aïssata [Tue, 12 Jul 2022 12:17:58 +0000 (12:17 +0000)]
Lighten up const_prop_lint, reusing const_prop

23 months agoFix -Zpolymorphize
bjorn3 [Mon, 25 Jul 2022 13:17:53 +0000 (13:17 +0000)]
Fix -Zpolymorphize

23 months agoFix size_of_val and min_align_of_val for truly unsized types
bjorn3 [Mon, 25 Jul 2022 11:35:24 +0000 (11:35 +0000)]
Fix size_of_val and min_align_of_val for truly unsized types

23 months agoAdd GUI test to prevent sidebar background regression
Guillaume Gomez [Mon, 25 Jul 2022 12:35:06 +0000 (14:35 +0200)]
Add GUI test to prevent sidebar background regression

23 months agoFix sidebar background-color on mobile
Guillaume Gomez [Mon, 25 Jul 2022 12:19:26 +0000 (14:19 +0200)]
Fix sidebar background-color on mobile

23 months agoRemove reachable coverage without counters
Tomasz Miąsko [Mon, 25 Jul 2022 00:00:00 +0000 (00:00 +0000)]
Remove reachable coverage without counters

Remove reachable coverage without counters to maintain invariant that
either there is no coverage at all or there is a live coverage counter
left that provides the function source hash.

The motivating example would be a following closure:

```rust
    let f = |x: bool| {
        debug_assert!(x);
    };
```

Which, with span changes from #93967, with disabled debug assertions,
after the final CFG simplifications but before removal of dead blocks,
gives rise to MIR:

```rust
fn main::{closure#0}(_1: &[closure@a.rs:2:13: 2:22], _2: bool) -> () {
    debug x => _2;
    let mut _0: ();

    bb0: {
        Coverage::Expression(4294967295) = 1 - 2;
        return;
    }

    ...
}
```

23 months agoError when trying to define variadic functions
bjorn3 [Mon, 25 Jul 2022 11:18:34 +0000 (11:18 +0000)]
Error when trying to define variadic functions

They aren't yet supported by Cranelift

23 months ago`Inherited` always has `TypeckResults` available
lcnr [Mon, 25 Jul 2022 11:11:07 +0000 (13:11 +0200)]
`Inherited` always has `TypeckResults` available

23 months agoAuto merge of #99707 - JohnTitor:rollup-74rb8vq, r=JohnTitor
bors [Mon, 25 Jul 2022 10:33:32 +0000 (10:33 +0000)]
Auto merge of #99707 - JohnTitor:rollup-74rb8vq, r=JohnTitor

Rollup of 7 pull requests

Successful merges:

 - #95040 (protect `std::io::Take::limit` from overflow in `read`)
 - #95916 (kmc-solid: Use `libc::abort` to abort a program)
 - #99494 (Use non-relocatable code in nofile-limit.rs test)
 - #99581 (Improve error messages involving `derive` and `packed`.)
 - #99643 (Add `sign-ext` target feature to the WASM target)
 - #99659 (Use `VecMap::get` in `ConstraintLocator::check`)
 - #99690 (add miri-track-caller to more intrinsic-exposing methods)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoRollup merge of #99690 - RalfJung:miri-track-caller, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:55 +0000 (18:46 +0900)]
Rollup merge of #99690 - RalfJung:miri-track-caller, r=Mark-Simulacrum

add miri-track-caller to more intrinsic-exposing methods

Follow-up to https://github.com/rust-lang/rust/pull/98674: I went through the Miri test suite to find more functions that would benefit from Miri backtrace pruning, and this is what I found.

Basically anything that just exposes a potentially-UB intrinsic to the user should get this treatment.

23 months agoRollup merge of #99659 - compiler-errors:opaque-type-nit, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 09:46:54 +0000 (18:46 +0900)]
Rollup merge of #99659 - compiler-errors:opaque-type-nit, r=oli-obk

Use `VecMap::get` in `ConstraintLocator::check`

Also rename the `def_id` param to `item_def_id` because that's easily confused with `self.def_id` (which is the opaque ty did).

23 months agoRollup merge of #99643 - daxpedda:sign-ext-wasm, r=oli-obk
Yuki Okushi [Mon, 25 Jul 2022 09:46:52 +0000 (18:46 +0900)]
Rollup merge of #99643 - daxpedda:sign-ext-wasm, r=oli-obk

Add `sign-ext` target feature to the WASM target

Some target features are still missing from that list.
See #97808 for basically the same PR by `@alexcrichton.`

Related issue: #96472.
PR introducing this issue: #87402.

23 months agoRollup merge of #99581 - nnethercote:improve-derive-packed-errors, r=estebank
Yuki Okushi [Mon, 25 Jul 2022 09:46:51 +0000 (18:46 +0900)]
Rollup merge of #99581 - nnethercote:improve-derive-packed-errors, r=estebank

Improve error messages involving `derive` and `packed`.

There are two errors involving `derive` and `packed`.

```
`#[derive]` can't be derived on a `#[repr(packed)]` struct with type or const parameters
`#[derive]` can't be derived on a `#[repr(packed)]` struct that does not derive Copy
```
The second one overstates things. It is possible to use derive on a
repr(packed) struct that doesn't derive Copy in two cases.
- If all the fields within the struct meet the required alignment: 1 for
  `repr(packed)`, or `N` for `repr(packed(N))`.
- If `Default` is the only trait derived.

This commit improves things in a few ways.
- Changes the errors to say `this trait can't be derived on this ...`.
  This is more accurate, because it's just *this* trait and *this*
  packed struct that are a problem, not *all* derived traits on *all*
  packed structs.
- Adds more details to the "ERROR" lines in the test case, enough to
  distinguish between the two error messages.
- Adds more cases to the test case that don't cause errors, e.g. `Default`
  derives.
- Uses a wider variety of builtin traits in the test case, for better coverage.

r? `@estebank`

23 months agoRollup merge of #99494 - tmiasko:no-pie, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:50 +0000 (18:46 +0900)]
Rollup merge of #99494 - tmiasko:no-pie, r=Mark-Simulacrum

Use non-relocatable code in nofile-limit.rs test

To avoid using static-pie which is not essential to the test but which
was reported to cause problems on Void Linux where glibc is build
without support for static-pie.

23 months agoRollup merge of #95916 - solid-rs:feat-kmc-solid-abort, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:48 +0000 (18:46 +0900)]
Rollup merge of #95916 - solid-rs:feat-kmc-solid-abort, r=Mark-Simulacrum

kmc-solid: Use `libc::abort` to abort a program

This PR updates the target-specific abort subroutine for the [`*-kmc-solid_*`](https://doc.rust-lang.org/nightly/rustc/platform-support/kmc-solid.html) Tier 3 targets.

The current implementation uses a `hlt` instruction, which is the most direct way to notify a connected debugger but is not the most flexible way. This PR changes it to call the `abort` libc function, making it possible for a system designer to override its behavior as they see fit.

23 months agoRollup merge of #95040 - frank-king:fix/94981, r=Mark-Simulacrum
Yuki Okushi [Mon, 25 Jul 2022 09:46:47 +0000 (18:46 +0900)]
Rollup merge of #95040 - frank-king:fix/94981, r=Mark-Simulacrum

protect `std::io::Take::limit` from overflow in `read`

Resolves #94981

23 months agosuggest removing the tuple struct field for the unwrapped value
Takayuki Maeda [Fri, 22 Jul 2022 06:53:00 +0000 (15:53 +0900)]
suggest removing the tuple struct field for the unwrapped value

add a test case for macro

23 months agoAuto merge of #99600 - tmiasko:subst-folder, r=petrochenkov
bors [Mon, 25 Jul 2022 07:52:41 +0000 (07:52 +0000)]
Auto merge of #99600 - tmiasko:subst-folder, r=petrochenkov

Tweak `SubstFolder` implementation

23 months agoAuto merge of #98770 - klensy:no-string-dupes-ugly, r=cjgillot
bors [Mon, 25 Jul 2022 05:27:17 +0000 (05:27 +0000)]
Auto merge of #98770 - klensy:no-string-dupes-ugly, r=cjgillot

rmeta: avoid embedding `StabilityLevel::Unstable` reason multiple times into .rmeta\.rlib files

Avoids bloating size of some rmeta\rlib files by not placing default string for `StabilityLevel::Unstable` reason multiple times, affects only stdlib\rustc artifacts. For stdlib cuts about 3% (diff of total size for patched\unpatched *.rmeta files of stage1-std) of file size, depending on crates.

fixes #88180

23 months agofeat: impl export-executable-symbols
csmoe [Mon, 25 Jul 2022 05:20:23 +0000 (05:20 +0000)]
feat: impl export-executable-symbols

23 months agoExpose size_hint() for TokenStream's iterator
David Tolnay [Mon, 25 Jul 2022 03:36:22 +0000 (20:36 -0700)]
Expose size_hint() for TokenStream's iterator

23 months agoAuto merge of #99676 - thomcc:dont-overwrite, r=tmiasko
bors [Mon, 25 Jul 2022 02:46:36 +0000 (02:46 +0000)]
Auto merge of #99676 - thomcc:dont-overwrite, r=tmiasko

Don't overwrite CodegenFnAttrs when adding used compiler/linker

Pointed out by `@tmiasko` in https://github.com/rust-lang/rust/pull/93718#discussion_r928259163. Probably a better fix than https://github.com/rust-lang/rust/pull/99674 for https://github.com/rust-lang/rust/issues/99596, assuming it does fix the latter.

I don't have the ability to write a regression test for this at the moment, and am quite surprised this didn't cause other failures. The old code is clearly wrong though, but I'm not picky as to which of these is better to go with.

23 months agoImprove error messages involving `derive` and `packed`.
Nicholas Nethercote [Fri, 22 Jul 2022 00:04:37 +0000 (10:04 +1000)]
Improve error messages involving `derive` and `packed`.

There are two errors involving `derive` and `packed`.

```
`#[derive]` can't be derived on a `#[repr(packed)]` struct with type or const parameters
`#[derive]` can't be derived on a `#[repr(packed)]` struct that does not derive Copy
```
The second one overstates things. It is possible to use derive on a
repr(packed) struct that doesn't derive Copy in two cases.
- If all the fields within the struct meet the required alignment: 1 for
  `repr(packed)`, or `N` for `repr(packed(N))`.
- If `Default` is the only trait derived.

This commit improves things in a few ways.
- Changes the errors to say `$TRAIT can't be derived on this ...`.
  This is more accurate, because it's just $TRAIT and *this* packed
  struct that are a problem, not *all* derived traits on *all* packed
  structs.
- Adds more details to the "ERROR" lines in the test case, enough to
  distinguish between the two error messages.
- Adds more cases to the test case that don't cause errors, e.g. `Default`
  derives.
- Uses a wider variety of builtin traits in the test case, for better coverage.

23 months agoAuto merge of #97581 - AngelicosPhosphoros:improve_calloc_check_in_vec_macro_for_tupl...
bors [Mon, 25 Jul 2022 00:20:43 +0000 (00:20 +0000)]
Auto merge of #97581 - AngelicosPhosphoros:improve_calloc_check_in_vec_macro_for_tuples, r=Mark-Simulacrum

Support vec zero-alloc optimization for tuples and byte arrays

* Implement IsZero trait for tuples up to 8 IsZero elements;
* Implement IsZero for u8/i8, leading to implementation of it for arrays of them too;
* Add more codegen tests for this optimization.
* Lower size of array for IsZero trait because it fails to inline checks

23 months agointerpret, ptr_offset_from: refactor and test too-far-apart check
Ralf Jung [Sun, 24 Jul 2022 20:01:47 +0000 (16:01 -0400)]
interpret, ptr_offset_from: refactor and test too-far-apart check

23 months agoAuto merge of #99603 - fasterthanlime:ra-subtree-2, r=jyn514
bors [Sun, 24 Jul 2022 21:36:31 +0000 (21:36 +0000)]
Auto merge of #99603 - fasterthanlime:ra-subtree-2, r=jyn514

Convert rust-analyzer to an in-tree tool

This re-adds `rust-lang/rust-analyzer` as a git subtree rather than a submodule.

Closes https://github.com/rust-lang/rust-analyzer/issues/12815.

Prior attempt (research PR): https://github.com/rust-lang/rust/pull/99465

  * [x] Remove submodule: `git rm -f src/tools/rust-analyzer`
  * [x] Add subtree: `git subtree add -P src/tools/rust-analyzer https://github.com/rust-lang/rust-analyzer.git master`
  * [x] Move to `SourceType::InTree`,
  * [x] Enable `rust-analyzer/in-rust-tree` feature when built through `x.py`
  * [x] Add 'check' step
  * [x] Add 'test' step

With this PR, rust-analyzer becomes an "in-tree" tool. Syncs can happen in both directions, see [clippy's relevant book section](https://doc.rust-lang.org/nightly/clippy/development/infrastructure/sync.html).

Making sure `proc-macro-srv` doesn't break when the proc_macro bridge changes effectively becomes the responsibility of `rust-lang/rust` contributors. These days, that's mostly `@mystor,` who has been consulted throughout the process. I'm also making myself available in case there's questions / work needed that nobody else signed up for.

This doesn't change rust-analyzer's release cycle. After this PR is merged and the next nightly goes out, one can point `rust-analyzer.procMacro.server` to the rustup-provided `rust-analyzer` binary. Changes to improve the situation further (auto-discovery/install of the rust-analyzer component) will happen in `rust-lang/rust-analyzer` and be synced here eventually.

23 months agoSupport vec zero-alloc optimization for tuples and byte arrays
AngelicosPhosphoros [Tue, 31 May 2022 12:14:55 +0000 (15:14 +0300)]
Support vec zero-alloc optimization for tuples and byte arrays

* Implement IsZero trait for tuples up to 8 IsZero elements;
* Implement IsZero for u8/i8, leading to implementation of it for arrays of them too;
* Add more codegen tests for this optimization.
* Lower size of array for IsZero trait because it fails to inline checks

23 months agoCombine redundant obligation cause codes
Michael Goulet [Sun, 24 Jul 2022 19:33:26 +0000 (19:33 +0000)]
Combine redundant obligation cause codes

23 months agoOnly run proc-macro-srv tests for now (after discussion with @Veykril, @jyn514, and...
Amos Wenger [Sun, 24 Jul 2022 19:04:56 +0000 (21:04 +0200)]
Only run proc-macro-srv tests for now (after discussion with @Veykril, @jyn514, and @lnicola)

23 months agoHandle additional lifetime bounds on GATs like on methods
Michael Goulet [Sun, 24 Jul 2022 18:57:41 +0000 (18:57 +0000)]
Handle additional lifetime bounds on GATs like on methods

23 months agoAuto merge of #99687 - RalfJung:rollup-bojacrc, r=RalfJung
bors [Sun, 24 Jul 2022 18:55:31 +0000 (18:55 +0000)]
Auto merge of #99687 - RalfJung:rollup-bojacrc, r=RalfJung

Rollup of 4 pull requests

Successful merges:

 - #99644 (remove some provenance-related machine hooks that Miri no longer needs)
 - #99657 (Docs - remove unnecessary `mut` that gives a warning)
 - #99672 (Remove Clean trait implementation for more items)
 - #99678 (Update doc comments that refer to config parameter)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

23 months agoadd miri-track-caller to some intrinsic-exposing methods
Ralf Jung [Sun, 24 Jul 2022 18:28:30 +0000 (14:28 -0400)]
add miri-track-caller to some intrinsic-exposing methods

23 months agoSlightly improve mismatched GAT where clause error
Michael Goulet [Sat, 16 Jul 2022 23:41:43 +0000 (23:41 +0000)]
Slightly improve mismatched GAT where clause error

23 months agoRollup merge of #99678 - danbev:rustc_parse-config-doc-comments, r=cjgillot
Ralf Jung [Sun, 24 Jul 2022 18:04:29 +0000 (14:04 -0400)]
Rollup merge of #99678 - danbev:rustc_parse-config-doc-comments, r=cjgillot

Update doc comments that refer to config parameter

This commit updates the `source_file_to_parser` and the
`maybe_source_file_to_parse` function's doc comments which currently
refer to a `config` parameter. The doc comments have been updated to
refer to the `session` parameter similar to the doc comment for
`try_file_to_source_file`, which also takes a `&Session` parameter.

23 months agoRollup merge of #99672 - GuillaumeGomez:clean-trait-removal, r=Dylan-DPC
Ralf Jung [Sun, 24 Jul 2022 18:04:28 +0000 (14:04 -0400)]
Rollup merge of #99672 - GuillaumeGomez:clean-trait-removal, r=Dylan-DPC

Remove Clean trait implementation for more items

Follow up of #99638.

cc `@camelid`
r? `@notriddle`

23 months agoRollup merge of #99657 - Phosra:patch-1, r=Dylan-DPC
Ralf Jung [Sun, 24 Jul 2022 18:04:27 +0000 (14:04 -0400)]
Rollup merge of #99657 - Phosra:patch-1, r=Dylan-DPC

Docs - remove unnecessary `mut` that gives a warning

Fixes #99654.

A trivial linting fix for a Stdio example.

`@rustbot` label +T-lib

23 months agoRollup merge of #99644 - RalfJung:interpret-int-ptr-transmute, r=oli-obk
Ralf Jung [Sun, 24 Jul 2022 18:04:26 +0000 (14:04 -0400)]
Rollup merge of #99644 - RalfJung:interpret-int-ptr-transmute, r=oli-obk

remove some provenance-related machine hooks that Miri no longer needs

Then we can make `scalar_to_ptr` a method on `Scalar`. :)

Fixes https://github.com/rust-lang/miri/issues/2188
r? `@oli-obk`

23 months agoAuto merge of #99409 - tmiasko:atomic-tests, r=m-ou-se
bors [Sun, 24 Jul 2022 16:26:56 +0000 (16:26 +0000)]
Auto merge of #99409 - tmiasko:atomic-tests, r=m-ou-se

Test codegen of atomic compare-exchange with additional memory orderings

* Add a test for atomic operations introduced in #97423 & #98383.
* Add a test for fallback code generation strategy used on LLVM 12 introduced in #98385. Use a separate test case instead of a revision system since test will be gone once LLVM 12 is no longer supported.

23 months agoRevert "Revert "Use ICF (identical code folding) for building rustc""
Jubilee Young [Sun, 24 Jul 2022 15:52:08 +0000 (08:52 -0700)]
Revert "Revert "Use ICF (identical code folding) for building rustc""

This reverts commit rust-lang/rust@45575d23f316af7476ccd0a895234ac59c47a6be,
thereby enabling identical code folding again.

23 months agoMake macros test order-resistant
Amos Wenger [Sun, 24 Jul 2022 14:48:06 +0000 (16:48 +0200)]
Make macros test order-resistant

23 months agoUpdate doc comments that refer to config parameter
Daniel Bevenius [Sun, 24 Jul 2022 14:09:04 +0000 (16:09 +0200)]
Update doc comments that refer to config parameter

This commit updates the source_file_to_parser and the
maybe_source_file_to_parse function's doc comments which currently
refer to a config parameter. The doc comments have been updated to
refer to the 'session' parameter similar to the doc comment for
try_file_to_source_file, which also takes a &Session parameter.

23 months agoremove new allocations from imported_source_files
Pietro Albini [Sun, 24 Jul 2022 14:04:13 +0000 (16:04 +0200)]
remove new allocations from imported_source_files

23 months agoSort when iterating through CrateGraph
Amos Wenger [Sun, 24 Jul 2022 14:11:05 +0000 (16:11 +0200)]
Sort when iterating through CrateGraph

23 months agoSort in DefMap::dump, since HashMap iteration order isn't defined
Amos Wenger [Sun, 24 Jul 2022 14:04:20 +0000 (16:04 +0200)]
Sort in DefMap::dump, since HashMap iteration order isn't defined