Commit Graph

156067 Commits

Author SHA1 Message Date
Eric Huss 403e221dcf Rollup merge of #89313 - durin42:llvm-14-thinLTOResolvePrevailingInModule, r=nikic
PassWrapper: handle function rename from upstream D36850

thinLTOResolvePrevailingInModule became thinLTOFinalizeInModule and
gained the ability to propagate noRecurse and noUnwind function
attributes. I ran codegen tests with it both on and off, as the upstream
patch uses it in both modes, and the tests pass both ways. Given that,
it seemed reasonable to go ahead and let the propagation be enabled in
rustc, and see what happens. See https://reviews.llvm.org/D36850 for
more examples of how the new version of the function gets used.

r? ``@nikic`` cc ``@nagisa``
2021-09-29 19:33:40 -07:00
Eric Huss c5f8675291 Rollup merge of #89311 - FabianWolff:issue-89305, r=oli-obk
Add unit assignment to MIR for `asm!()`

Fixes #89305. `ExprKind::LlvmInlineAsm` gets a `push_assign_unit()` here:
https://github.com/rust-lang/rust/blob/2b6ed3b675475abc01ce7e68bb75b457f0c85684/compiler/rustc_mir_build/src/build/expr/into.rs#L475-L479

The same should probably happen for `ExprKind::InlineAsm`, which fixes the "use of possibly-uninitialized variable" error described in #89305.
2021-09-29 19:33:39 -07:00
Eric Huss 8dfe52293a Rollup merge of #89297 - GuillaumeGomez:remove-never-from-type-enum, r=camelid
Remove Never variant from clean::Type enum

Fixes #89287.

r? ``@camelid``
2021-09-29 19:33:38 -07:00
Eric Huss 9050c541c5 Rollup merge of #89294 - lnicola:rust-analyzer-2021-09-27, r=lnicola
⬆️ rust-analyzer
2021-09-29 19:33:38 -07:00
Eric Huss 8087147f20 Rollup merge of #89232 - rossmacarthur:fix-76424, r=wesleywiser
Improve help for recursion limit errors

- Tweak help message and suggested limit (handle `0` case).
- Add test for #75602 (it was already fixed, maybe can be resolved too).

Fixes #76424
2021-09-29 19:33:37 -07:00
Eric Huss 7c23ff278e Rollup merge of #89098 - GuillaumeGomez:where-bounds-order, r=camelid
Fix generics where bounds order

Fixes #88809.

Like said on the above issue, the issue is that we were expecting `Symbol` comparisons to be string-based but they are integer-based (because `Symbol` is an integer), messing up the bounds order. To fix it, I simply stored into a `FxIndexMap` instead.

r? ``@jyn514``
2021-09-29 19:33:36 -07:00
Eric Huss e24f52294a Rollup merge of #88412 - mdsn:slice-sort-safety, r=dtolnay
Remove ignore-tidy-undocumented-unsafe from core::slice::sort

Write down the missing safety arguments to be able to remove `ignore-tidy-undocumented-unsafe` from `core::slice::sort`.

Helps with #66219

``@rustbot`` label C-cleanup T-libs
2021-09-29 19:33:35 -07:00
Eric Huss 42ea15be0a Rollup merge of #87428 - GuillaumeGomez:union-highlighting, r=notriddle
Fix union keyword highlighting in rustdoc HTML sources

I followed this logic: if I find an ident "union", I check if it followed by another ident or not. If it's the case, then I consider this is a keyword because it's declaring a union type.

To do so I created a new Iterator which allows to peek the next items without moving the current iterator position.

This is part of https://github.com/rust-lang/rust/issues/85016. If the fix makes sense, I'll extend it to other weak keywords (the issue only mentions they exist but https://doc.rust-lang.org/nightly/reference/keywords.html#weak-keywords only talks about `dyn` and `'static` so not sure if there is anything else to be done?).

