]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoRollup merge of #94353 - flip1995:fix_debug_assert_unused, r=Dylan-DPC
Matthias Krüger [Fri, 25 Feb 2022 19:12:48 +0000 (20:12 +0100)]
Rollup merge of #94353 - flip1995:fix_debug_assert_unused, r=Dylan-DPC

Fix debug_assert in unused lint pass

This fixes a debug assertion in the unused lint pass. As a side effect, this also improves the span generated for tuples in the `unused_must_use` lint.

found in #94329

A reproducer for this would be

```rust
fn main() { (1, (3,)); }
```

Not sure, if I should add a regression test for a `debug_assert`.

2 years agoRollup merge of #94154 - Urgau:rustdoc-check-cfg, r=GuillaumeGomez
Matthias Krüger [Fri, 25 Feb 2022 19:12:47 +0000 (20:12 +0100)]
Rollup merge of #94154 - Urgau:rustdoc-check-cfg, r=GuillaumeGomez

Wire up unstable rustc --check-cfg to rustdoc

This pull-request wire up the new unstable `--check-cfg` option from `rustc` to `rustdoc` as [requested](https://github.com/rust-lang/rust/pull/93915#discussion_r807560445) in the [pull-request](https://github.com/rust-lang/rust/pull/93915) that introduce `--check-cfg`.

The motivation was describe in the original PR by ``@jyn514`` who wrote https://github.com/rust-lang/rust/pull/89346#issuecomment-930129761:
> > add plumbing to pass --check-cfg from rustdoc (do we want this one?)
>
> It would be useful, I think, it catches issues like cfg(doctst) or something (and in general I would like expansion to match rustc as closely as possible).

2 years agoRollup merge of #93850 - asquared31415:extern-static-size-ice, r=jackh726
Matthias Krüger [Fri, 25 Feb 2022 19:12:46 +0000 (20:12 +0100)]
Rollup merge of #93850 - asquared31415:extern-static-size-ice, r=jackh726

Don't ICE when an extern static is too big for the current architecture

Fixes #93760

Emit an error instead of ICEing when an `extern` static's size overflows the allowed maximum for the target.

Changes the error message in the existing `delay_span_bug` call to the true layout error, first for debugging purposes, but opted to leave in to potentially assist future developers as it was being reached in unexpected ways already.

2 years agoAuto merge of #94279 - tmiasko:write-print, r=Mark-Simulacrum
bors [Fri, 25 Feb 2022 16:09:56 +0000 (16:09 +0000)]
Auto merge of #94279 - tmiasko:write-print, r=Mark-Simulacrum

Print `ParamTy` and `ParamConst` instead of displaying them

Display for `ParamTy` and `ParamConst` is implemented in terms of print.
Using print avoids creating a new `FmtPrinter` just to display the
parameter name.

r? `@Mark-Simulacrum`

2 years agoAuto merge of #94357 - matthiaskrgr:rollup-xrjaof3, r=matthiaskrgr
bors [Fri, 25 Feb 2022 13:28:49 +0000 (13:28 +0000)]
Auto merge of #94357 - matthiaskrgr:rollup-xrjaof3, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #93845 (Remove in band lifetimes)
 - #94155 (Extend toggle GUI test a bit)
 - #94252 (don't special case `DefKind::Ctor` in encoding)
 - #94305 (Remove an unnecessary restriction in `dest_prop`)
 - #94343 (Miri fn ptr check: don't use conservative null check)
 - #94344 (diagnostic: suggest parens when users want logical ops, but get closures)
 - #94352 (Fix SGX docs build)

Failed merges:

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

2 years agoRollup merge of #94352 - jethrogb:fix-sgx-docs-build, r=Mark-Simulacrum
Matthias Krüger [Fri, 25 Feb 2022 13:14:41 +0000 (14:14 +0100)]
Rollup merge of #94352 - jethrogb:fix-sgx-docs-build, r=Mark-Simulacrum

Fix SGX docs build

Without this, I get
```
error[E0432]: unresolved import `crate::sys::cvt`
  --> library/std/src/os/fd/owned.rs:12:5
   |
12 | use crate::sys::cvt;
   |     ^^^^^^^^^^^^^^^ no `cvt` in `sys`
```
when running rustdoc on `std` for the x86_64-fortanix-unknown-sgx target.

2 years agoRollup merge of #94344 - notriddle:notriddle/suggest-parens-more, r=oli-obk
Matthias Krüger [Fri, 25 Feb 2022 13:14:40 +0000 (14:14 +0100)]
Rollup merge of #94344 - notriddle:notriddle/suggest-parens-more, r=oli-obk

diagnostic: suggest parens when users want logical ops, but get closures

Fixes #93536

2 years agoRollup merge of #94343 - RalfJung:fn-ptr, r=oli-obk
Matthias Krüger [Fri, 25 Feb 2022 13:14:39 +0000 (14:14 +0100)]
Rollup merge of #94343 - RalfJung:fn-ptr, r=oli-obk

Miri fn ptr check: don't use conservative null check

In https://github.com/rust-lang/rust/pull/94270 I used the wrong NULL check for function pointers: `memory.ptr_may_be_null` is conservative even on machines that support ptr-to-int casts, leading to false errors in Miri.

This fixes that problem, and also replaces that foot-fun of a method with `scalar_may_be_null` which is never unnecessarily conservative.

r? `@oli-obk`

2 years agoRollup merge of #94305 - JakobDegen:dp-1, r=oli-obk
Matthias Krüger [Fri, 25 Feb 2022 13:14:38 +0000 (14:14 +0100)]
Rollup merge of #94305 - JakobDegen:dp-1, r=oli-obk

Remove an unnecessary restriction in `dest_prop`

I had asked about this [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Do.20unions.20have.20active.20fields.3F) but didn't receive a response, so putting up this PR that makes the change I think we can. If it turns out that this is wrong, hopefully I'll find out here. Reposting my Zulip comment:
> Not sure what channel to put this into, so using this as a fallback. The dest prop MIR opt has this comment:
>
> ```rust
> //!   Subtle case: If `dest` is a, or projects through a union, then we have to make sure that there
> //!   remains an assignment to it, since that sets the "active field" of the union. But if `src` is
> //!   a ZST, it might not be initialized, so there might not be any use of it before the assignment,
> //!   and performing the optimization would simply delete the assignment, leaving `dest`
> //!   uninitialized.
> ```
>
> In particular, the claim seems to be that we can't take
> ```
> x = ();
> y.field = x;
> ```
> where `y` is a union having `field: ()` as one of its variants, and optimize the entire thing away (assuming `x` is unused otherwise). As far as I know though, Rust unions don't have active fields. Is this comment correct and am I missing something? Is there a worry about this interacting poorly with FFI code/C unions/LTO or something?

This PR just removes that comment and the associated code. Also it fixes one unrelated comment that did not match the code it was commenting on.

r? rust-lang/mir-opt

2 years agoRollup merge of #94252 - lcnr:def_kind-encoding, r=cjgillot
Matthias Krüger [Fri, 25 Feb 2022 13:14:37 +0000 (14:14 +0100)]
Rollup merge of #94252 - lcnr:def_kind-encoding, r=cjgillot

don't special case `DefKind::Ctor` in encoding

considering that we still use `DefKind::Ctor` for these in `Res`, this seems weird and definitely felt like a bug when encountering it while working on #89862.

r? `@cjgillot`

2 years agoRollup merge of #94155 - GuillaumeGomez:extend-toggle-gui-test, r=jsha
Matthias Krüger [Fri, 25 Feb 2022 13:14:36 +0000 (14:14 +0100)]
Rollup merge of #94155 - GuillaumeGomez:extend-toggle-gui-test, r=jsha

Extend toggle GUI test a bit

Fixes #84422.

r? `@jsha`

2 years agoRollup merge of #93845 - compiler-errors:in-band-lifetimes, r=cjgillot
Matthias Krüger [Fri, 25 Feb 2022 13:14:35 +0000 (14:14 +0100)]
Rollup merge of #93845 - compiler-errors:in-band-lifetimes, r=cjgillot

Remove in band lifetimes

As discussed in t-lang backlog bonanza, the `in_band_lifetimes` FCP closed in favor for the feature not being stabilized. This PR removes `#![feature(in_band_lifetimes)]` in its entirety.

Let me know if this PR is too hasty, and if we should instead do something intermediate for deprecate the feature first.

r? `@scottmcm` (or feel free to reassign, just saw your last comment on #44524)
Closes #44524

2 years agoFix debug_assert in unused lint pass
flip1995 [Fri, 25 Feb 2022 11:30:16 +0000 (11:30 +0000)]
Fix debug_assert in unused lint pass

This fixes a debug assertion in the unused lint pass. As a side effect,
this also improves the span generated for tuples in the
`unused_must_use` lint.

2 years agoFix SGX docs build
Jethro Beekman [Fri, 25 Feb 2022 11:11:58 +0000 (12:11 +0100)]
Fix SGX docs build

2 years agoAuto merge of #93644 - michaelwoerister:simpler-debuginfo-typemap, r=wesleywiser
bors [Fri, 25 Feb 2022 11:00:32 +0000 (11:00 +0000)]
Auto merge of #93644 - michaelwoerister:simpler-debuginfo-typemap, r=wesleywiser

debuginfo: Simplify TypeMap used during LLVM debuginfo generation.

This PR simplifies the TypeMap that is used in `rustc_codegen_llvm::debuginfo::metadata`. It was unnecessarily complicated because it was originally implemented when types were not yet normalized before codegen. So it did it's own normalization and kept track of multiple unnormalized types being mapped to a single unique id.

This PR is based on https://github.com/rust-lang/rust/pull/93503, which is not merged yet.

The PR also removes the arena used for allocating string ids and instead uses `InlinableString` from the [inlinable_string](https://crates.io/crates/inlinable_string) crate. That might not be the best choice, since that crate does not seem to be very actively maintained. The [flexible-string](https://crates.io/crates/flexible-string) crate would be an alternative.

r? `@ghost`

2 years agoExtend toggle GUI test a bit
Guillaume Gomez [Sat, 19 Feb 2022 13:46:37 +0000 (14:46 +0100)]
Extend toggle GUI test a bit

2 years agodebuginfo: Simplify TypeMap used during LLVM debuginfo generation -- address review...
Michael Woerister [Thu, 24 Feb 2022 16:19:18 +0000 (17:19 +0100)]
debuginfo: Simplify TypeMap used during LLVM debuginfo generation -- address review comments.

2 years agoAuto merge of #94350 - matthiaskrgr:rollup-eesfiyr, r=matthiaskrgr
bors [Fri, 25 Feb 2022 08:40:34 +0000 (08:40 +0000)]
Auto merge of #94350 - matthiaskrgr:rollup-eesfiyr, r=matthiaskrgr

Rollup of 6 pull requests

Successful merges:

 - #92714 (Provide ignore message in the result of test)
 - #93273 (Always check cg_llvm with ./x.py check)
 - #94068 (Consider mutations as borrows in generator drop tracking)
 - #94184 (BTree: simplify test code)
 - #94297 (update const_generics_defaults release notes)
 - #94341 (Remove a duplicate space)

Failed merges:

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

2 years agoRollup merge of #94341 - ChayimFriedman2:patch-1, r=Dylan-DPC
Matthias Krüger [Fri, 25 Feb 2022 06:30:51 +0000 (07:30 +0100)]
Rollup merge of #94341 - ChayimFriedman2:patch-1, r=Dylan-DPC

Remove a duplicate space

rustfmt doesn't format `let ... else`.

2 years agoRollup merge of #94297 - lcnr:rel-notes, r=Mark-Simulacrum
Matthias Krüger [Fri, 25 Feb 2022 06:30:50 +0000 (07:30 +0100)]
Rollup merge of #94297 - lcnr:rel-notes, r=Mark-Simulacrum

update const_generics_defaults release notes

supersedes #94294

r? `@Mark-Simulacrum`

2 years agoRollup merge of #94184 - ssomers:btree_tests, r=Dylan-DPC
Matthias Krüger [Fri, 25 Feb 2022 06:30:49 +0000 (07:30 +0100)]
Rollup merge of #94184 - ssomers:btree_tests, r=Dylan-DPC

BTree: simplify test code

Mostly, use `from` & `from_iter`.

2 years agoRollup merge of #94068 - eholk:drop-track-field-assign, r=tmandry
Matthias Krüger [Fri, 25 Feb 2022 06:30:49 +0000 (07:30 +0100)]
Rollup merge of #94068 - eholk:drop-track-field-assign, r=tmandry

Consider mutations as borrows in generator drop tracking

This is needed to match MIR more conservative approximation of any borrowed value being live across a suspend point (See #94067). This change considers an expression such as `x.y = z` to be a borrow of `x` and therefore keeps `x` live across suspend points.

r? `@nikomatsakis`

2 years agoRollup merge of #93273 - bjorn3:rustbuild_improvements, r=Mark-Simulacrum
Matthias Krüger [Fri, 25 Feb 2022 06:30:48 +0000 (07:30 +0100)]
Rollup merge of #93273 - bjorn3:rustbuild_improvements, r=Mark-Simulacrum

Always check cg_llvm with ./x.py check

Previously it would be skipped if codegen-backends doesn't contain llvm.

2 years agoRollup merge of #92714 - yanganto:ignore-message, r=Mark-Simulacrum
Matthias Krüger [Fri, 25 Feb 2022 06:30:47 +0000 (07:30 +0100)]
Rollup merge of #92714 - yanganto:ignore-message, r=Mark-Simulacrum

Provide ignore message in the result of test

Provide ignore the message in the result of the test.

This PR does not need RFC, because it is about the presentation of the report of `cargo test`.

However, the following document listed here helps you to know about PR.

- [RFC](https://github.com/rust-lang/rfcs/pull/3217)
- [Rendered](https://github.com/yanganto/rfcs/blob/ignore-test-message/text/0000-ignore-test-message.md)
- [Previous discussion on IRLO](https://internals.rust-lang.org/t/pre-rfc-provide-ignore-message-when-the-test-ignored/15904)

If there is something improper, please let me know.
Thanks.

2 years agoAuto merge of #94130 - erikdesjardins:partially, r=nikic
bors [Fri, 25 Feb 2022 05:44:33 +0000 (05:44 +0000)]
Auto merge of #94130 - erikdesjardins:partially, r=nikic

Use undef for (some) partially-uninit constants

There needs to be some limit to avoid perf regressions on large arrays
with undef in each element (see comment in the code).

Fixes: #84565
Original PR: #83698

Depends on LLVM 14: #93577

2 years agoAuto merge of #93878 - Aaron1011:newtype-macro, r=cjgillot
bors [Fri, 25 Feb 2022 03:16:22 +0000 (03:16 +0000)]
Auto merge of #93878 - Aaron1011:newtype-macro, r=cjgillot

Convert `newtype_index` to a proc macro

The `macro_rules!` implementation was becomng excessively complicated,
and difficult to modify. The new proc macro implementation should make
it much easier to add new features (e.g. skipping certain `#[derive]`s)

2 years agoRemove LifetimeDefOrigin
Michael Goulet [Sun, 20 Feb 2022 18:22:57 +0000 (10:22 -0800)]
Remove LifetimeDefOrigin

2 years agoRemove in-band lifetimes
Michael Goulet [Thu, 10 Feb 2022 02:42:32 +0000 (18:42 -0800)]
Remove in-band lifetimes

2 years agoAdd documentation for `--check-cfg` in rustdoc book
Loïc BRANSTETT [Sun, 20 Feb 2022 16:13:38 +0000 (17:13 +0100)]
Add documentation for `--check-cfg` in rustdoc book

2 years agoWire up --check-cfg to rustdoc
Loïc BRANSTETT [Sat, 19 Feb 2022 13:31:20 +0000 (14:31 +0100)]
Wire up --check-cfg to rustdoc

2 years agoMiri fn ptr check: don't use conservative null check
Ralf Jung [Fri, 25 Feb 2022 00:38:37 +0000 (19:38 -0500)]
Miri fn ptr check: don't use conservative null check

2 years agoAuto merge of #93368 - eddyb:diagbld-guarantee, r=estebank
bors [Fri, 25 Feb 2022 00:46:04 +0000 (00:46 +0000)]
Auto merge of #93368 - eddyb:diagbld-guarantee, r=estebank

rustc_errors: let `DiagnosticBuilder::emit` return a "guarantee of emission".

That is, `DiagnosticBuilder` is now generic over the return type of `.emit()`, so we'll now have:
* `DiagnosticBuilder<ErrorReported>` for error (incl. fatal/bug) diagnostics
  * can only be created via a `const L: Level`-generic constructor, that limits allowed variants via a `where` clause, so not even `rustc_errors` can accidentally bypass this limitation
  * asserts `diagnostic.is_error()` on emission, just in case the construction restriction was bypassed (e.g. by replacing the whole `Diagnostic` inside `DiagnosticBuilder`)
  * `.emit()` returns `ErrorReported`, as a "proof" token that `.emit()` was called
    (though note that this isn't a real guarantee until after completing the work on
     #69426)
* `DiagnosticBuilder<()>` for everything else (warnings, notes, etc.)
  * can also be obtained from other `DiagnosticBuilder`s by calling `.forget_guarantee()`

This PR is a companion to other ongoing work, namely:
* #69426
  and it's ongoing implementation:
  #93222
  the API changes in this PR are needed to get statically-checked "only errors produce `ErrorReported` from `.emit()`", but doesn't itself provide any really strong guarantees without those other `ErrorReported` changes
* #93244
  would make the choices of API changes (esp. naming) in this PR fit better overall

In order to be able to let `.emit()` return anything trustable, several changes had to be made:
* `Diagnostic`'s `level` field is now private to `rustc_errors`, to disallow arbitrary "downgrade"s from "some kind of error" to "warning" (or anything else that doesn't cause compilation to fail)
  * it's still possible to replace the whole `Diagnostic` inside the `DiagnosticBuilder`, sadly, that's harder to fix, but it's unlikely enough that we can paper over it with asserts on `.emit()`
* `.cancel()` now consumes `DiagnosticBuilder`, preventing `.emit()` calls on a cancelled diagnostic
  * it's also now done internally, through `DiagnosticBuilder`-private state, instead of having a `Level::Cancelled` variant that can be read (or worse, written) by the user
  * this removes a hazard of calling `.cancel()` on an error then continuing to attach details to it, and even expect to be able to `.emit()` it
  * warnings were switched to *only* `can_emit_warnings` on emission (instead of pre-cancelling early)
  * `struct_dummy` was removed (as it relied on a pre-`Cancelled` `Diagnostic`)
* since `.emit()` doesn't consume the `DiagnosticBuilder` <sub>(I tried and gave up, it's much more work than this PR)</sub>,
  we have to make `.emit()` idempotent wrt the guarantees it returns
  * thankfully, `err.emit(); err.emit();` can return `ErrorReported` both times, as the second `.emit()` call has no side-effects *only* because the first one did do the appropriate emission
* `&mut Diagnostic` is now used in a lot of function signatures, which used to take `&mut DiagnosticBuilder` (in the interest of not having to make those functions generic)
  * the APIs were already mostly identical, allowing for low-effort porting to this new setup
  * only some of the suggestion methods needed some rework, to have the extra `DiagnosticBuilder` functionality on the `Diagnostic` methods themselves (that change is also present in #93259)
  * `.emit()`/`.cancel()` aren't available, but IMO calling them from an "error decorator/annotator" function isn't a good practice, and can lead to strange behavior (from the caller's perspective)
  * `.downgrade_to_delayed_bug()` was added, letting you convert any `.is_error()` diagnostic into a `delay_span_bug` one (which works because in both cases the guarantees available are the same)

This PR should ideally be reviewed commit-by-commit, since there is a lot of fallout in each.

r? `@estebank` cc `@Manishearth` `@nikomatsakis` `@mark-i-m`

2 years agodiagnostic: suggest parens when users want logical ops, but get closures
Michael Howell [Fri, 25 Feb 2022 00:02:38 +0000 (17:02 -0700)]
diagnostic: suggest parens when users want logical ops, but get closures

2 years agoRemove a duplicate space
Chayim Refael Friedman [Thu, 24 Feb 2022 23:34:08 +0000 (01:34 +0200)]
Remove a duplicate space

rustfmt doesn't format `let ... else`.

2 years agoInclude ignore message in libtest output
Antonio Yang [Mon, 10 Jan 2022 06:01:12 +0000 (14:01 +0800)]
Include ignore message in libtest output

As an example:

    #[test]
    #[ignore = "not yet implemented"]
    fn test_ignored() {
        ...
    }

Will now render as:

    running 2 tests
    test tests::test_ignored ... ignored, not yet implemented

    test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s

2 years agoAuto merge of #94333 - Dylan-DPC:rollup-7yxtywp, r=Dylan-DPC
bors [Thu, 24 Feb 2022 22:29:14 +0000 (22:29 +0000)]
Auto merge of #94333 - Dylan-DPC:rollup-7yxtywp, r=Dylan-DPC

Rollup of 9 pull requests

Successful merges:

 - #91795 (resolve/metadata: Stop encoding macros as reexports)
 - #93714 (better ObligationCause for normalization errors in `can_type_implement_copy`)
 - #94175 (Improve `--check-cfg` implementation)
 - #94212 (Stop manually SIMDing in `swap_nonoverlapping`)
 - #94242 (properly handle fat pointers to uninhabitable types)
 - #94308 (Normalize main return type during mono item collection & codegen)
 - #94315 (update auto trait lint for `PhantomData`)
 - #94316 (Improve string literal unescaping)
 - #94327 (Avoid emitting full macro body into JSON errors)

Failed merges:

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

2 years agoFix intra-doc link issues exposed by new macro
Aaron Hill [Thu, 24 Feb 2022 22:16:36 +0000 (17:16 -0500)]
Fix intra-doc link issues exposed by new macro

These links never worked, but the lint was suppressed due to the fact
that the span was pointing into the macro. With the new macro
implementation, the span now points directly to the doc comment in the
macro invocation, so it's no longer suppressed.

2 years agoAddress review comments
Aaron Hill [Sat, 19 Feb 2022 00:14:51 +0000 (19:14 -0500)]
Address review comments

2 years agoFix test
Aaron Hill [Fri, 18 Feb 2022 21:16:02 +0000 (16:16 -0500)]
Fix test

2 years agoConvert `newtype_index` to a proc macro
Aaron Hill [Wed, 9 Feb 2022 22:24:51 +0000 (17:24 -0500)]
Convert `newtype_index` to a proc macro

The `macro_rules!` implementation was becomng excessively complicated,
and difficult to modify. The new proc macro implementation should make
it much easier to add new features (e.g. skipping certain `#[derive]`s)

2 years agoRollup merge of #94327 - Mark-Simulacrum:avoid-macro-sp, r=petrochenkov
Dylan DPC [Thu, 24 Feb 2022 20:42:19 +0000 (21:42 +0100)]
Rollup merge of #94327 - Mark-Simulacrum:avoid-macro-sp, r=petrochenkov

Avoid emitting full macro body into JSON errors

While investigating https://github.com/rust-lang/rust/issues/94322, it was noted that currently the JSON diagnostics for macro backtraces include the full def_site span -- the whole macro body.

It seems like this shouldn't be necessary, so this PR adjusts the span to just be the "guessed head", typically the macro name. It doesn't look like we keep enough information to synthesize a nicer span here at this time.

Atop #92123, this reduces output for the src/test/ui/suggestions/missing-lifetime-specifier.rs test from 660 KB to 156 KB locally.

2 years agoRollup merge of #94316 - nnethercote:improve-string-literal-unescaping, r=petrochenkov
Dylan DPC [Thu, 24 Feb 2022 20:42:18 +0000 (21:42 +0100)]
Rollup merge of #94316 - nnethercote:improve-string-literal-unescaping, r=petrochenkov

Improve string literal unescaping

Some easy wins that affect a few popular crates.

r? ```@matklad```

2 years agoRollup merge of #94315 - lcnr:auto-trait-lint-update, r=oli-obk
Dylan DPC [Thu, 24 Feb 2022 20:42:17 +0000 (21:42 +0100)]
Rollup merge of #94315 - lcnr:auto-trait-lint-update, r=oli-obk

update auto trait lint for `PhantomData`

cc https://github.com/rust-lang/rust/issues/93367#issuecomment-1047898410

2 years agoRollup merge of #94308 - tmiasko:normalize-main-ret-ty, r=oli-obk
Dylan DPC [Thu, 24 Feb 2022 20:42:16 +0000 (21:42 +0100)]
Rollup merge of #94308 - tmiasko:normalize-main-ret-ty, r=oli-obk

Normalize main return type during mono item collection & codegen

The issue can be observed with `-Zprint-mono-items=lazy` in:

```rust
#![feature(termination_trait_lib)]
fn main() -> impl std::process::Termination { }
```
```
BEFORE: MONO_ITEM fn std::rt::lang_start::<impl std::process::Termination> ````@@```` t.93933fa2-cgu.2[External]
AFTER:  MONO_ITEM fn std::rt::lang_start::<()> ````@@```` t.df56e625-cgu.1[External]
```

2 years agoRollup merge of #94242 - compiler-errors:fat-uninhabitable-pointer, r=michaelwoerister
Dylan DPC [Thu, 24 Feb 2022 20:42:15 +0000 (21:42 +0100)]
Rollup merge of #94242 - compiler-errors:fat-uninhabitable-pointer, r=michaelwoerister

properly handle fat pointers to uninhabitable types

Calculate the pointee metadata size by using `tcx.struct_tail_erasing_lifetimes` instead of duplicating the logic in `fat_pointer_kind`. Open to alternatively suggestions on how to fix this.

Fixes #94149

r? ````@michaelwoerister```` since you touched this code last, I think!

2 years agoRollup merge of #94212 - scottmcm:swapper, r=dtolnay
Dylan DPC [Thu, 24 Feb 2022 20:42:14 +0000 (21:42 +0100)]
Rollup merge of #94212 - scottmcm:swapper, r=dtolnay

Stop manually SIMDing in `swap_nonoverlapping`

Like I previously did for `reverse` (#90821), this leaves it to LLVM to pick how to vectorize it, since it can know better the chunk size to use, compared to the "32 bytes always" approach we currently have.

A variety of codegen tests are included to confirm that the various cases are still being vectorized.

It does still need logic to type-erase in some cases, though, as while LLVM is now smart enough to vectorize over slices of things like `[u8; 4]`, it fails to do so over slices of `[u8; 3]`.

As a bonus, this change also means one no longer gets the spurious `memcpy`(s?) at the end up swapping a slice of `__m256`s: <https://rust.godbolt.org/z/joofr4v8Y>

<details>

<summary>ASM for this example</summary>

## Before (from godbolt)

note the `push`/`pop`s and `memcpy`

```x86
swap_m256_slice:
        push    r15
        push    r14
        push    r13
        push    r12
        push    rbx
        sub     rsp, 32
        cmp     rsi, rcx
        jne     .LBB0_6
        mov     r14, rsi
        shl     r14, 5
        je      .LBB0_6
        mov     r15, rdx
        mov     rbx, rdi
        xor     eax, eax
.LBB0_3:
        mov     rcx, rax
        vmovaps ymm0, ymmword ptr [rbx + rax]
        vmovaps ymm1, ymmword ptr [r15 + rax]
        vmovaps ymmword ptr [rbx + rax], ymm1
        vmovaps ymmword ptr [r15 + rax], ymm0
        add     rax, 32
        add     rcx, 64
        cmp     rcx, r14
        jbe     .LBB0_3
        sub     r14, rax
        jbe     .LBB0_6
        add     rbx, rax
        add     r15, rax
        mov     r12, rsp
        mov     r13, qword ptr [rip + memcpy@GOTPCREL]
        mov     rdi, r12
        mov     rsi, rbx
        mov     rdx, r14
        vzeroupper
        call    r13
        mov     rdi, rbx
        mov     rsi, r15
        mov     rdx, r14
        call    r13
        mov     rdi, r15
        mov     rsi, r12
        mov     rdx, r14
        call    r13
.LBB0_6:
        add     rsp, 32
        pop     rbx
        pop     r12
        pop     r13
        pop     r14
        pop     r15
        vzeroupper
        ret
```

## After (from my machine)

Note no `rsp` manipulation, sorry for different ASM syntax

```x86
swap_m256_slice:
cmpq %r9, %rdx
jne .LBB1_6
testq %rdx, %rdx
je .LBB1_6
cmpq $1, %rdx
jne .LBB1_7
xorl %r10d, %r10d
jmp .LBB1_4
.LBB1_7:
movq %rdx, %r9
andq $-2, %r9
movl $32, %eax
xorl %r10d, %r10d
.p2align 4, 0x90
.LBB1_8:
vmovaps -32(%rcx,%rax), %ymm0
vmovaps -32(%r8,%rax), %ymm1
vmovaps %ymm1, -32(%rcx,%rax)
vmovaps %ymm0, -32(%r8,%rax)
vmovaps (%rcx,%rax), %ymm0
vmovaps (%r8,%rax), %ymm1
vmovaps %ymm1, (%rcx,%rax)
vmovaps %ymm0, (%r8,%rax)
addq $2, %r10
addq $64, %rax
cmpq %r10, %r9
jne .LBB1_8
.LBB1_4:
testb $1, %dl
je .LBB1_6
shlq $5, %r10
vmovaps (%rcx,%r10), %ymm0
vmovaps (%r8,%r10), %ymm1
vmovaps %ymm1, (%rcx,%r10)
vmovaps %ymm0, (%r8,%r10)
.LBB1_6:
vzeroupper
retq
```

</details>

This does all its copying operations as either the original type or as `MaybeUninit`s, so as far as I know there should be no potential abstract machine issues with reading padding bytes as integers.

<details>

<summary>Perf is essentially unchanged</summary>

Though perhaps with more target features this would help more, if it could pick bigger chunks

## Before

```
running 10 tests
test slice::swap_with_slice_4x_usize_30                            ... bench:         894 ns/iter (+/- 11)
test slice::swap_with_slice_4x_usize_3000                          ... bench:      99,476 ns/iter (+/- 2,784)
test slice::swap_with_slice_5x_usize_30                            ... bench:       1,257 ns/iter (+/- 7)
test slice::swap_with_slice_5x_usize_3000                          ... bench:     139,922 ns/iter (+/- 959)
test slice::swap_with_slice_rgb_30                                 ... bench:         328 ns/iter (+/- 27)
test slice::swap_with_slice_rgb_3000                               ... bench:      16,215 ns/iter (+/- 176)
test slice::swap_with_slice_u8_30                                  ... bench:         312 ns/iter (+/- 9)
test slice::swap_with_slice_u8_3000                                ... bench:       5,401 ns/iter (+/- 123)
test slice::swap_with_slice_usize_30                               ... bench:         368 ns/iter (+/- 3)
test slice::swap_with_slice_usize_3000                             ... bench:      28,472 ns/iter (+/- 3,913)
```

## After

```
running 10 tests
test slice::swap_with_slice_4x_usize_30                            ... bench:         868 ns/iter (+/- 36)
test slice::swap_with_slice_4x_usize_3000                          ... bench:      99,642 ns/iter (+/- 1,507)
test slice::swap_with_slice_5x_usize_30                            ... bench:       1,194 ns/iter (+/- 11)
test slice::swap_with_slice_5x_usize_3000                          ... bench:     139,761 ns/iter (+/- 5,018)
test slice::swap_with_slice_rgb_30                                 ... bench:         324 ns/iter (+/- 6)
test slice::swap_with_slice_rgb_3000                               ... bench:      15,962 ns/iter (+/- 287)
test slice::swap_with_slice_u8_30                                  ... bench:         281 ns/iter (+/- 5)
test slice::swap_with_slice_u8_3000                                ... bench:       5,324 ns/iter (+/- 40)
test slice::swap_with_slice_usize_30                               ... bench:         275 ns/iter (+/- 5)
test slice::swap_with_slice_usize_3000                             ... bench:      28,277 ns/iter (+/- 277)
```

</detail>

2 years agoRollup merge of #94175 - Urgau:check-cfg-improvements, r=petrochenkov
Dylan DPC [Thu, 24 Feb 2022 20:42:13 +0000 (21:42 +0100)]
Rollup merge of #94175 - Urgau:check-cfg-improvements, r=petrochenkov

Improve `--check-cfg` implementation

This pull-request is a mix of improvements regarding the `--check-cfg` implementation:

- Simpler internal representation (usage of `Option` instead of separate bool)
- Add --check-cfg to the unstable book (based on the RFC)
- Improved diagnostics:
    * List possible values when the value is unexpected
    * Suggest if possible a name or value that is similar
- Add more tests (well known names, mix of combinations, ...)

r? ```@petrochenkov```

2 years agoRollup merge of #93714 - compiler-errors:can-type-impl-copy-error-span, r=jackh726
Dylan DPC [Thu, 24 Feb 2022 20:42:12 +0000 (21:42 +0100)]
Rollup merge of #93714 - compiler-errors:can-type-impl-copy-error-span, r=jackh726

better ObligationCause for normalization errors in `can_type_implement_copy`

Some logic is needed so we can point to the field when given totally nonsense types like `struct Foo(<u32 as Iterator>::Item);`

Fixes #93687

2 years agoRollup merge of #91795 - petrochenkov:nomacreexport, r=cjgillot
Dylan DPC [Thu, 24 Feb 2022 20:42:11 +0000 (21:42 +0100)]
Rollup merge of #91795 - petrochenkov:nomacreexport, r=cjgillot

resolve/metadata: Stop encoding macros as reexports

Supersedes https://github.com/rust-lang/rust/pull/88335.
r? `@cjgillot`

2 years agoUpdate clippy tests
Vadim Petrochenkov [Sat, 5 Feb 2022 02:07:13 +0000 (10:07 +0800)]
Update clippy tests

2 years agoresolve/metadata: Stop encoding macros as reexports
Vadim Petrochenkov [Mon, 24 Jan 2022 07:41:25 +0000 (15:41 +0800)]
resolve/metadata: Stop encoding macros as reexports

2 years agometadata: Tweak the way in which declarative macros are encoded
Vadim Petrochenkov [Mon, 24 Jan 2022 07:30:54 +0000 (15:30 +0800)]
metadata: Tweak the way in which declarative macros are encoded

To make the `macro_rules` flag more readily available without decoding everything else

2 years agoresolve: Fix incorrect results of `opt_def_kind` query for some built-in macros
Vadim Petrochenkov [Sat, 11 Dec 2021 11:52:23 +0000 (19:52 +0800)]
resolve: Fix incorrect results of `opt_def_kind` query for some built-in macros

Previously it always returned `MacroKind::Bang` while some of those macros are actually attributes and derives

2 years agodon't ice when an extern static is too big
asquared31415 [Thu, 24 Feb 2022 19:10:41 +0000 (14:10 -0500)]
don't ice when an extern static is too big

2 years agoAuto merge of #94131 - Mark-Simulacrum:fmt-string, r=oli-obk
bors [Thu, 24 Feb 2022 17:18:07 +0000 (17:18 +0000)]
Auto merge of #94131 - Mark-Simulacrum:fmt-string, r=oli-obk

Always format to internal String in FmtPrinter

This avoids monomorphizing for different parameters, decreasing generic code
instantiated downstream from rustc_middle -- locally seeing 7% unoptimized LLVM IR
line wins on rustc_borrowck, for example.

We likely can't/shouldn't get rid of the Result-ness on most functions, though some
further cleanup avoiding fmt::Error where we now know it won't occur may be possible,
though somewhat painful -- fmt::Write is a pretty annoying API to work with in practice
when you're trying to use it infallibly.

2 years agorestore spans for issue-50480
Michael Goulet [Sun, 6 Feb 2022 23:57:29 +0000 (15:57 -0800)]
restore spans for issue-50480

2 years agobetter ObligationCause for normalization errors in can_type_implement_copy
Michael Goulet [Sun, 6 Feb 2022 21:03:28 +0000 (13:03 -0800)]
better ObligationCause for normalization errors in can_type_implement_copy

2 years agoAvoid emitting full macro body into JSON
Mark Rousskov [Thu, 24 Feb 2022 16:16:45 +0000 (11:16 -0500)]
Avoid emitting full macro body into JSON

2 years agoRemove an unnecessary restriction in `dest_prop`
Jakob Degen [Thu, 24 Feb 2022 14:47:13 +0000 (09:47 -0500)]
Remove an unnecessary restriction in `dest_prop`

2 years agodon't special case `DefKind::Ctor` in encoding
lcnr [Tue, 22 Feb 2022 09:53:45 +0000 (10:53 +0100)]
don't special case `DefKind::Ctor` in encoding

2 years agoAuto merge of #94123 - bjorn3:cg_ssa_singleton_builder, r=tmiasko
bors [Thu, 24 Feb 2022 12:28:19 +0000 (12:28 +0000)]
Auto merge of #94123 - bjorn3:cg_ssa_singleton_builder, r=tmiasko

Partially move cg_ssa towards using a single builder

Not all codegen backends can handle hopping between blocks well. For example Cranelift requires blocks to be terminated before switching to building a new block. Rust-gpu requires a `RefCell` to allow hopping between blocks and cg_gcc currently has a buggy implementation of hopping between blocks. This PR reduces the amount of cases where cg_ssa switches between blocks before they are finished and mostly fixes the block hopping in cg_gcc. (~~only `scalar_to_backend` doesn't handle it correctly yet in cg_gcc~~ fixed that one.)

`@antoyo` please review the cg_gcc changes.

2 years agoIntroduce Bx::switch_to_block
bjorn3 [Fri, 18 Feb 2022 14:37:31 +0000 (15:37 +0100)]
Introduce Bx::switch_to_block

2 years agoAuto merge of #94129 - cjgillot:rmeta-table, r=petrochenkov
bors [Thu, 24 Feb 2022 10:02:26 +0000 (10:02 +0000)]
Auto merge of #94129 - cjgillot:rmeta-table, r=petrochenkov

Back more metadata using per-query tables

r? `@ghost`

2 years agoupdate auto trait lint
lcnr [Thu, 24 Feb 2022 07:36:29 +0000 (08:36 +0100)]
update auto trait lint

2 years agoAuto merge of #94314 - matthiaskrgr:rollup-hmed8n7, r=matthiaskrgr
bors [Thu, 24 Feb 2022 06:56:38 +0000 (06:56 +0000)]
Auto merge of #94314 - matthiaskrgr:rollup-hmed8n7, r=matthiaskrgr

Rollup of 9 pull requests

Successful merges:

 - #89887 (Change `char` type in debuginfo to DW_ATE_UTF)
 - #94267 (Remove unused ordering derivations and bounds for `SimplifiedTypeGen`)
 - #94270 (Miri: relax fn ptr check)
 - #94273 (add matching doc to errorkind)
 - #94283 (remove feature gate in control_flow examples)
 - #94288 (Cleanup a few Decoder methods)
 - #94292 (riscv32imc_esp_espidf: set max_atomic_width to 64)
 - #94296 (:arrow_up: rust-analyzer)
 - #94300 (Fix a typo in documentation of `array::IntoIter::new_unchecked`)

Failed merges:

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

2 years agoRollup merge of #94300 - WaffleLapkin:patch-4, r=scottmcm
Matthias Krüger [Thu, 24 Feb 2022 06:48:12 +0000 (07:48 +0100)]
Rollup merge of #94300 - WaffleLapkin:patch-4, r=scottmcm

Fix a typo in documentation of `array::IntoIter::new_unchecked`

🌸

2 years agoRollup merge of #94296 - lnicola:rust-analyzer-2022-02-23, r=lnicola
Matthias Krüger [Thu, 24 Feb 2022 06:48:11 +0000 (07:48 +0100)]
Rollup merge of #94296 - lnicola:rust-analyzer-2022-02-23, r=lnicola

:arrow_up: rust-analyzer

r? `@ghost`

2 years agoRollup merge of #94292 - esp-rs:riscv32imc-esp-espidf-64bit-atomics, r=petrochenkov
Matthias Krüger [Thu, 24 Feb 2022 06:48:10 +0000 (07:48 +0100)]
Rollup merge of #94292 - esp-rs:riscv32imc-esp-espidf-64bit-atomics, r=petrochenkov

riscv32imc_esp_espidf: set max_atomic_width to 64

For espidf targets without native atomics, there is atomic emulation inside [the newlib component of espidf](https://github.com/espressif/esp-idf/blob/master/components/newlib/stdatomic.c), this has been extended to support emulation up to 64bits therefore we are safe to increase the atomic width for the `riscv32imc_esp_espidf` target.

Closes https://github.com/esp-rs/rust/issues/107

cc: `@ivmarkov`

2 years agoRollup merge of #94288 - Mark-Simulacrum:ser-opt, r=nnethercote
Matthias Krüger [Thu, 24 Feb 2022 06:48:09 +0000 (07:48 +0100)]
Rollup merge of #94288 - Mark-Simulacrum:ser-opt, r=nnethercote

Cleanup a few Decoder methods

This is just some simple follow up to #93839.

r? `@nnethercote`

2 years agoRollup merge of #94283 - hellow554:stable_flow_control, r=Dylan-DPC
Matthias Krüger [Thu, 24 Feb 2022 06:48:08 +0000 (07:48 +0100)]
Rollup merge of #94283 - hellow554:stable_flow_control, r=Dylan-DPC

remove feature gate in control_flow examples

Stabilization was done in https://github.com/rust-lang/rust/pull/91091, but the two examples weren't updated accordingly.

Probably too late to put it into stable, but it should be in the next release :)

2 years agoRollup merge of #94273 - Dylan-DPC:doc/errorkind, r=joshtriplett
Matthias Krüger [Thu, 24 Feb 2022 06:48:07 +0000 (07:48 +0100)]
Rollup merge of #94273 - Dylan-DPC:doc/errorkind, r=joshtriplett

add matching doc to errorkind

Rework of #90706

2 years agoRollup merge of #94270 - RalfJung:fn-ptrs, r=oli-obk
Matthias Krüger [Thu, 24 Feb 2022 06:48:06 +0000 (07:48 +0100)]
Rollup merge of #94270 - RalfJung:fn-ptrs, r=oli-obk

Miri: relax fn ptr check

As discussed in https://github.com/rust-lang/unsafe-code-guidelines/issues/72#issuecomment-1025407536, the function pointer check done by Miri is currently overeager: contrary to our usual principle of only checking rather uncontroversial validity invariants, we actually check that the pointer points to a real function.

So, this relaxes the check to what the validity invariant probably will be (and what the reference already says it is): the function pointer must be non-null, and that's it.

The check that CTFE does on the final value of a constant is unchanged -- CTFE recurses through references, so it makes some sense to also recurse through function pointers. We might still want to relax this in the future, but that would be a separate change.

r? `@oli-obk`

2 years agoRollup merge of #94267 - pierwill:fast-reject-bound, r=michaelwoerister
Matthias Krüger [Thu, 24 Feb 2022 06:48:05 +0000 (07:48 +0100)]
Rollup merge of #94267 - pierwill:fast-reject-bound, r=michaelwoerister

Remove unused ordering derivations and bounds for `SimplifiedTypeGen`

This is another small PR clearing the way for work on #90317.

2 years agoRollup merge of #89887 - arlosi:char-debug, r=wesleywiser
Matthias Krüger [Thu, 24 Feb 2022 06:48:04 +0000 (07:48 +0100)]
Rollup merge of #89887 - arlosi:char-debug, r=wesleywiser

Change `char` type in debuginfo to DW_ATE_UTF

Rust previously encoded the `char` type as DW_ATE_unsigned_char. The more appropriate encoding is `DW_ATE_UTF`.

Clang also uses the DW_ATE_UTF for `char32_t` in C++.

This fixes the display of the `char` type in the Windows debuggers. Without this change, the variable did not show in the locals window.
![image](https://user-images.githubusercontent.com/704597/137368067-9b3e4dc8-a075-44ba-a687-bf3810a44e5a.png)

LLDB 13 is also able to display the char value, when before it failed with `need to add support for DW_TAG_base_type 'char' encoded with DW_ATE = 0x8, bit_size = 32`

r? `@wesleywiser`

2 years agoInline a hot closure in `from_lit_token`.
Nicholas Nethercote [Thu, 24 Feb 2022 05:49:37 +0000 (16:49 +1100)]
Inline a hot closure in `from_lit_token`.

The change looks big because `rustfmt` rearranges things, but the only
real change is the inlining annotation.

2 years agoImprove `scan_escape`.
Nicholas Nethercote [Thu, 24 Feb 2022 05:10:36 +0000 (16:10 +1100)]
Improve `scan_escape`.

`scan_escape` currently has a fast path (for when the first char isn't
'\\') and a slow path.

This commit changes `scan_escape` so it only handles the slow path, i.e.
the actual escaping code. The fast path is inlined into the two call
sites.

This change makes the code faster, because there is no function call
overhead on the fast path. (`scan_escape` is a big function and doesn't
get inlined.)

This change also improves readability, because it removes a bunch of
mode checks on the the fast paths.

2 years agoAuto merge of #94107 - tmiasko:fewer-types, r=davidtwco
bors [Thu, 24 Feb 2022 04:07:48 +0000 (04:07 +0000)]
Auto merge of #94107 - tmiasko:fewer-types, r=davidtwco

Reapply cg_llvm: `fewer_names` in `uncached_llvm_type`

r? `@davidtwco` `@erikdesjardins`

2 years agoAuto merge of #93438 - spastorino:node_id_to_hir_id_refactor, r=oli-obk
bors [Thu, 24 Feb 2022 01:26:57 +0000 (01:26 +0000)]
Auto merge of #93438 - spastorino:node_id_to_hir_id_refactor, r=oli-obk

Node id to hir id refactor

Related to #89278

r? `@oli-obk`

2 years agoword wrpa
Dylan DPC [Wed, 23 Feb 2022 23:37:06 +0000 (00:37 +0100)]
word wrpa

2 years agoword wrpa
Dylan DPC [Wed, 23 Feb 2022 23:30:07 +0000 (00:30 +0100)]
word wrpa

2 years agoUpdate library/std/src/io/error.rs
Dylan DPC [Wed, 23 Feb 2022 22:18:42 +0000 (23:18 +0100)]
Update library/std/src/io/error.rs

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
2 years agoNormalize main return type during mono item collection & codegen
Tomasz Miąsko [Wed, 23 Feb 2022 00:00:00 +0000 (00:00 +0000)]
Normalize main return type during mono item collection & codegen

2 years agoMiri: relax fn ptr check
Ralf Jung [Tue, 22 Feb 2022 23:49:12 +0000 (18:49 -0500)]
Miri: relax fn ptr check

2 years agoAuto merge of #94286 - matthiaskrgr:rollup-6i1spjg, r=matthiaskrgr
bors [Wed, 23 Feb 2022 18:18:23 +0000 (18:18 +0000)]
Auto merge of #94286 - matthiaskrgr:rollup-6i1spjg, r=matthiaskrgr

Rollup of 12 pull requests

Successful merges:

 - #94128 (rustdoc: several minor fixes)
 - #94137 (rustdoc-json: Better Header Type)
 - #94213 (fix names in feature(...) suggestion)
 - #94240 (Suggest calling .display() on `PathBuf` too)
 - #94253 (Use 2021 edition in ./x.py fmt)
 - #94259 (Bump download-ci-llvm-stamp for llvm-nm inclusion)
 - #94260 (Fix rustdoc infinite redirection generation)
 - #94263 (Typo fix: Close inline-code backtick)
 - #94264 (Fix typo.)
 - #94271 (Miri: extend comments on downcast operation)
 - #94280 (Rename `region_should_not_be_omitted` to `should_print_region`)
 - #94285 (Sync rustc_codegen_cranelift)

Failed merges:

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

2 years agoFix a typo in documentation of `array::IntoIter::new_unchecked`
Waffle Maybe [Wed, 23 Feb 2022 18:10:04 +0000 (21:10 +0300)]
Fix a typo in documentation of `array::IntoIter::new_unchecked`

2 years agoAlways check cg_llvm with ./x.py check
bjorn3 [Mon, 24 Jan 2022 13:16:36 +0000 (14:16 +0100)]
Always check cg_llvm with ./x.py check

Previously it would be skipped if codegen-backends doesn't contain llvm.

2 years agoChange `char` type in debuginfo to DW_ATE_UTF
Arlo Siemsen [Thu, 14 Oct 2021 17:26:42 +0000 (10:26 -0700)]
Change `char` type in debuginfo to DW_ATE_UTF

Rust previously encoded the `char` type as DW_ATE_unsigned_char. The more
appropriate encoding is DW_ATE_UTF.

Clang uses this same debug encoding for char32_t.

This fixes the display of `char` types in Windows debuggers as well as LLDB.

2 years agoproperly handle fat pointers to uninhabitable types
Michael Goulet [Wed, 23 Feb 2022 16:11:50 +0000 (08:11 -0800)]
properly handle fat pointers to uninhabitable types

2 years agobackport from stable and fix link
lcnr [Wed, 23 Feb 2022 15:16:34 +0000 (16:16 +0100)]
backport from stable and fix link

2 years agoupdate rel notes for cg stabilization
lcnr [Wed, 23 Feb 2022 15:11:26 +0000 (16:11 +0100)]
update rel notes for cg stabilization

2 years ago:arrow_up: rust-analyzer
Laurențiu Nicola [Wed, 23 Feb 2022 15:11:18 +0000 (17:11 +0200)]
:arrow_up: rust-analyzer

2 years agoriscv32imc_esp_espidf: set max_atomic_width to 64
Scott Mabin [Tue, 22 Feb 2022 10:44:56 +0000 (10:44 +0000)]
riscv32imc_esp_espidf: set max_atomic_width to 64

2 years agoAdd compiler flag `--check-cfg` to the unstable book
Loïc BRANSTETT [Mon, 21 Feb 2022 14:29:04 +0000 (15:29 +0100)]
Add compiler flag `--check-cfg` to the unstable book

2 years agoContinue improvements on the --check-cfg implementation
Loïc BRANSTETT [Sun, 20 Feb 2022 00:26:52 +0000 (01:26 +0100)]
Continue improvements on the --check-cfg implementation

- Test the combinations of --check-cfg with partial values() and --cfg
- Test that we detect unexpected value when none are expected

2 years agoRollup merge of #94285 - bjorn3:sync_cg_clif-2022-02-23, r=bjorn3
Matthias Krüger [Wed, 23 Feb 2022 11:26:48 +0000 (12:26 +0100)]
Rollup merge of #94285 - bjorn3:sync_cg_clif-2022-02-23, r=bjorn3

Sync rustc_codegen_cranelift

r? `@ghost`

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

2 years agoRollup merge of #94280 - tmiasko:should-print-region, r=oli-obk
Matthias Krüger [Wed, 23 Feb 2022 11:26:47 +0000 (12:26 +0100)]
Rollup merge of #94280 - tmiasko:should-print-region, r=oli-obk

Rename `region_should_not_be_omitted` to `should_print_region`

to avoid double negation

2 years agoRollup merge of #94271 - RalfJung:downcast, r=oli-obk
Matthias Krüger [Wed, 23 Feb 2022 11:26:46 +0000 (12:26 +0100)]
Rollup merge of #94271 - RalfJung:downcast, r=oli-obk

Miri: extend comments on downcast operation

r? `@oli-obk`

2 years agoRollup merge of #94264 - NyantasticUwU:patch-1, r=yaahc
Matthias Krüger [Wed, 23 Feb 2022 11:26:45 +0000 (12:26 +0100)]
Rollup merge of #94264 - NyantasticUwU:patch-1, r=yaahc

Fix typo.

Yeah just a typo (probably some breaking changes in here be careful) :)

2 years agoRollup merge of #94263 - anko:patch-1, r=GuillaumeGomez
Matthias Krüger [Wed, 23 Feb 2022 11:26:45 +0000 (12:26 +0100)]
Rollup merge of #94263 - anko:patch-1, r=GuillaumeGomez

Typo fix: Close inline-code backtick

A drop in the ocean.

2 years agoRollup merge of #94260 - GuillaumeGomez:infinite-redirection, r=notriddle
Matthias Krüger [Wed, 23 Feb 2022 11:26:44 +0000 (12:26 +0100)]
Rollup merge of #94260 - GuillaumeGomez:infinite-redirection, r=notriddle

Fix rustdoc infinite redirection generation

Someone came to me about a funny bug they had when clicking on any link on [this page](https://world.pages.gitlab.gnome.org/Rust/libadwaita-rs/stable/latest/docs/libadwaita/builders/index.html): it ended one page redirecting to itself indefinitely.

I was able to make a minimum reproducible case to trigger this bug which I now use as a test.

r? ``@notriddle``