Commit Graph

140522 Commits

Author SHA1 Message Date
Yuki Okushi
fafbc91e0e
Rollup merge of #83037 - kubo39:merge-functions-in-llvm-new-pass-manager, r=nikic
Support merge_functions option in NewPM since LLVM >= 12

now we can pass this flag since https://reviews.llvm.org/D93002 has been merged.
2021-03-13 09:44:45 +09:00
Yuki Okushi
04e24ae67e
Rollup merge of #83020 - hi-rustin:rustin-patch-enum, r=lcnr
Emit the enum range assumption if the range only contains one element

close https://github.com/rust-lang/rust/issues/82871
2021-03-13 09:44:44 +09:00
Yuki Okushi
7f319c7478
Rollup merge of #83012 - flip1995:clippyup, r=Manishearth
Update Clippy

Bi-weekly Clippy sync.

r? ``@Manishearth``
2021-03-13 09:44:43 +09:00
Yuki Okushi
fa3f1865f6
Rollup merge of #82984 - camsteffen:lower-block, r=cjgillot
Simplify ast block lowering
2021-03-13 09:44:42 +09:00
bors
46a934a1dc Auto merge of #83022 - m-ou-se:mem-replace-no-swap, r=nagisa
Don't implement mem::replace with mem::swap.

`swap` is a complicated operation, so this changes the implementation of `replace` to use `read` and `write` instead.

See https://github.com/rust-lang/rust/pull/83019.

I wrote there:

> Implementing the simpler operation (replace) with the much more complicated operation (swap) doesn't make a whole lot of sense. `replace` is just read+write, and the primitive for moving out of a `&mut`. `swap` is for doing that to *two* `&mut` at the same time, which is both more niche and more complicated (as shown by `swap_nonoverlapping_bytes`).

This could be especially interesting for `Option<VeryLargeStruct>::take()`, since swapping such a large structure with `swap_nonoverlapping_bytes` is going to be much less efficient than `ptr::write()`'ing a `None`.