cc `@notriddle` (you're one of the last ones who worked on this part of rustdoc so here you go 😉 )
r? `@jyn514`
2021-09-29 19:33:34 -07:00
surechen 56f0c9afdd fix bug for large_enum_variants 2021-09-30 10:07:57 +08:00
Samuel E. Moelius III a6738c7231 Add tests 2021-09-29 21:51:59 -04:00
Samuel E. Moelius III fa23d4fe93 Implement #85440 2021-09-29 21:51:46 -04:00
bors 4aa7879b55 Auto merge of #89110 - Aaron1011:adjustment-span, r=estebank
Use larger span for adjustment THIR expressions

Currently, we use a relatively 'small' span for THIR
expressions generated by an 'adjustment' (e.g. an autoderef,
autoborrow, unsizing). As a result, if a borrow generated
by an adustment ends up causing a borrowcheck error, for example:

```rust
let mut my_var = String::new();
let my_ref = &my_var
my_var.push('a');
my_ref;
```

then the span for the mutable borrow may end up referring
to only the base expression (e.g. `my_var`), rather than
the method call which triggered the mutable borrow
(e.g. `my_var.push('a')`)

Due to a quirk of the MIR borrowck implementation,
this doesn't always get exposed in migration mode,
but it does in many cases.

This commit makes THIR building consistently use 'larger'
spans for adjustment expressions. These spans are recoded
when we first create the adjustment during typecheck. For
example, an autoref adjustment triggered by a method call
will record the span of the entire method call.

The intent of this change it make it clearer to users
when it's the specific way in which a variable is
used (for example, in a method call) that produdes
a borrowcheck error. For example, an error message
claiming that a 'mutable borrow occurs here' might
be confusing if it just points at a usage of a variable
(e.g. `my_var`), when no `&mut` is in sight. Pointing
at the entire expression should help to emphasize
that the method call itself is responsible for
the mutable borrow.

In several cases, this makes the `#![feature(nll)]` diagnostic
output match up exactly with the default (migration mode) output.
As a result, several `.nll.stderr` files end up getting removed
entirely.
2021-09-30 01:40:30 +00:00
bors 24a789b666 Auto merge of #89380 - ehuss:fix-windows-llvm, r=Mark-Simulacrum
Fix Windows LLVM issue.

GitHub image 20210928.2 added LLVM 12.0.1 to the stock image.  However, the `lldb` executable doesn't work, it fails with:

> C:/Program Files/LLVM/bin/lldb.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

We probably don't want to start testing LLDB on windows anyways (at least not without intent).

The hacky solution for now is to just delete the system LLVM.
2021-09-29 22:39:40 +00:00
Eric Huss 0f4731273a Fix Windows LLVM issue. 2021-09-29 15:27:44 -07:00
Eric Huss 762f81ddaf Update books 2021-09-29 14:37:40 -07:00
Camille GILLOT abc57f63ad Move body_owners to tcx.hir(). 2021-09-29 23:16:48 +02:00
Camille GILLOT 3037c40e9a Avoid more invocations of hir_crate query. 2021-09-29 23:16:47 +02:00
Camille GILLOT db9fea508a Avoid more invocations of hir_crate query. 2021-09-29 23:16:47 +02:00
Eric Huss 80b4718fd3 Update cargo 2021-09-29 14:07:04 -07:00
Andreas Jonson d90934ce87 Fix use after drop in self-profile with llvm events 2021-09-29 22:58:33 +02:00
Guillaume Gomez bdd34717b8 Remove Never variant from clean::Type enum 2021-09-29 20:29:33 +02:00
Audun Halland 34d95d9090 Additional tests (from jackh726) 2021-09-29 20:17:33 +02:00
bors 11491938f8 Auto merge of #89011 - bjorn3:restructure_rt, r=dtolnay
Restructure std::rt

These changes should reduce binary size slightly while at the same slightly improving performance of startup, thread spawning and `std::thread::current()`. I haven't verified if the compiler is able to optimize some of these cases already, but at least for some others the compiler is unable to do these optimizations as they slightly change behavior in cases where program startup would crash anyway by omitting a backtrace and panic location.

I can remove 6f6bb16 if preferred.
2021-09-29 17:58:08 +00:00
Ralf Jung 268bb46db2 CTFE: extra assertions for Aggregate rvalues; remove unnecessarily eager special case 2021-09-29 13:47:41 -04:00
Ralf Jung 35f74c24a3 remove outdated comment 2021-09-29 13:43:22 -04:00
jackh726 e1a9ecca26 Cleanup lower_generics_mut and make span be the bound itself, not the type 2021-09-29 13:31:03 -04:00
Michael Howell 6e973f0850 fix(lint): don't suggest refutable patterns to "fix" irrefutable bind
In function arguments and let bindings, do not suggest changing `C` to `Foo::C`
unless `C` is the only variant of `Foo`, because it won't work.

The general warning is still kept, because code like this is confusing.

Fixes #88730
2021-09-29 09:15:35 -07:00
Guillaume Gomez a0f4e783fc Remove lazy_static dependency 2021-09-29 17:20:52 +02:00
Hirochika Matsumoto e46fc9d1d9 Encode json files with UTF-8 2021-09-30 00:11:14 +09:00
Hirochika Matsumoto e18a8efb8b Don't ignore impls for primitive types 2021-09-29 23:57:01 +09:00
bors 50f9f7810c Auto merge of #89331 - GuillaumeGomez:rollup-b10unye, r=GuillaumeGomez
Rollup of 8 pull requests

Successful merges:

 - #87260 (Libgccjit codegen)
 - #89212 (x.py: run `rustup toolchain link` in setup)
 - #89233 (Hide `<...> defined here` note if the source is not available)
 - #89235 (make junit output more consistent with default format)
 - #89255 (Fix incorrect disambiguation suggestion for associated items)
 - #89276 (Fix the population of the `union.impls` field)
 - #89283 (Add regression test for issue #83564)
 - #89318 (rustc_session: Remove lint store from `Session`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-09-29 10:39:41 +00:00
bors 6f608ced6f Auto merge of #89328 - flip1995:clippyup, r=Manishearth
Update Clippy

Delayed Clippy sync

r? `@Manishearth`
2021-09-29 07:44:23 +00:00
David Tolnay e3e5ae91d0 Clean up unneeded explicit pointer cast
The reference automatically coerces to a pointer. Writing an explicit
cast here is slightly misleading because that's most commonly used when
a pointer needs to be converted from one pointer type to another, e.g.
`*const c_void` to `*const sigaction` or vice versa.
2021-09-28 21:22:37 -07:00
Michael Wright 6035e050e8 Add includes to pre-commit hook 2021-09-29 05:46:43 +02:00
Michael Wright 20abbd93f9 Add test module for update_lints 2021-09-29 05:46:43 +02:00
Michael Wright 3f804ca6d3 Move update_lints specific code out of lib 2021-09-29 05:46:43 +02:00
Michael Wright e6747df5cd Fix lint register code format
Also change the generation functions to return `String` instead of
`Vec<String>`. This makes sense now as the updates aren't line oriented
anymore.
2021-09-29 05:46:39 +02:00
Michael Wright 50ea370619 Move code generated by update_lints to includes 2021-09-29 05:43:25 +02:00
Audun Halland e559867d86 Fix truncate of 'bound params stack' by using the correct length 2021-09-29 03:18:56 +02:00
Gus Wynn cb8e83caeb ref/refmut 2021-09-28 17:57:08 -07:00
bors 6df1d82869 Auto merge of #88950 - Nadrieril:deconstruct-pat, r=oli-obk
Add an intermediate representation to exhaustiveness checking

The exhaustiveness checking algorithm keeps deconstructing patterns into a `Constructor` and some `Fields`, but does so a bit all over the place. This PR introduces a new representation for patterns that already has that information, so we only compute it once at the start.
I find this makes code easier to follow. In particular `DeconstructedPat::specialize` is a lot simpler than what happened before, and more closely matches the description of the algorithm. I'm also hoping this could help for the project of librarifying exhaustiveness for rust_analyzer since it decouples the algorithm from `rustc_middle::Pat`.
2021-09-29 00:16:17 +00:00
bors 685b77316f Auto merge of #7736 - vxpm:master, r=giraffate
Fix typo ("asynx" corrected to "async")

changelog: Fixed small typo in [`await_holding_lock`]'s documentation - "asynx" was corrected to "async"
2021-09-29 00:10:49 +00:00
Fabian Wolff 6490ed30e1 Improve error message for printf-style format strings 2021-09-29 02:02:45 +02:00
Michael Howell 105b60f250 feat(rustc_typeck): avoid erroring with "wrong number of generics" if there's other problems
As shown in the two test requirements that got updated, if there's other problems,
then those other problems are probably the root cause of the incorrect generics count.
2021-09-28 15:56:45 -07:00
Audun Halland f0e99827f8 Deriving: Include bound generic params for extracted type parameters in where clause 2021-09-29 00:46:29 +02:00
vxpm 30ea0a5ebb Fix typo ("asynx" corrected to "async") 2021-09-28 17:53:12 -03:00
Ross MacArthur d2613fb7a5 Improve help for recursion limit errors 2021-09-28 22:17:13 +02:00
Michael Howell befdfb5c71 Improve error messages for bad type constraints
Co-authored-by: Esteban Kuber <esteban@kuber.com.ar>
2021-09-28 13:02:45 -07:00
Matt Brubeck 830ecbd96c Optimize is_sorted for Range and RangeInclusive
The `Step` trait guarantees that `Range<impl Step>` yields items in
sorted order.  We can override the `Iterator::is_sorted` method based on
this guarantee, as we already do for `Iterator::min` and `max`.
2021-09-28 12:50:38 -07:00
Guillaume Gomez d9ee68fa4c Rollup merge of #89318 - petrochenkov:lstore, r=oli-obk
rustc_session: Remove lint store from `Session`

It was added in https://github.com/rust-lang/rust/pull/75534, but after the cleanup in https://github.com/rust-lang/rust/pull/87070 it's no longer necessary.
2021-09-28 20:00:18 +02:00