]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoAuto merge of #79608 - alessandrod:bpf, r=nagisa
bors [Sun, 6 Jun 2021 01:02:32 +0000 (01:02 +0000)]
Auto merge of #79608 - alessandrod:bpf, r=nagisa

BPF target support

This adds `bpfel-unknown-none` and `bpfeb-unknown-none`, two new no_std targets that generate little and big endian BPF. The approach taken is very similar to the cuda target, where `TargetOptions::obj_is_bitcode` is enabled and code generation is done by the linker.

I added the targets to `dist-various-2`. There are [some tests](https://github.com/alessandrod/bpf-linker/tree/main/tests/assembly) in bpf-linker and I'm planning to add more. Those are currently not ran as part of rust CI.

3 years agoAuto merge of #86002 - cjgillot:expn_that_defined, r=petrochenkov
bors [Sat, 5 Jun 2021 21:10:01 +0000 (21:10 +0000)]
Auto merge of #86002 - cjgillot:expn_that_defined, r=petrochenkov

Always go through the expn_that_defined query.

3 years agoAuto merge of #86032 - GuillaumeGomez:rollup-y3ij27b, r=GuillaumeGomez
bors [Sat, 5 Jun 2021 18:41:36 +0000 (18:41 +0000)]
Auto merge of #86032 - GuillaumeGomez:rollup-y3ij27b, r=GuillaumeGomez

Rollup of 7 pull requests

Successful merges:

 - #83646 (Add a map method to Bound)
 - #85501 (Fix `deny(invalid_doc_attributes)`)
 - #85503 (rustdoc: add tooltips to some buttons)
 - #85710 (Document `From` impls in path.rs)
 - #85760 (Possible errors when accessing file metadata are platform specific)
 - #85974 (td align attribute)
 - #86014 (msp430 linker does not accept -znoexecstack. Set linker_is_gnu to fal…)

Failed merges:

 - #85972 (Rustdoc html fixes)

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

3 years agoUpdate compiler/rustc_middle/src/query/mod.rs
Camille Gillot [Sat, 5 Jun 2021 18:40:58 +0000 (20:40 +0200)]
Update compiler/rustc_middle/src/query/mod.rs

3 years agoRollup merge of #86014 - cr1901:msp430-link, r=jonas-schievink
Guillaume Gomez [Sat, 5 Jun 2021 17:41:45 +0000 (19:41 +0200)]
Rollup merge of #86014 - cr1901:msp430-link, r=jonas-schievink

msp430 linker does not accept -znoexecstack. Set linker_is_gnu to fal…

…se as workaround for now.

Tested locally and works. Closes #85948.

3 years agoRollup merge of #85974 - GuillaumeGomez:td-align, r=jsha
Guillaume Gomez [Sat, 5 Jun 2021 17:41:44 +0000 (19:41 +0200)]
Rollup merge of #85974 - GuillaumeGomez:td-align, r=jsha

td align attribute

This is a follow-up of #85972. I have put this one on its own because it changes the display:

![Screenshot from 2021-06-03 21-49-11](https://user-images.githubusercontent.com/3050060/120703622-d533d280-c4b5-11eb-9519-ea1131a40bee.png)

Without align:

![Screenshot from 2021-06-03 21-49-15](https://user-images.githubusercontent.com/3050060/120703623-d5cc6900-c4b5-11eb-95f9-878d3915c7fb.png)

I also opened an issue about it: raphlinus/pulldown-cmark#533. However, I'm not sure if this is the right course of action... Should we instead ignore the warning?

r? ``@jsha``

3 years agoRollup merge of #85760 - ChrisDenton:path-doc-platform-specific, r=m-ou-se
Guillaume Gomez [Sat, 5 Jun 2021 17:41:43 +0000 (19:41 +0200)]
Rollup merge of #85760 - ChrisDenton:path-doc-platform-specific, r=m-ou-se

Possible errors when accessing file metadata are platform specific

In particular the `is_dir`, `is_file` and `exists` functions suggests that querying a file requires querying the directory. On Windows this is not normally true.

r? `@m-ou-se`

3 years agoRollup merge of #85710 - fee1-dead:document-path, r=m-ou-se
Guillaume Gomez [Sat, 5 Jun 2021 17:41:42 +0000 (19:41 +0200)]
Rollup merge of #85710 - fee1-dead:document-path, r=m-ou-se

Document `From` impls in path.rs

3 years agoRollup merge of #85503 - liigo:tooltips, r=GuillaumeGomez
Guillaume Gomez [Sat, 5 Jun 2021 17:41:41 +0000 (19:41 +0200)]
Rollup merge of #85503 - liigo:tooltips, r=GuillaumeGomez

rustdoc: add tooltips to some buttons

3 years agoRollup merge of #85501 - jyn514:invalid-doc-attrs, r=varkor
Guillaume Gomez [Sat, 5 Jun 2021 17:41:40 +0000 (19:41 +0200)]
Rollup merge of #85501 - jyn514:invalid-doc-attrs, r=varkor

Fix `deny(invalid_doc_attributes)`

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

3 years agoRollup merge of #83646 - glittershark:bound-map, r=m-ou-se
Guillaume Gomez [Sat, 5 Jun 2021 17:41:34 +0000 (19:41 +0200)]
Rollup merge of #83646 - glittershark:bound-map, r=m-ou-se

Add a map method to Bound

Add a map method to std::ops::range::Bound, patterned off of the method
of the same name on Option.

Have left off creating a tracking issue initially, but as soon as I get the go-ahead from a reviewer I'll make that right away 😄

3 years agoAdd a map method to Bound
Griffin Smith [Mon, 29 Mar 2021 14:35:21 +0000 (10:35 -0400)]
Add a map method to Bound

Add a map method to std::ops::range::Bound, patterned off of the method
of the same name on Option

3 years agoAuto merge of #85869 - tmiasko:box-free, r=nagisa
bors [Sat, 5 Jun 2021 14:08:38 +0000 (14:08 +0000)]
Auto merge of #85869 - tmiasko:box-free, r=nagisa

Remove special handling of `box_free` from `LocalAnalyzer`

The special casing of `box_free` predates the use of dominators in
analyzer. It is no longer necessary now that analyzer verifies that
the first assignment dominates all uses.

3 years agoAuto merge of #86001 - richkadel:revert-85617-rustin-patch-fix, r=Mark-Simulacrum
bors [Sat, 5 Jun 2021 11:12:57 +0000 (11:12 +0000)]
Auto merge of #86001 - richkadel:revert-85617-rustin-patch-fix, r=Mark-Simulacrum

Revert "shrinking the deprecated method span"

Reverts rust-lang/rust#85617

Fixes: #86000
r? `@Mark-Simulacrum`

3 years agoAuto merge of #85990 - jyn514:channel-replace-rustdoc, r=Manishearth
bors [Sat, 5 Jun 2021 08:42:05 +0000 (08:42 +0000)]
Auto merge of #85990 - jyn514:channel-replace-rustdoc, r=Manishearth

rustdoc: link consistently to stable/beta in diagnostic messages

Builds on https://github.com/rust-lang/rust/pull/84942. This makes the diagnostics consistent with the links.

3 years agoAuto merge of #85919 - workingjubilee:simd-ptrs-are-valid, r=petrochenkov
bors [Sat, 5 Jun 2021 06:17:17 +0000 (06:17 +0000)]
Auto merge of #85919 - workingjubilee:simd-ptrs-are-valid, r=petrochenkov

Allow raw pointers in SIMD types

Closes #85915 by loosening the strictness in typechecking and adding a test to guarantee it passes.

This still might be too strict, as references currently do pass monomorphization, but my understanding is that they are not guaranteed to be "scalar" in the same way.

3 years agoAuto merge of #85457 - jyn514:remove-doc-include, r=GuillaumeGomez
bors [Sat, 5 Jun 2021 03:36:26 +0000 (03:36 +0000)]
Auto merge of #85457 - jyn514:remove-doc-include, r=GuillaumeGomez

Remove `doc(include)`

This nightly feature is redundant now that `extended_key_value_attributes` is stable (https://github.com/rust-lang/rust/pull/83366). `@rust-lang/rustdoc` not sure if you think this needs FCP; there was already an FCP in #82539, but technically it was for deprecating, not removing the feature altogether.

This should not be merged before #83366.

cc `@petrochenkov`

3 years agoAuto merge of #84234 - jyn514:blanket-hash, r=Aaron1011
bors [Sat, 5 Jun 2021 01:08:51 +0000 (01:08 +0000)]
Auto merge of #84234 - jyn514:blanket-hash, r=Aaron1011

Implement DepTrackingHash for `Option` through blanket impls instead of macros

This avoids having to add a new macro call for both the `Option` and the type itself.

Noticed this while working on https://github.com/rust-lang/rust/pull/84233.
r? `@Aaron1011`

3 years agomsp430 linker does not accept -znoexecstack. Set linker_is_gnu to false as workaround...
William D. Jones [Sat, 5 Jun 2021 00:37:53 +0000 (20:37 -0400)]
msp430 linker does not accept -znoexecstack. Set linker_is_gnu to false as workaround for now.

3 years agoAuto merge of #86006 - JohnTitor:rollup-97iuoi3, r=JohnTitor
bors [Fri, 4 Jun 2021 22:18:16 +0000 (22:18 +0000)]
Auto merge of #86006 - JohnTitor:rollup-97iuoi3, r=JohnTitor

Rollup of 10 pull requests

Successful merges:

 - #83653 (Remove unused code from `rustc_data_structures::sync`)
 - #84466 (rustdoc: Remove `PrimitiveType::{to_url_str, as_str}`)
 - #84880 (Make match in `register_res` easier to read)
 - #84942 (rustdoc: link to stable/beta docs consistently in documentation)
 - #85853 (Warn against boxed DST in `improper_ctypes_definitions` lint)
 - #85939 (Fix suggestion for removing &mut from &mut macro!().)
 - #85966 (wasm: Make simd types passed via indirection again)
 - #85979 (don't suggest unsized indirection in where-clauses)
 - #85983 (Update to semver 1.0.3)
 - #85988 (Note that `ninja = false` goes under `[llvm]`)

Failed merges:

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

3 years agoAdded a new test demonstrating the issue requiring revert
Rich Kadel [Fri, 4 Jun 2021 22:14:32 +0000 (15:14 -0700)]
Added a new test demonstrating the issue requiring revert

Note, the `Debug` impl is required.

3 years agoRollup merge of #85988 - jyn514:ninja-error, r=joshtriplett
Yuki Okushi [Fri, 4 Jun 2021 21:13:47 +0000 (06:13 +0900)]
Rollup merge of #85988 - jyn514:ninja-error, r=joshtriplett

Note that `ninja = false` goes under `[llvm]`

Addresses https://github.com/rust-lang/rust/issues/84938#issuecomment-852448332 - `@kornelski` does this look good?

r? `@Mark-Simulacrum` cc `@joshtriplett`

3 years agoRollup merge of #85983 - dtolnay:semverx, r=ehuss
Yuki Okushi [Fri, 4 Jun 2021 21:13:46 +0000 (06:13 +0900)]
Rollup merge of #85983 - dtolnay:semverx, r=ehuss

Update to semver 1.0.3

Fixes https://github.com/rust-lang/cargo/pull/9508#issuecomment-854326213 by pulling in https://github.com/dtolnay/semver/pull/247.

Fixes https://github.com/rust-lang/cargo/issues/9543

3 years agoRollup merge of #85979 - tlyu:where-no-unsized-indirection, r=estebank
Yuki Okushi [Fri, 4 Jun 2021 21:13:45 +0000 (06:13 +0900)]
Rollup merge of #85979 - tlyu:where-no-unsized-indirection, r=estebank

don't suggest unsized indirection in where-clauses

Skip where-clauses when suggesting using indirection in combination with
`?Sized` bounds on type parameters.

Fixes #85943.

`@estebank` I think this doesn't conflict with your work in #85947; please let me know if you'd like me to cherry pick it to a new branch based on yours instead.

3 years agoRollup merge of #85966 - alexcrichton:wasm-simd-indirect, r=workingjubilee
Yuki Okushi [Fri, 4 Jun 2021 21:13:43 +0000 (06:13 +0900)]
Rollup merge of #85966 - alexcrichton:wasm-simd-indirect, r=workingjubilee

wasm: Make simd types passed via indirection again

This commit updates wasm target specs to use `simd_types_indirect: true`
again. Long ago this was added since wasm simd types were always
translated to `v128` under-the-hood in LLVM, meaning that it didn't
matter whether that target feature was enabled or not. Now, however,
`v128` is conditionally used in codegen depending on target features
enabled, meaning that it's possible to get linker errors about different
signatures in code that correctly uses simd types. The fix is the same
as for all other platforms, which is to pass the type indirectly.

3 years agoRollup merge of #85939 - m-ou-se:fix-remove-ref-macro-invocation, r=estebank
Yuki Okushi [Fri, 4 Jun 2021 21:13:39 +0000 (06:13 +0900)]
Rollup merge of #85939 - m-ou-se:fix-remove-ref-macro-invocation, r=estebank

Fix suggestion for removing &mut from &mut macro!().

Fixes #85933

Before: (Note the suggestions.)
```
error[E0308]: mismatched types
 --> src/main.rs:2:21
  |
2 |     let _: String = &mut format!("");
  |            ------   ^^^^^^^^^^^^^^^^
  |            |        |
  |            |        expected struct `String`, found `&mut String`
  |            |        help: consider removing the borrow: `mut format!("")`
  |            expected due to this

error[E0308]: mismatched types
 --> src/main.rs:3:21
  |
3 |     let _: String = &mut (format!(""));
  |            ------   ^^^^^^^^^^^^^^^^^^
  |            |        |
  |            |        expected struct `String`, found `&mut String`
  |            |        help: consider removing the borrow: `mut (format!(""))`
  |            expected due to this
```

After:
```
error[E0308]: mismatched types
 --> src/main.rs:2:21
  |
2 |     let _: String = &mut format!("");
  |            ------   ^^^^^^^^^^^^^^^^
  |            |        |
  |            |        expected struct `String`, found `&mut String`
  |            |        help: consider removing the borrow: `format!("")`
  |            expected due to this

error[E0308]: mismatched types
 --> src/main.rs:3:21
  |
3 |     let _: String = &mut (format!(""));
  |            ------   ^^^^^^^^^^^^^^^^^^
  |            |        |
  |            |        expected struct `String`, found `&mut String`
  |            |        help: consider removing the borrow: `format!("")`
  |            expected due to this
```

3 years agoRollup merge of #85853 - marmeladema:improper-ctypes-definitions-boxed-dst, r=petroch...
Yuki Okushi [Fri, 4 Jun 2021 21:13:38 +0000 (06:13 +0900)]
Rollup merge of #85853 - marmeladema:improper-ctypes-definitions-boxed-dst, r=petrochenkov

Warn against boxed DST in `improper_ctypes_definitions` lint

Fixes #85714

3 years agoRollup merge of #84942 - jyn514:channel-replace, r=Manishearth
Yuki Okushi [Fri, 4 Jun 2021 21:13:37 +0000 (06:13 +0900)]
Rollup merge of #84942 - jyn514:channel-replace, r=Manishearth

rustdoc: link to stable/beta docs consistently in documentation

This is an alternative to https://github.com/rust-lang/rust/pull/84941 which fixes the problem consistently by linking to stable/beta for *all* items, not just for primitives.

 ## User-facing changes

- Intra-doc links to primitives that currently go to rust-lang.org/nightly/std/primitive.x.html will start going to channel that rustdoc was built with. Nightly will continue going to /nightly; Beta will link to /beta; stable compilers will link to /1.52.1 (or whatever version they were built as).
- Cross-crate links from std to core currently go to /nightly unconditionally. They will start going to /1.52.0 on stable channels (but remain the same on nightly channels).
- Intra-crate links from std to std (or core to core) currently go to the same URL they are hosted at; they will continue to do so. Notably, this is different from everything else because it can preserve the distinction between /stable and /1.52.0 by using relative links.

Note that "links" includes both intra-doc links and rustdoc's own
automatically generated hyperlinks.

 ## Implementation changes

- Update the testsuite to allow linking to /beta and /1.52.1 in docs
- Use an html_root_url for the standard library that's dependent on the channel

  This avoids linking to nightly docs on stable.

- Update rustdoc to use channel-dependent links for primitives from an
  unknown crate

- Set DOC_RUST_LANG_ORG_CHANNEL from bootstrap to ensure it's in sync
- Include doc.rust-lang.org in the channel

cc Mark-Simulacrum - I know [you were dubious about this in the past](https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/Rustdoc.20unconditionally.20links.20to.20nightly.20libstd.20docs/near/231223124), but I'm not quite sure why? I see this as "just a bugfix", I don't know why rustdoc should unconditionally link to nightly.
cc dtolnay who commented in https://github.com/rust-lang/rust/issues/30693:

>  I would welcome a PR to solve this permanently if anyone has ideas for how. I don't believe we need an RFC.

Fixes https://github.com/rust-lang/rust/issues/30693 (note that issue is marked as feature-accepted, although I don't see where it was discussed).

3 years agoRollup merge of #84880 - jyn514:cleanup-itemkind, r=GuillaumeGomez
Yuki Okushi [Fri, 4 Jun 2021 21:13:32 +0000 (06:13 +0900)]
Rollup merge of #84880 - jyn514:cleanup-itemkind, r=GuillaumeGomez

Make match in `register_res` easier to read

- Don't duplicate DefKind -> ItemType handling; that's a good way to get bugs
- Use exhaustive match
- Add comments

This found that register_res is very wrong in at least one way: if it
registers a Res for `Variant`, it should also register one for `Field`.
But I don't know whether the one for Variant should be removed or Field
added. Maybe someone has ideas?

Found while reviewing https://github.com/rust-lang/rust/pull/84176.

3 years agoRollup merge of #84466 - jyn514:prim-str, r=GuillaumeGomez
Yuki Okushi [Fri, 4 Jun 2021 21:13:30 +0000 (06:13 +0900)]
Rollup merge of #84466 - jyn514:prim-str, r=GuillaumeGomez

rustdoc: Remove `PrimitiveType::{to_url_str, as_str}`

These can easily be rewritten in terms of `as_sym`, and this avoids bugs where the two get out of sync.

I don't expect this to have a perf impact, but I'll start a perf run just in case.

3 years agoRollup merge of #83653 - jyn514:unused-sync-code, r=wesleywiser
Yuki Okushi [Fri, 4 Jun 2021 21:13:29 +0000 (06:13 +0900)]
Rollup merge of #83653 - jyn514:unused-sync-code, r=wesleywiser

Remove unused code from `rustc_data_structures::sync`

Found using https://github.com/est31/warnalyzer. Follow-up to https://github.com/rust-lang/rust/pull/83185.

r? `@Zoxc` cc `@oli-obk`

3 years agoAlways go through the expn_that_defined query.
Camille GILLOT [Fri, 4 Jun 2021 19:37:05 +0000 (21:37 +0200)]
Always go through the expn_that_defined query.

3 years agoAuto merge of #84449 - alexcrichton:metadata-in-object, r=nagisa
bors [Fri, 4 Jun 2021 19:29:50 +0000 (19:29 +0000)]
Auto merge of #84449 - alexcrichton:metadata-in-object, r=nagisa

rustc: Store metadata-in-rlibs in object files

This commit updates how rustc compiler metadata is stored in rlibs.
Previously metadata was stored as a raw file that has the same format as
`--emit metadata`. After this commit, however, the metadata is encoded
into a small object file which has one section which is the contents of
the metadata.

The motivation for this commit is to fix a common case where #83730
arises. The problem is that when rustc crates a `dylib` crate type it
needs to include entire rlib files into the dylib, so it passes
`--whole-archive` (or the equivalent) to the linker. The problem with
this, though, is that the linker will attempt to read all files in the
archive. If the metadata file were left as-is (today) then the linker
would generate an error saying it can't read the file. The previous
solution was to alter the rlib just before linking, creating a new
archive in a temporary directory which has the metadata file removed.

This problem from before this commit is now removed if the metadata file
is stored in an object file that the linker can read. The only caveat we
have to take care of is to ensure that the linker never actually
includes the contents of the object file into the final output. We apply
similar tricks as the `.llvmbc` bytecode sections to do this.

This involved changing the metadata loading code a bit, namely updating
some of the LLVM C APIs used to use non-deprecated ones and fiddling
with the lifetimes a bit to get everything to work out. Otherwise though
this isn't intended to be a functional change really, only that metadata
is stored differently in archives now.

This should end up fixing #83730 because by default dylibs will no
longer have their rlib dependencies "altered" meaning that
split-debuginfo will continue to have valid paths pointing at the
original rlibs. (note that we still "alter" rlibs if LTO is enabled to
remove Rust object files and we also "alter" for the #[link(cfg)]
feature, but that's rarely used).

Closes #83730

3 years agoRevert "shrinking the deprecated method span"
Rich Kadel [Fri, 4 Jun 2021 19:26:36 +0000 (12:26 -0700)]
Revert "shrinking the deprecated method span"

3 years agoUnify parallel and non-parallel APIs
Joshua Nelson [Wed, 31 Mar 2021 16:29:34 +0000 (12:29 -0400)]
Unify parallel and non-parallel APIs

It's confusing for these to be different, even if some of the methods
are unused.

3 years agoRemove unused code from `rustc_data_structures::sync`
Joshua Nelson [Mon, 29 Mar 2021 17:56:25 +0000 (13:56 -0400)]
Remove unused code from `rustc_data_structures::sync`

Found using https://github.com/est31/warnalyzer.

3 years agoFix `deny(invalid_doc_attributes)`
Joshua Nelson [Thu, 20 May 2021 03:13:26 +0000 (23:13 -0400)]
Fix `deny(invalid_doc_attributes)`

3 years agorustdoc: link consistently to stable/beta in diagnostic messages
Joshua Nelson [Wed, 5 May 2021 03:36:33 +0000 (23:36 -0400)]
rustdoc: link consistently to stable/beta in diagnostic messages

3 years agorustdoc: link to stable/beta docs consistently in documentation
Joshua Nelson [Wed, 5 May 2021 03:36:33 +0000 (23:36 -0400)]
rustdoc: link to stable/beta docs consistently in documentation

 ## User-facing changes

- Intra-doc links to primitives that currently go to rust-lang.org/nightly/std/primitive.x.html will start going to channel that rustdoc was built with. Nightly will continue going to /nightly; Beta will link to /beta; stable compilers will link to /1.52.1 (or whatever version they were built as).
- Cross-crate links from std to core currently go to /nightly unconditionally. They will start going to /1.52.0 on stable channels (but remain the same on nightly channels).
- Intra-crate links from std to std (or core to core) currently go to the same URL they are hosted at; they will continue to do so. Notably, this is different from everything else because it can preserve the distinction between /stable and /1.52.0 by using relative links.

Note that "links" includes both intra-doc links and rustdoc's own
automatically generated hyperlinks.

 ## Implementation changes

- Update the testsuite to allow linking to /beta and /1.52.1 in docs
- Use an html_root_url for the standard library that's dependent on the channel

  This avoids linking to nightly docs on stable.

- Update rustdoc to use channel-dependent links for primitives from an
  unknown crate

- Set DOC_RUST_LANG_ORG_CHANNEL from bootstrap to ensure it's in sync
- Include doc.rust-lang.org in the channel

3 years agorustc: Store metadata-in-rlibs in object files
Alex Crichton [Thu, 22 Apr 2021 18:53:33 +0000 (11:53 -0700)]
rustc: Store metadata-in-rlibs in object files

This commit updates how rustc compiler metadata is stored in rlibs.
Previously metadata was stored as a raw file that has the same format as
`--emit metadata`. After this commit, however, the metadata is encoded
into a small object file which has one section which is the contents of
the metadata.

The motivation for this commit is to fix a common case where #83730
arises. The problem is that when rustc crates a `dylib` crate type it
needs to include entire rlib files into the dylib, so it passes
`--whole-archive` (or the equivalent) to the linker. The problem with
this, though, is that the linker will attempt to read all files in the
archive. If the metadata file were left as-is (today) then the linker
would generate an error saying it can't read the file. The previous
solution was to alter the rlib just before linking, creating a new
archive in a temporary directory which has the metadata file removed.

This problem from before this commit is now removed if the metadata file
is stored in an object file that the linker can read. The only caveat we
have to take care of is to ensure that the linker never actually
includes the contents of the object file into the final output. We apply
similar tricks as the `.llvmbc` bytecode sections to do this.

This involved changing the metadata loading code a bit, namely updating
some of the LLVM C APIs used to use non-deprecated ones and fiddling
with the lifetimes a bit to get everything to work out. Otherwise though
this isn't intended to be a functional change really, only that metadata
is stored differently in archives now.

This should end up fixing #83730 because by default dylibs will no
longer have their rlib dependencies "altered" meaning that
split-debuginfo will continue to have valid paths pointing at the
original rlibs. (note that we still "alter" rlibs if LTO is enabled to
remove Rust object files and we also "alter" for the #[link(cfg)]
feature, but that's rarely used).

Closes #83730

3 years agoAuto merge of #85806 - ATiltedTree:android-ndk-beta, r=petrochenkov
bors [Fri, 4 Jun 2021 16:48:50 +0000 (16:48 +0000)]
Auto merge of #85806 - ATiltedTree:android-ndk-beta, r=petrochenkov

Support Android ndk versions `r23-beta3` and up

Since android ndk version `r23-beta3`, `libgcc` has been replaced with `libunwind`. This moves the linking of `libgcc`/`libunwind` into the `unwind` crate where we check if the system compiler can find `libunwind` and fall back to `libgcc` if needed.

3 years agoImprove error message
Joshua Nelson [Fri, 4 Jun 2021 16:07:56 +0000 (12:07 -0400)]
Improve error message

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
3 years agoUpdate `compiler_builtins` to v0.1.45
Tilmann Meyer [Fri, 4 Jun 2021 13:34:34 +0000 (15:34 +0200)]
Update `compiler_builtins` to v0.1.45

3 years agoAuto merge of #85788 - rylev:force-warns, r=nikomatsakis
bors [Fri, 4 Jun 2021 13:31:51 +0000 (13:31 +0000)]
Auto merge of #85788 - rylev:force-warns, r=nikomatsakis

Support for force-warns

Implements https://github.com/rust-lang/rust/issues/85512.

This PR adds a new command line option `force-warns` which will force the provided lints to warn even if they are allowed by some other mechanism such as `#![allow(warnings)]`.

Some remaining issues:
* https://github.com/rust-lang/rust/issues/85512 mentions that `force-warns` should also be capable of taking lint groups instead of individual lints. This is not implemented.
* If a lint has a higher warning level than `warn`, this will cause that lint to warn instead. We probably want to allow the lint to error if it is set to a higher lint and is not allowed somewhere else.
* One test is currently ignored because it's not working - when a deny-by-default lint is allowed, it does not currently warn under `force-warns`. I'm not sure why, but I wanted to get this in before the weekend.

r? `@nikomatsakis`

3 years agoImplement DepTrackingHash for `Option` through blanket impls instead of macros
Joshua Nelson [Thu, 15 Apr 2021 23:36:25 +0000 (19:36 -0400)]
Implement DepTrackingHash for `Option` through blanket impls instead of macros

This avoids having to add a new macro call for both the `Option` and the
type itself.

3 years agoNote that `ninja = false` goes under `[llvm]`
Joshua Nelson [Fri, 4 Jun 2021 12:32:03 +0000 (08:32 -0400)]
Note that `ninja = false` goes under `[llvm]`

3 years agoRemove `doc(include)`
Joshua Nelson [Wed, 19 May 2021 01:46:41 +0000 (21:46 -0400)]
Remove `doc(include)`

3 years agoAuto merge of #85385 - richkadel:simpler-simplify-with-coverage, r=wesleywiser
bors [Fri, 4 Jun 2021 10:18:54 +0000 (10:18 +0000)]
Auto merge of #85385 - richkadel:simpler-simplify-with-coverage, r=wesleywiser

Reland - Report coverage `0` of dead blocks

Fixes: #84018
With `-Z instrument-coverage`, coverage reporting of dead blocks
(for example, blocks dropped because a conditional branch is dropped,
based on const evaluation) is now supported.

Note, this PR relands an earlier, reverted PR that failed when compiling
generators. The prior issues with generators has been resolved and a new
test was added to prevent future regressions.

Check out the resulting changes to test coverage of dead blocks in the
test coverage reports in this PR.

r? `@tmandry`
fyi: `@wesleywiser`

3 years agoFix invalid align attribute generation on <td> elements
Guillaume Gomez [Thu, 3 Jun 2021 19:48:54 +0000 (21:48 +0200)]
Fix invalid align attribute generation on <td> elements

3 years agoAuto merge of #85959 - RalfJung:miri-stage-0, r=Mark-Simulacrum
bors [Fri, 4 Jun 2021 07:10:55 +0000 (07:10 +0000)]
Auto merge of #85959 - RalfJung:miri-stage-0, r=Mark-Simulacrum

fix testing Miri with --stage 0

Fixes https://github.com/rust-lang/rust/issues/78778 for Miri.

The issue remains open for error_index_generator, which has its own dylib logic:
https://github.com/rust-lang/rust/blob/903e369c831d52726a5292f847e384622189d9a0/src/bootstrap/tool.rs#L396-L400
`@jyn514` I could just copy the logic from `add_rustc_lib_path`, but that does not seem great. Any other suggestions?

Also I wonder if maybe `prepare_tool_cargo` should already call `add_rustc_lib_path`.

3 years agoAuto merge of #85984 - JohnTitor:rollup-rq0g9ph, r=JohnTitor
bors [Fri, 4 Jun 2021 04:50:36 +0000 (04:50 +0000)]
Auto merge of #85984 - JohnTitor:rollup-rq0g9ph, r=JohnTitor

Rollup of 8 pull requests

Successful merges:

 - #85717 (Document `From` impls for cow.rs)
 - #85850 (Remove unused feature gates)
 - #85888 (Fix typo in internal documentation for `TrustedRandomAccess`)
 - #85889 (Restoring the `num_def_ids` function in the CStore API )
 - #85899 (jsondocck small cleanup)
 - #85937 (Fix bad suggestions for code from proc_macro)
 - #85963 (Show `::{{constructor}}` in std::any::type_name().)
 - #85977 (Fix linkcheck script from getting out of sync.)

Failed merges:

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

3 years agoRollup merge of #85977 - ehuss:linkcheck-nightly, r=Mark-Simulacrum
Yuki Okushi [Fri, 4 Jun 2021 04:43:06 +0000 (13:43 +0900)]
Rollup merge of #85977 - ehuss:linkcheck-nightly, r=Mark-Simulacrum

Fix linkcheck script from getting out of sync.

When there are changes to the linkcheck script, the CI jobs used in the books would download the latest version on master, but run it against nightly. During that 24 hour window, the CI can fail if the script has changes that are incompatible with the last nightly. This fixes it so that it downloads the linkchecker that matches the version of nightly.

This also includes a fix to build with release to make it run much faster (I forgot to add this in #85652).

3 years agoRollup merge of #85963 - m-ou-se:constructor-type-name, r=yaahc
Yuki Okushi [Fri, 4 Jun 2021 04:43:02 +0000 (13:43 +0900)]
Rollup merge of #85963 - m-ou-se:constructor-type-name, r=yaahc

Show `::{{constructor}}` in std::any::type_name().

Fix #84666

Before:
```
[src/main.rs:6] type_name::<T>() = "playground::Velocity"
[src/main.rs:6] type_name::<T>() = "playground::Velocity"
```

After:
```
[src/main.rs:6] type_name::<T>() = "scratchpad::Velocity::{{constructor}}"
[src/main.rs:6] type_name::<T>() = "scratchpad::Velocity"
```

cc ``@scottmcm``

3 years agoRollup merge of #85937 - m-ou-se:macro-ref-suggestions, r=estebank
Yuki Okushi [Fri, 4 Jun 2021 04:42:58 +0000 (13:42 +0900)]
Rollup merge of #85937 - m-ou-se:macro-ref-suggestions, r=estebank

Fix bad suggestions for code from proc_macro

Fixes #85932

This disables these suggestions for spans from external macros, while keeping them for macros defined locally:

Before:
```
3 | #[hello]
  | ^^^^^^^^
  | |
  | expected `&mut i32`, found integer
  | help: consider mutably borrowing here: `&mut #[hello]`
```

After:
```
3 | #[hello]
  | ^^^^^^^^ expected `&mut i32`, found integer
```

Unchanged:
```
26 | macro_rules! bla { () => { x(123); } }
   |                              ^^^
   |                              |
   |                              expected `&mut i32`, found integer
   |                              help: consider mutably borrowing here: `&mut 123`
...
29 |     bla!();
   |     ------- in this macro invocation
```

3 years agoRollup merge of #85899 - klensy:jsondocck-f, r=Mark-Simulacrum
Yuki Okushi [Fri, 4 Jun 2021 04:42:57 +0000 (13:42 +0900)]
Rollup merge of #85899 - klensy:jsondocck-f, r=Mark-Simulacrum

jsondocck small cleanup

updated `shlex` (there was some fix https://github.com/comex/rust-shlex/commit/6db4704fcad8393dd6947b1d31720327546a84a2)
replaced `lazy_static` with `once_cell`
removed `serde` direct dependency (`serde_json` will pull it)

3 years agoRollup merge of #85889 - denismerigoux:master, r=petrochenkov
Yuki Okushi [Fri, 4 Jun 2021 04:42:56 +0000 (13:42 +0900)]
Rollup merge of #85889 - denismerigoux:master, r=petrochenkov

Restoring the `num_def_ids` function in the CStore API

## The context

I am the maintainer of https://github.com/hacspec/hacspec, an embedded Rust DSL aimed at cryptographic specifications. As it is normal for an embedded DSL, Hacspec's compiler relies on being plugged to the internal API of the Rust compiler, which is unstable and subject to changes.

## The problem

The Hacspec compiler features its own typechecker, that performs an additional, more restrictive typechecking pass over the Rust code of a crate. To complete this typechecking, the Hacspec compiler needs to retrieve the signature of functions defined in non-local imported crates. Rather than retrieving these signatures on-demand, the Hacspec compiler pre-populates its typechecking context with all the Hacspec-compatible symbols defined in non-local crates first. This requires having a way to iterate over all the definitions in a non-local crate.

I used to do this with `CrateMetadata::all_def_path_hashes_and_def_ids`, but this function was deleted in 908bf5a310b7265a3e. Then, I fellback on `CStore::num_def_ids`, exploiting the fact that all the `DefIds` for a crate have the same `krate_num` and range from `0` to `num_def_ids(krate_num)`. But `num_def_ids` was deleted in b6120bfb354c1c1c9fdf.

I looked to the `Cstore::item_children_untracked` function to replicate the feature of traversing through all the `DefId` for a crate, using `CRATE_DEF_INDEX` as the root, but this does not work as recursive `Cstore::item_children_untracked` calls do not reach all the symbols I was able to reach using the two previous methods.

## Description of this PR

This PR simply restores in the public API of `CStore` the `num_def_ids` function, giving the size of the definition table for a given crate.

3 years agoRollup merge of #85888 - steffahn:fix_internal_trustedrandomaccess_docs, r=Mark-Simul...
Yuki Okushi [Fri, 4 Jun 2021 04:42:55 +0000 (13:42 +0900)]
Rollup merge of #85888 - steffahn:fix_internal_trustedrandomaccess_docs, r=Mark-Simulacrum

Fix typo in internal documentation for `TrustedRandomAccess`

`next_back` is a method of DoubleEndedIterator, not Iterator.

3 years agoRollup merge of #85850 - bjorn3:less_feature_gates, r=jyn514
Yuki Okushi [Fri, 4 Jun 2021 04:42:54 +0000 (13:42 +0900)]
Rollup merge of #85850 - bjorn3:less_feature_gates, r=jyn514

Remove unused feature gates

The first commit removes a usage of a feature gate, but I don't expect it to be controversial as the feature gate was only used to workaround a limitation of rust in the past. (closures never being `Clone`)

The second commit uses `#[allow_internal_unstable]` to avoid leaking the `trusted_step` feature gate usage from inside the index newtype macro. It didn't work for the `min_specialization` feature gate though.

The third commit removes (almost) all feature gates from the compiler that weren't used anyway.

3 years agoRollup merge of #85717 - fee1-dead:document-cow, r=yaahc
Yuki Okushi [Fri, 4 Jun 2021 04:42:53 +0000 (13:42 +0900)]
Rollup merge of #85717 - fee1-dead:document-cow, r=yaahc

Document `From` impls for cow.rs

3 years agoUpdate to semver 1.0.3
David Tolnay [Fri, 4 Jun 2021 04:12:25 +0000 (21:12 -0700)]
Update to semver 1.0.3

3 years agoAuto merge of #85954 - flip1995:clippyup, r=Manishearth
bors [Fri, 4 Jun 2021 02:09:41 +0000 (02:09 +0000)]
Auto merge of #85954 - flip1995:clippyup, r=Manishearth

Update Clippy

Bi-weekly Clippy update.

r? `@Manishearth`

3 years agoAuto merge of #85867 - steffahn:remove_unnecessary_specfromiter_impls, r=Mark-Simulacrum
bors [Thu, 3 Jun 2021 22:45:14 +0000 (22:45 +0000)]
Auto merge of #85867 - steffahn:remove_unnecessary_specfromiter_impls, r=Mark-Simulacrum

Remove unnecessary SpecFromIter impls

Unless I’m missing something, these `SpecFromIter<&'a T, …> for Vec<T>` implementations were completely unused.

3 years agoWarn against boxed DST in `improper_ctypes_definitions` lint
marmeladema [Mon, 31 May 2021 12:23:44 +0000 (13:23 +0100)]
Warn against boxed DST in `improper_ctypes_definitions` lint

3 years agodon't suggest unsized indirection in where-clauses
Taylor Yu [Thu, 3 Jun 2021 22:10:29 +0000 (17:10 -0500)]
don't suggest unsized indirection in where-clauses

Skip where-clauses when suggesting using indirection in combination with
`?Sized` bounds on type parameters.

3 years agoBuild linkcheck script as release to run faster.
Eric Huss [Thu, 3 Jun 2021 20:21:21 +0000 (13:21 -0700)]
Build linkcheck script as release to run faster.

3 years agoFix linkcheck script from getting out of sync.
Eric Huss [Thu, 3 Jun 2021 20:21:04 +0000 (13:21 -0700)]
Fix linkcheck script from getting out of sync.

3 years agoAuto merge of #85617 - hi-rustin:rustin-patch-fix, r=estebank
bors [Thu, 3 Jun 2021 20:06:35 +0000 (20:06 +0000)]
Auto merge of #85617 - hi-rustin:rustin-patch-fix, r=estebank

shrinking the deprecated method span

part of https://github.com/rust-lang/rust/issues/85403

r? `@estebank`

3 years agowasm: Make simd types passed via indirection again
Alex Crichton [Thu, 3 Jun 2021 15:58:12 +0000 (08:58 -0700)]
wasm: Make simd types passed via indirection again

This commit updates wasm target specs to use `simd_types_indirect: true`
again. Long ago this was added since wasm simd types were always
translated to `v128` under-the-hood in LLVM, meaning that it didn't
matter whether that target feature was enabled or not. Now, however,
`v128` is conditionally used in codegen depending on target features
enabled, meaning that it's possible to get linker errors about different
signatures in code that correctly uses simd types. The fix is the same
as for all other platforms, which is to pass the type indirectly.

3 years agoAuto merge of #85292 - wesleywiser:enum_debuginfo, r=michaelwoerister
bors [Thu, 3 Jun 2021 15:32:38 +0000 (15:32 +0000)]
Auto merge of #85292 - wesleywiser:enum_debuginfo, r=michaelwoerister

Improve debugging experience for enums on windows-msvc

This PR makes significant improvements over the status quo of debugging enums on the windows-msvc platform with either WinDbg or Visual Studio in three ways:

1. Improves the debugger experience for directly tagged enums.
2. Fixes a bug which caused the debugger to sometimes show the wrong debug info for niche layout enums. For example, `Option<&u32>` could sometimes use the debug info for `Option<&f64>` instead leading to nonsensical variable values in the debugger.
3. Significantly improves the debugger experience for niche-layout enums.

Let's look at a few examples:

```rust
pub enum CStyleEnum {
    Base = 2,
    Exponent = 16,
}

pub enum NicheLayoutEnum {
    Tag1,
    Data { my_data: CStyleEnum },
    Tag2,
    Tag3,
    Tag4,
}

pub enum OtherEnum<T> {
    Case1(T),
    Case2(T),
}

fn main() {
    let a = Some(CStyleEnum::Base);
    let b = Option::<CStyleEnum>::None;
    let c = NicheLayoutEnum::Tag1;
    let d = NicheLayoutEnum::Data { my_data: CStyleEnum::Exponent };
    let e = NicheLayoutEnum::Tag2;
    let f = Some(&1u32);
    let g = Option::<&'static u32>::None;
    let h = Some(&2u64);
    let i = Option::<&'static u64>::None;
    let j = Some(12u32);
    let k = Option::<u32>::None;
    let l = Some(12.34f64);
    let m = Option::<f64>::None;
    let n = CStyleEnum::Base;
    let o = CStyleEnum::Exponent;
    let p = Some("IAMA optional string!".to_string());
    let q = OtherEnum::Case1(42u32);
}
```

This is what WinDbg Preview shows using the latest rustc nightly:

![image](https://user-images.githubusercontent.com/831192/118285353-57c10780-b49f-11eb-97aa-db3abfc09508.png)

Most of the variables don't show a meaningful value expect for a few cases that we have targeted natvis definitions covering. Even worse, drilling into many of these variables shows information that can be difficult to interpret without an understanding of the layout of Rust types:

![image](https://user-images.githubusercontent.com/831192/118285609-a1a9ed80-b49f-11eb-9c29-b14576984647.png)

With the changes in this PR, we're able to write two natvis definitions that cover all enum cases generally. After building with these changes, WinDbg now shows this instead:

![image](https://user-images.githubusercontent.com/831192/118287730-be472500-b4a1-11eb-8cad-8f6a91c7516b.png)

Drilling into the same variables, we can see much more useful information:

![image](https://user-images.githubusercontent.com/831192/118287888-e20a6b00-b4a1-11eb-927f-32cf33a31c16.png)

Fixes #84670
Fixes #84671

3 years agoAdd test for issue 84666.
Mara Bos [Thu, 3 Jun 2021 13:48:33 +0000 (15:48 +0200)]
Add test for issue 84666.

3 years agoShow `::{{constructor}}` in std::any::type_name().
Mara Bos [Thu, 3 Jun 2021 13:41:48 +0000 (15:41 +0200)]
Show `::{{constructor}}` in std::any::type_name().

3 years agoAuto merge of #85958 - hyd-dev:miri, r=RalfJung
bors [Thu, 3 Jun 2021 10:43:32 +0000 (10:43 +0000)]
Auto merge of #85958 - hyd-dev:miri, r=RalfJung

Update Miri

Fixes #85946.

r? `@RalfJung`

3 years agofix testing Miri with --stage 0
Ralf Jung [Thu, 3 Jun 2021 09:37:17 +0000 (11:37 +0200)]
fix testing Miri with --stage 0

3 years agoUpdate Miri
hyd-dev [Thu, 3 Jun 2021 08:59:29 +0000 (16:59 +0800)]
Update Miri

3 years agoUpdate tests with new casing
Ryan Levick [Thu, 3 Jun 2021 08:39:13 +0000 (10:39 +0200)]
Update tests with new casing

3 years agoAdd run-make test testing flag stability
Ryan Levick [Thu, 3 Jun 2021 08:18:38 +0000 (10:18 +0200)]
Add run-make test testing flag stability

3 years agoAuto merge of #85952 - JohnTitor:rollup-r00gu9q, r=JohnTitor
bors [Thu, 3 Jun 2021 08:02:39 +0000 (08:02 +0000)]
Auto merge of #85952 - JohnTitor:rollup-r00gu9q, r=JohnTitor

Rollup of 13 pull requests

Successful merges:

 - #83362 (Stabilize `vecdeque_binary_search`)
 - #85706 (Turn off frame pointer elimination on all Apple platforms. )
 - #85724 (Fix issue 85435 by restricting Fake Read precision)
 - #85852 (Clarify meaning of MachineApplicable suggestions.)
 - #85877 (Intra doc link-ify a reference to a function)
 - #85880 (convert assertion on rvalue::threadlocalref to delay bug)
 - #85896 (Add test for forward declared const param defaults)
 - #85897 (Update I-unsound label for triagebot)
 - #85900 (Use pattern matching instead of checking lengths explicitly)
 - #85911 (Avoid a clone of output_filenames.)
 - #85926 (Update cargo)
 - #85934 (Add `Ty::is_union` predicate)
 - #85935 (Validate type of locals used as indices)

Failed merges:

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

3 years agoRestore the num_def_ids_untracked public function giving the total number of exported...
Denis Merigoux [Tue, 1 Jun 2021 12:10:14 +0000 (14:10 +0200)]
Restore the num_def_ids_untracked public function giving the total number of exported symbols for each crate

Restored underlying num_def_ids_method

Update compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

Changed name to fit with naming convention

Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
Update compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs

Replace regular doc with Rustdoc comment

Co-authored-by: Joshua Nelson <jyn514@gmail.com>
Clarifies third-party use of num_def_ids_untracked

3 years agoUpdate Cargo.lock
flip1995 [Thu, 3 Jun 2021 07:06:49 +0000 (09:06 +0200)]
Update Cargo.lock

3 years agoMerge commit '3ae8faff4d46ad92f194c2a4b941c3152a701b31' into clippyup
flip1995 [Thu, 3 Jun 2021 06:41:37 +0000 (08:41 +0200)]
Merge commit '3ae8faff4d46ad92f194c2a4b941c3152a701b31' into clippyup

3 years agoAuto merge of #7313 - flip1995:rustup, r=flip1995
bors [Thu, 3 Jun 2021 06:40:25 +0000 (06:40 +0000)]
Auto merge of #7313 - flip1995:rustup, r=flip1995

Rustup

Empty rustup. No changes to Clippy in the Rust repo for the last 2 weeks :open_mouth:

changelog: none

3 years agoBump nightly version -> 2021-06-03
flip1995 [Thu, 3 Jun 2021 06:38:19 +0000 (08:38 +0200)]
Bump nightly version -> 2021-06-03

3 years agoMerge remote-tracking branch 'upstream/master' into rustup
flip1995 [Thu, 3 Jun 2021 06:37:53 +0000 (08:37 +0200)]
Merge remote-tracking branch 'upstream/master' into rustup

3 years agoRollup merge of #85935 - tmiasko:validate-indexing, r=jonas-schievink
Yuki Okushi [Thu, 3 Jun 2021 05:35:42 +0000 (14:35 +0900)]
Rollup merge of #85935 - tmiasko:validate-indexing, r=jonas-schievink

Validate type of locals used as indices

3 years agoRollup merge of #85934 - tmiasko:is-union, r=jackh726
Yuki Okushi [Thu, 3 Jun 2021 05:35:41 +0000 (14:35 +0900)]
Rollup merge of #85934 - tmiasko:is-union, r=jackh726

Add `Ty::is_union` predicate

3 years agoRollup merge of #85926 - ehuss:update-cargo, r=ehuss
Yuki Okushi [Thu, 3 Jun 2021 05:35:40 +0000 (14:35 +0900)]
Rollup merge of #85926 - ehuss:update-cargo, r=ehuss

Update cargo

10 commits in e931e4796b61de593aa1097649445e535c9c7ee0..0cecbd67323ca14a7eb6505900d0d7307b00355b
2021-05-24 16:17:27 +0000 to 2021-06-01 20:09:13 +0000
- Configure hosts separately from targets when --target is specified. (rust-lang/cargo#9322)
- Add some validation to rustc-link-arg (rust-lang/cargo#9523)
- Implement suggestions for unknown features in workspace (rust-lang/cargo#9420)
- Extract common `make_dep_path` to cargo_util (rust-lang/cargo#9529)
- Add a note about rustflags compatibility. (rust-lang/cargo#9524)
- Consolidate doc collision detection. (rust-lang/cargo#9526)
- Add `--depth` option for `cargo-tree` (rust-lang/cargo#9499)
- `cargo tree -e no-proc-macro` to hide procedural macro dependencies (rust-lang/cargo#9488)
- Update to semver 1.0.0 (rust-lang/cargo#9508)
- Update tar dependency to 0.4.35 (rust-lang/cargo#9517)

3 years agoRollup merge of #85911 - cjgillot:one-output, r=Aaron1011
Yuki Okushi [Thu, 3 Jun 2021 05:35:39 +0000 (14:35 +0900)]
Rollup merge of #85911 - cjgillot:one-output, r=Aaron1011

Avoid a clone of output_filenames.

Part of #85153

3 years agoRollup merge of #85900 - LingMan:pat_mat, r=petrochenkov
Yuki Okushi [Thu, 3 Jun 2021 05:35:38 +0000 (14:35 +0900)]
Rollup merge of #85900 - LingMan:pat_mat, r=petrochenkov

Use pattern matching instead of checking lengths explicitly

This piece of code checks that there are exaclty two variants, one having
exactly one field, the other having exactly zero fields. If any of these
conditions is violated, it returns `None`. Otherwise it assigns that one
field's ty to `field_ty`.

Instead of fiddling with indices and length checks explicitly, use pattern
matching to simplify this.

`@rustbot` modify labels +C-cleanup +T-compiler

3 years agoRollup merge of #85897 - steffahn:update_unsound_label_for_triagebot, r=Mark-Simulacrum
Yuki Okushi [Thu, 3 Jun 2021 05:35:37 +0000 (14:35 +0900)]
Rollup merge of #85897 - steffahn:update_unsound_label_for_triagebot, r=Mark-Simulacrum

Update I-unsound label for triagebot

Following the remaming of the `I-unsound` label (removing the space and the emoji) as discussed [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/A.20way.20to.20self-label.20soundness.20issues.3F/near/240962907) (or [in the archive](https://zulip-archive.rust-lang.org/122651general/88362Awaytoselflabelsoundnessissues.html#240962907)), this change of the `triagebot.toml` is necessary to keep the automatic `I-prioritize` flagging.

3 years agoRollup merge of #85896 - BoxyUwU:remove-fixme-fwd-declared-const-default, r=petrochenkov
Yuki Okushi [Thu, 3 Jun 2021 05:35:36 +0000 (14:35 +0900)]
Rollup merge of #85896 - BoxyUwU:remove-fixme-fwd-declared-const-default, r=petrochenkov

Add test for forward declared const param defaults

3 years agoRollup merge of #85880 - csmoe:ice-85768, r=oli-obk
Yuki Okushi [Thu, 3 Jun 2021 05:35:35 +0000 (14:35 +0900)]
Rollup merge of #85880 - csmoe:ice-85768, r=oli-obk

convert assertion on rvalue::threadlocalref to delay bug

Closes #85768
r? ``@oli-obk``

3 years agoRollup merge of #85877 - est31:intra_doc_links, r=jyn514
Yuki Okushi [Thu, 3 Jun 2021 05:35:34 +0000 (14:35 +0900)]
Rollup merge of #85877 - est31:intra_doc_links, r=jyn514

Intra doc link-ify a reference to a function

3 years agoRollup merge of #85852 - m-ou-se:machineapplicable-docs, r=nikomatsakis
Yuki Okushi [Thu, 3 Jun 2021 05:35:30 +0000 (14:35 +0900)]
Rollup merge of #85852 - m-ou-se:machineapplicable-docs, r=nikomatsakis

Clarify meaning of MachineApplicable suggestions.

This documents the meaning of MachineApplicable in case of multiple suggestions, as described in https://github.com/rust-lang/rust/issues/53934#issuecomment-831396123

r? ``@nikomatsakis``

3 years agoRollup merge of #85724 - sexxi-goose:rox-fix-issue-85435, r=nikomatsakis
Yuki Okushi [Thu, 3 Jun 2021 05:35:29 +0000 (14:35 +0900)]
Rollup merge of #85724 - sexxi-goose:rox-fix-issue-85435, r=nikomatsakis

Fix issue 85435 by restricting Fake Read precision

This PR fixes the root bug of issue #85435 by restricting Fake Read precision in closures and removing the feature gate introduced in PR #85564. More info [here](https://github.com/rust-lang/rust/issues/85561#issuecomment-846223784) and [here](https://github.com/rust-lang/rust/issues/85561#issuecomment-847270533).

Closes #85561

r? ``@nikomatsakis``

3 years agoRollup merge of #85706 - jrmuizel:fpe, r=nagisa
Yuki Okushi [Thu, 3 Jun 2021 05:35:28 +0000 (14:35 +0900)]
Rollup merge of #85706 - jrmuizel:fpe, r=nagisa

Turn off frame pointer elimination on all Apple platforms.

This ends up disabling frame pointer elimination on aarch64_apple_darwin
which matches what clang does by default along with the
aarch64_apple_ios and x86_64_apple_darwin targets.

Further, the Apple docs "Writing ARM64 Code for Apple Platforms" has a section
called "Respect the Purpose of Specific CPU Registers" which
specifically calls out the frame pointer register (x29):

   The frame pointer register (x29) must always address a valid frame
   record. Some functions — such as leaf functions or tail calls — may
   opt not to create an entry in this list As a result, stack traces
   are always meaningful, even without debug information.

Other platforms are updated to not override the default.

3 years agoRollup merge of #83362 - SOF3:stab/vecdeque-binary-search, r=m-ou-se
Yuki Okushi [Thu, 3 Jun 2021 05:35:27 +0000 (14:35 +0900)]
Rollup merge of #83362 - SOF3:stab/vecdeque-binary-search, r=m-ou-se

Stabilize `vecdeque_binary_search`

This PR stabilizes the feature `vecdeque_binary_search` as tracked in #78021.

The tracking issue has not received any comments for the past 5 months, and concerns have been raised neither in the RFC rust-lang/rfcs#2997 nor in the tracking issue #78021.

3 years agoAuto merge of #84988 - alexcrichton:safe-target-feature-wasm, r=joshtriplett
bors [Thu, 3 Jun 2021 05:12:31 +0000 (05:12 +0000)]
Auto merge of #84988 - alexcrichton:safe-target-feature-wasm, r=joshtriplett

rustc: Allow safe #[target_feature] on wasm

This commit updates the compiler's handling of the `#[target_feature]`
attribute when applied to functions on WebAssembly-based targets. The
compiler in general requires that any functions with `#[target_feature]`
are marked as `unsafe` as well, but this commit relaxes the restriction
for WebAssembly targets where the attribute can be applied to safe
functions as well.

The reason this is done is that the motivation for this feature of the
compiler is not applicable for WebAssembly targets. In general the
`#[target_feature]` attribute is used to enhance target CPU features
enabled beyond the basic level for the rest of the compilation. If done
improperly this means that your program could execute an instruction
that the CPU you happen to be running on does not understand. This is
considered undefined behavior where it is unknown what will happen (e.g.
it's not a deterministic `SIGILL`).

For WebAssembly, however, the target is different. It is not possible
for a running WebAssembly program to execute an instruction that the
engine does not understand. If this were the case then the program would
not have validated in the first place and would not run at all. Even if
this were allowed in some hypothetical future where engines have some
form of runtime feature detection (which they do not right now) any
implementation of such a feature would generate a trap if a module
attempts to execute an instruction the module does not understand. This
deterministic trap behavior would still not fall into the category of
undefined behavior because the trap is deterministic.

For these reasons the `#[target_feature]` attribute is now allowed on
safe functions, but only for WebAssembly targets. This notably enables
the wasm-SIMD intrinsics proposed for stabilization in #74372 to be
marked as safe generally instead of today where they're all `unsafe` due
to the historical implementation of `#[target_feature]` in the compiler.

3 years agoAuto merge of #84834 - GuillaumeGomez:sidebar-unification, r=jsha
bors [Thu, 3 Jun 2021 02:31:44 +0000 (02:31 +0000)]
Auto merge of #84834 - GuillaumeGomez:sidebar-unification, r=jsha

Sidebar unification

This PR does a few things:
 * Put crates list at all levels (before, it was only on the "top" items)
 * Fix bug in module sidebar: the list of items was from the parent module.

The other changes (on bootstrap mostly) were to allow to generate multiple crates in a same folder so that we can ensure that clicking on the crates in the sidebar works as expected.

I added a rustdoc-gui test to ensure everything is where it should be.

r? `@jyn514`

3 years agoAuto merge of #84703 - GuillaumeGomez:cleanup-dom, r=jsha
bors [Wed, 2 Jun 2021 23:11:41 +0000 (23:11 +0000)]
Auto merge of #84703 - GuillaumeGomez:cleanup-dom, r=jsha

Clean up dom

The commits come from #84480.

They were errors reported by the `tidy` script that we will use to ensure that the HTML generated by rustdoc is valid.

I checked carefully that there were no difference so in principle it should be exactly the same rendering but a double-check would be very appreciated in case I missed something.

Extra note: `<h4>` and some `<h3>` tags were replaced by `<div>` because they're not supposed to contain tags as they currently do.

r? `@jsha`

3 years agotest for more SIMD monomorphization errors
Jacob Lifshay [Wed, 2 Jun 2021 22:47:15 +0000 (15:47 -0700)]
test for more SIMD monomorphization errors

build-fail test for simd type with an element type that's a wide pointer
test for SIMD element type of optional nonnull ptr to extern type
test that wide ptr simd element type of *mut [u8] fails