But also for small values where `swap` just reads/writes using temporary variable, this makes a `replace` or `take` operation simpler:
![image](https://user-images.githubusercontent.com/783247/110839393-c7e6bd80-82a3-11eb-97b7-28acb14deffd.png)
2021-03-12 23:27:23 +00:00
Michael Howell
095b6d2037 Make docs-minification default to true 2021-03-12 15:03:54 -07:00
Camille GILLOT
445b4e379c Make def_key and HIR parenting consistent. 2021-03-12 22:48:32 +01:00
Yuki Okushi
0466b6ac6d Improve the wording for the can't reassign error 2021-03-13 06:06:54 +09:00
Michael Howell
fdb3e820b1 Add a disable-minification option for rustdoc
This way, you can debug rustdoc's JavaScript and CSS file
with normal F12 Dev Tools and you'll have useful line numbers
to work with.
2021-03-12 12:25:16 -07:00
bors
b3e19a221e Auto merge of #83024 - Xanewok:update-rls, r=Dylan-DPC
Update RLS

Fixes #82932

r? `@ghost`
2021-03-12 16:57:11 +00:00
flip1995
99d05196d6
Clippy: HACK! Fix bootstrap error
This will be removed in the next sync, once beta is at 1.52. Until then
this hack avoids to put `cfg(bootstrap)` into Clippy.
2021-03-12 15:32:35 +01:00
flip1995
412ebc3972
Update Cargo.lock 2021-03-12 15:31:11 +01:00
flip1995
fb311e14d5
Merge commit '6ed6f1e6a1a8f414ba7e6d9b8222e7e5a1686e42' into clippyup 2021-03-12 15:30:50 +01:00
bors
215ebc364e Auto merge of #83030 - nikic:update-llvm, r=nagisa
Update llvm-project submodule

Fixes #82833. Fixes #82859. Probably also `fixes` #83025. This also merges in the current upstream 12.x branch.

r? `@nagisa`
2021-03-12 14:16:01 +00:00
Oli Scherer
11ddd22510 Run rustfmt 2021-03-12 13:46:39 +00:00
klensy
d480a3e3c1 updated vulnerable deps 2021-03-12 16:33:02 +03:00
Oli Scherer
c51749af6e We won't support trait object constants in type level constants for the forseeable future 2021-03-12 13:00:16 +00:00
Oli Scherer
6ca1d87194 Visit mir::Constant::user_ty for completeness.
It's not necessary yet, but it may become necessary with things like lazy normalization.
2021-03-12 12:59:37 +00:00
Oli Scherer
20f737966e Replace a custom lift method with a Lift impl 2021-03-12 12:44:12 +00:00
Oli Scherer
3127a9c60f Prepare mir::Constant for ty::Const only supporting valtrees 2021-03-12 12:43:54 +00:00
Oli Scherer
3ecde6f5db Directly intern allocations so that we can write a Lift impl for them 2021-03-12 12:34:29 +00:00
Oli Scherer
914df2a493 Add ty helper function for mir constants
This is in preparation of the `literal` field becoming an enum that distinguishes between type level constants and runtime constants
2021-03-12 12:33:46 +00:00
Oli Scherer
d5eec653c0 Use the explicit error constant instead of fake dummies 2021-03-12 12:25:08 +00:00
Oli Scherer
0bb367e070 Split pretty printer logic for scalar int and scalar ptr
Value trees won't have scalar ptr at all, so we need a scalar int printing method anyway. This way we'll be able to share that method between all const representations.
2021-03-12 12:24:29 +00:00
Oli Scherer
b729cc9d61 Pull out ConstValue relating into its own function 2021-03-12 12:23:50 +00:00
Oli Scherer
5e8a89b2e5 Reduce the duplication in the relation logic for constants 2021-03-12 12:23:11 +00:00
Oli Scherer
4d917faa99 Reduce destructuring and re-interning where possible 2021-03-12 12:22:33 +00:00
Oli Scherer
019dba0ceb Resolve a FIXME around type equality checks in Relate for constants 2021-03-12 12:21:55 +00:00
Oli Scherer
09f7f91532 Add convenience conversion methods for ScalarInt 2021-03-12 12:20:54 +00:00
Oli Scherer
858216cabf Add fallible Scalar to ScalarInt conversion method 2021-03-12 12:20:14 +00:00
Oli Scherer
0fe4f38769 Intern valtree field vector 2021-03-12 12:19:17 +00:00
Oli Scherer
a4fbac163e Implement valtree
valtree is a version of constants that is inherently safe to be used within types.
This is in contrast to ty::Const which can have different representations of the same value. These representation differences can show up in hashing or equality comparisons, breaking type equality of otherwise equal types.
valtrees do not have this problem.
2021-03-12 12:16:14 +00:00
bors
338647db73 Auto merge of #82422 - petrochenkov:allunst, r=oli-obk
expand: Do not allocate `Lrc` for `allow_internal_unstable` list unless necessary

This allocation is done for any macro defined in the current crate, or used from a different crate.
EDIT: This also removes an `Lrc` increment from each *use* of such macro, which may be more significant.
Noticed when reviewing https://github.com/rust-lang/rust/pull/82367.
This probably doesn't matter, but let's do a perf run.
2021-03-12 11:46:50 +00:00
bors
0cc64a34e9 Auto merge of #82935 - henryboisdequin:diagnostic-cleanups, r=estebank
Diagnostic cleanups

Follow up to #81503
Helps with #82916 (don't show note if `span` is `DUMMY_SP`)
2021-03-12 09:05:38 +00:00
hi-rustin
d180f91824 Emit the enum range assumption if the range only contains one element
test: add test case

make tidy happy
2021-03-12 12:06:10 +08:00
Hiroki Noda
8357e57346 Add support for storing code model to LLVM module IR
This patch avoids undefined behavior by linking different object files.
Also this would it could be propagated properly to LTO.

See https://reviews.llvm.org/D52322 and https://reviews.llvm.org/D52323.

This patch is based on https://github.com/rust-lang/rust/pull/74002
2021-03-12 11:02:25 +09:00
Henry Boisdequin
26478c81fd Don't show note if span is DUMMY_SP 2021-03-12 06:18:33 +05:30
bors
77b996e1c6 Auto merge of #83042 - JohnTitor:rollup-s8efv94, r=JohnTitor
Rollup of 11 pull requests

Successful merges:

 - #80385 (Clarify what `Cell::replace` returns)
 - #82571 (Rustdoc Json: Add tests for Reexports, and improve jsondocck)
 - #82860 (Add `-Z unpretty` flag for the THIR)
 - #82950 (convert slice doc link to intra-doc links)
 - #82965 (Add spirv extension handling in compiletest)
 - #82966 (update MSYS2 link in README)
 - #82979 (Fix "run" button position in error index)
 - #83001 (Ignore Vim swap files)
 - #83003 (rustdoc: tweak the search index format)
 - #83013 (Adjust some `#[cfg]`s to take non-Unix non-Windows operating systems into account)
 - #83018 (Reintroduce accidentally deleted assertions.)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-03-12 00:23:05 +00:00
Yuki Okushi
14846d945d
Rollup merge of #83018 - oli-obk:float_check, r=davidtwco
Reintroduce accidentally deleted assertions.

These were removed in https://github.com/rust-lang/rust/pull/50198
2021-03-12 08:55:22 +09:00
Yuki Okushi
5ab8f53a71
Rollup merge of #83013 - hyd-dev:cfg-unix-windows, r=bjorn3
Adjust some `#[cfg]`s to take non-Unix non-Windows operating systems into account

This makes compilation to such targets (e.g. `wasm32-wasi`) easier.

cc rust-lang/miri#722 bb6d1d0a09 (r48100619)
2021-03-12 08:55:21 +09:00
Yuki Okushi
02326d5521
Rollup merge of #83003 - notriddle:rustdoc-index-v3, r=GuillaumeGomez
rustdoc: tweak the search index format

This essentially switches search-index.js from a "array of struct" to a "struct of array" format, like this:

    {
    "doc": "Crate documentation",
    "t": [ 1, 1, 2, 3, ... ],
    "n": [ "Something", "SomethingElse", "whatever", "do_stuff", ... ],
    "q": [ "a::b", "", "", "", ... ],
    "d": [ "A Struct That Does Something", "Another Struct", "a function", "another function", ... ],
    "i": [ 0, 0, 1, 1, ... ],
    "f": [ null, null, [], [], ... ],
    "p": ...,
    "a": ...
    }

So `{ty: 1, name: "Something", path: "a::b", desc: "A Struct That Does Something", parent_idx: 0, search_type: null}` is the first item.

This makes the uncompressed version smaller, but it really shows on the compressed version:

    notriddle:rust$ wc -c new-search-index1.52.0.js
    2622427 new-search-index1.52.0.js
    notriddle:rust$ wc -c old-search-index1.52.0.js
    2725046 old-search-index1.52.0.js
    notriddle:rust$ gzip new-search-index1.52.0.js
    notriddle:rust$ gzip old-search-index1.52.0.js
    notriddle:rust$ wc -c new-search-index1.52.0.js.gz
    239385 new-search-index1.52.0.js.gz
    notriddle:rust$ wc -c old-search-index1.52.0.js.gz
    296328 old-search-index1.52.0.js.gz

That's a 4% improvement on the uncompressed version (fewer `[]`, and also changing `null` to `0` in the parent_idx list), and 20% improvement after gzipping it, thanks to putting like-typed data next to each other. Any compression algorithm based on a sliding window will probably show this kind of improvement.
2021-03-12 08:55:20 +09:00
Yuki Okushi
3e6e808aa6
Rollup merge of #83001 - camelid:gitignore-vim-swap, r=Mark-Simulacrum
Ignore Vim swap files

I got this from [a Stack Overflow answer][so].
(I didn't add `*~` because it was already there.)

[so]: https://stackoverflow.com/a/4824199
2021-03-12 08:55:19 +09:00
Yuki Okushi
6ea16859fb
Rollup merge of #82979 - GuillaumeGomez:run-button-pos, r=Nemo157
Fix "run" button position in error index

This isn't really a rustdoc issue but I still made the same fix in the `rustdoc.css` file (doesn't hurt).

Before:

![Screenshot from 2021-03-10 16-35-49](https://user-images.githubusercontent.com/3050060/110655807-aa402800-81bf-11eb-8a88-bc979efd1697.png)

After:

![Screenshot from 2021-03-10 16-40-08](https://user-images.githubusercontent.com/3050060/110655843-b4622680-81bf-11eb-8670-42975d92b4eb.png)

cc ````@jyn514```` (considering this is quite a big bug and an easy fix)
r? ````@Nemo157````
2021-03-12 08:55:18 +09:00
Yuki Okushi
a86ac16e54
Rollup merge of #82966 - tspiteri:msys2-link, r=Mark-Simulacrum
update MSYS2 link in README

Now https://msys2.github.io/ redirects to https://www.msys2.org/, so the README might just link to that immediately.
2021-03-12 08:55:17 +09:00
Yuki Okushi
bb790d3412
Rollup merge of #82965 - XAMPPRocky:spv-ext, r=nagisa
Add spirv extension handling in compiletest

We're trying to use `compiletest` for Rust-GPU's testsuite, and ran into an issue with host specific extensions. This adds handling to fix that.
2021-03-12 08:55:16 +09:00
Yuki Okushi
16ce4f7513
Rollup merge of #82950 - mockersf:slice-intra-doc-link, r=jyn514
convert slice doc link to intra-doc links

Continuing where #80189 stopped, with `core::slice`.

I had an issue with two dead links in my doc when implementing `Deref<Target = [T]>` for one of my type. This means that [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key) was available, but not [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key) even though it was linked in it's doc (same issue with [`as_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr) and [`as_mut_pbr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr)). It becomes available if I implement `DerefMut`, as it needs an `&mut self`.

<details>
  <summary>Code that will have dead links in its doc</summary>

```rust
pub struct A;
pub struct B;

impl std::ops::Deref for B{
    type Target = [A];

    fn deref(&self) -> &Self::Target {
        &A
    }
}
```
</details>

I removed the link to `sort_by_key` from `binary_search_by_key` doc as I didn't find a nice way to have a live link:
- `binary_search_by_key` is in `core`
- `sort_by_key` is in `alloc`
- intra-doc link `slice::sort_by_key` doesn't work, as `alloc` is not available when `core` is being build (the warning can't be ignored: ```error[E0710]: an unknown tool name found in scoped lint: `rustdoc::broken_intra_doc_links` ```)
- keeping the link as an anchor `#method.sort_by_key` meant a dead link
- an absolute link would work but doesn't feel right...
2021-03-12 08:55:15 +09:00
Yuki Okushi
f183a3ec13
Rollup merge of #82860 - LeSeulArtichaut:unpretty-thir, r=spastorino
Add `-Z unpretty` flag for the THIR

This adds a new perma-unstable flag, `-Zunpretty=thir-tree`, that dumps the raw THIR tree for each body in the crate.

Implements the THIR part of MCP rust-lang/compiler-team#408, helps with rust-lang/rustc-dev-guide#1062.
Depends on #82495, blocked on that. Only the two last commits are added by this PR.
r? ```@spastorino``` cc ```@estebank```
2021-03-12 08:55:14 +09:00
Yuki Okushi
a98dc9b3e7
Rollup merge of #82571 - aDotInTheVoid:reexport-tests, r=CraftSpider
Rustdoc Json: Add tests for Reexports, and improve jsondocck

The two changes are orthognal, so you can land just one if you want, but the improved errors realy helped write the tests.

Notably does not have the case from #80664, but I want to have all the ajacent cases tested before starting work on that to ensure I dont break anything.

Improves #81359

cc ```@CraftSpider```

r? ```@jyn514```

```@rustbot``` modify labels: +A-testsuite +T-rustdoc +A-rustdoc-json
2021-03-12 08:55:13 +09:00
Yuki Okushi
2f0bbc0d1d
Rollup merge of #80385 - camelid:clarify-cell-replace-docs, r=Mark-Simulacrum
Clarify what `Cell::replace` returns
2021-03-12 08:55:09 +09:00
Hiroki Noda
65ed23c282 Support merge_functions option in NewPM since LLVM >= 12
now we can pass this flag since https://reviews.llvm.org/D93002 has been
merged.
2021-03-12 08:16:10 +09:00