]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoAuto merge of #89092 - bjorn3:sync_cg_clif-2021-09-19, r=bjorn3
bors [Sun, 26 Sep 2021 23:31:01 +0000 (23:31 +0000)]
Auto merge of #89092 - bjorn3:sync_cg_clif-2021-09-19, r=bjorn3

Sync rustc_codegen_cranelift

Nothing exciting this time. Mostly internal refactorings.

r? `@ghost`

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

2 years agoPass real crate-level attributes to `pre_expansion_lint`
Samuel Moelius [Sun, 26 Sep 2021 20:50:26 +0000 (20:50 +0000)]
Pass real crate-level attributes to `pre_expansion_lint`

2 years agoDon't normalize opaque types with escaping late-bound regions.
jackh726 [Sun, 26 Sep 2021 19:58:24 +0000 (15:58 -0400)]
Don't normalize opaque types with escaping late-bound regions.

Turns out, this has some really bad perf implications in large types (issue #88862). While we technically can handle them fine, it doesn't change test output either way. For now, revert with an added benchmark. Future attempts to change this back will have to consider perf.

2 years agoAdd regression test for issue #83564
Noah Lev [Sun, 26 Sep 2021 19:21:44 +0000 (12:21 -0700)]
Add regression test for issue #83564

2 years agoAuto merge of #89144 - sexxi-goose:insig_stdlib, r=nikomatsakis
bors [Sun, 26 Sep 2021 19:36:00 +0000 (19:36 +0000)]
Auto merge of #89144 - sexxi-goose:insig_stdlib, r=nikomatsakis

2229: Mark insignificant dtor in stdlib

I looked at all public [stdlib Drop implementations](https://doc.rust-lang.org/stable/std/ops/trait.Drop.html#implementors) and categorized them into Insigificant/Maybe/Significant Drop.

Reasons are noted here: https://docs.google.com/spreadsheets/d/19edb9r5lo2UqMrCOVjV0fwcSdS-R7qvKNL76q7tO8VA/edit#gid=1838773501

One thing missing from this PR is tagging HashMap as insigificant destructor as that needs some discussion.

r? `@Mark-Simulacrum`

cc `@nikomatsakis`

2 years agoUse the correct edition when syntax highlighting doctests
Joshua Nelson [Sun, 26 Sep 2021 16:29:41 +0000 (16:29 +0000)]
Use the correct edition when syntax highlighting doctests

Previously it would unconditionally use edition 2015, which was
incorrect.

2 years agoPreserve the whole LangSyntax when parsing doctests
Joshua Nelson [Sun, 26 Sep 2021 16:28:36 +0000 (16:28 +0000)]
Preserve the whole LangSyntax when parsing doctests

Previously, only the raw string and the `is_ignore` field were
preserved, which made it hard to recover anything else.

2 years agoFix populate of union.impls
Loïc BRANSTETT [Sun, 26 Sep 2021 16:22:07 +0000 (18:22 +0200)]
Fix populate of union.impls

2 years agoFix global initialization (#91)
antoyo [Sun, 26 Sep 2021 16:20:02 +0000 (12:20 -0400)]
Fix global initialization (#91)

* Make define_global() return a RValue directly
* Return LValue in functions declaring a global variable
* Remove useless cast
* Fix bytes_in_context to use an array rvalue
* Remove global_names which is unused
* Make const_struct create a constant struct
* Correctly initialize global in static_addr_of_mut
* Fix global variable initialization
* Remove workaround for ARGV

2 years agotest suggesting immutable or mutable trait implementations
Takayuki Maeda [Sun, 26 Sep 2021 15:59:57 +0000 (00:59 +0900)]
test suggesting immutable or mutable trait implementations

2 years agofix test error
Takayuki Maeda [Sun, 26 Sep 2021 15:50:46 +0000 (00:50 +0900)]
fix test error

2 years agoAuto merge of #88316 - est31:remove_box_tests, r=Mark-Simulacrum
bors [Sun, 26 Sep 2021 15:48:10 +0000 (15:48 +0000)]
Auto merge of #88316 - est31:remove_box_tests, r=Mark-Simulacrum

Remove most box syntax uses from the testsuite except for src/test/ui/issues

Removes most box syntax uses from the testsuite outside of the src/test/ui/issues directory. The goal was to only change tests where box syntax is an implementation detail instead of the actual feature being tested. So some tests were left out, like the regression test for #87935, or tests where the obtained error message changed significantly.

Mostly this replaces box syntax with `Box::new`, but there are some minor drive by improvements, like formatting improvements or `assert_eq` instead of `assert!( == )`.

Prior PR that removed box syntax from the compiler and tools: #87781

2 years agobetter suggestions
Takayuki Maeda [Sun, 26 Sep 2021 15:30:39 +0000 (00:30 +0900)]
better suggestions

2 years agoImpove handling of registers in inline asm (#82)
Commeownist [Sun, 26 Sep 2021 13:30:45 +0000 (16:30 +0300)]
Impove handling of registers in inline asm (#82)

* Correctly handle st(0) register in the clobbers list
* Gate the clobbers based on enabled target features

2 years agoAuto merge of #89101 - ehuss:compiletest-incremental-build, r=Mark-Simulacrum
bors [Sun, 26 Sep 2021 08:09:12 +0000 (08:09 +0000)]
Auto merge of #89101 - ehuss:compiletest-incremental-build, r=Mark-Simulacrum

Support incremental in compiletest for non-incremental modes.

This adds first-class support for using incremental builds in non-incremental-mode tests.  These tests previously manually passed `-C incremental=tmp/foo` which resulted in reusing the same tmp folder between runs.  This means that these tests could fail whenever the on-disk incremental format changed (such as when updating one's local source tree).  This changes it so that these tests can pass a `// incremental-build` header which instructs compiletest to create a set aside a dedicated incremental directory which will be cleared before the test starts to ensure it has a clean slate.

2 years agofix the relevant tests
Takayuki Maeda [Sun, 26 Sep 2021 07:18:58 +0000 (16:18 +0900)]
fix the relevant tests

2 years agosuggest both immutable and mutable trait implementations
Takayuki Maeda [Sun, 26 Sep 2021 07:16:04 +0000 (16:16 +0900)]
suggest both immutable and mutable trait implementations

2 years agoStop suggesting a float truncation that is not shorter
David Tolnay [Sun, 26 Sep 2021 05:54:08 +0000 (22:54 -0700)]
Stop suggesting a float truncation that is not shorter

2 years agoAuto merge of #88680 - ehuss:more-attr-validation, r=petrochenkov
bors [Sun, 26 Sep 2021 05:15:11 +0000 (05:15 +0000)]
Auto merge of #88680 - ehuss:more-attr-validation, r=petrochenkov

Validate builtin attributes for macro args.

This adds some validation for `path`, `crate_type`, and `recursion_limit` attributes so that they will now return an error if you attempt to pass a macro into them (such as `#[path = foo!()]`). Previously, the attribute would be completely ignored. These attributes are special because their values need to be known before/during expansion.

cc #87681

2 years agoAdd notes for cross-compilation to gcc-only targets (#68)
antoyo [Sun, 26 Sep 2021 04:06:42 +0000 (00:06 -0400)]
Add notes for cross-compilation to gcc-only targets (#68)

2 years agoAuto merge of #89262 - Manishearth:rollup-vtkbetm, r=Manishearth
bors [Sun, 26 Sep 2021 02:31:12 +0000 (02:31 +0000)]
Auto merge of #89262 - Manishearth:rollup-vtkbetm, r=Manishearth

Rollup of 7 pull requests

Successful merges:

 - #88895 (rustdoc: Cleanup `clean` part 2)
 - #88973 (Expose the std_detect env_override feature)
 - #89010 (Add some intra doc links)
 - #89198 (rustdoc: Don't show hidden trait methods)
 - #89216 (Consistent big O notation)
 - #89224 (Change the order of imports suggestions)
 - #89256 (Fix typo in release notes)

Failed merges:

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

2 years agoRemove box syntax from most places in src/test outside of the issues dir
est31 [Wed, 25 Aug 2021 00:39:40 +0000 (02:39 +0200)]
Remove box syntax from most places in src/test outside of the issues dir

2 years agoRollup merge of #89256 - danielg1111:fix_typo, r=Mark-Simulacrum
Manish Goregaokar [Sun, 26 Sep 2021 01:22:22 +0000 (18:22 -0700)]
Rollup merge of #89256 - danielg1111:fix_typo, r=Mark-Simulacrum

Fix typo in release notes

2 years agoRollup merge of #89224 - TaKO8Ki:change-the-order-of-suggestions, r=joshtriplett
Manish Goregaokar [Sun, 26 Sep 2021 01:22:21 +0000 (18:22 -0700)]
Rollup merge of #89224 - TaKO8Ki:change-the-order-of-suggestions, r=joshtriplett

Change the order of imports suggestions

closes #83564

2 years agoRollup merge of #89216 - r00ster91:bigo, r=dtolnay
Manish Goregaokar [Sun, 26 Sep 2021 01:22:20 +0000 (18:22 -0700)]
Rollup merge of #89216 - r00ster91:bigo, r=dtolnay

Consistent big O notation

This makes the big O time complexity notation in places with markdown support more consistent.
Inspired by #89210

2 years agoRollup merge of #89216 - r00ster91:bigo, r=dtolnay
Manish Goregaokar [Sun, 26 Sep 2021 01:22:20 +0000 (18:22 -0700)]
Rollup merge of #89216 - r00ster91:bigo, r=dtolnay

Consistent big O notation

This makes the big O time complexity notation in places with markdown support more consistent.
Inspired by #89210

2 years agoRollup merge of #89198 - hkmatsumoto:hide-hidden-methods, r=jyn514
Manish Goregaokar [Sun, 26 Sep 2021 01:22:19 +0000 (18:22 -0700)]
Rollup merge of #89198 - hkmatsumoto:hide-hidden-methods, r=jyn514

rustdoc: Don't show hidden trait methods

Fix #89186.

By skipping trait items whose attributes include `hidden`, we avoid showing such trait methods.

2 years agoRollup merge of #89010 - est31:intra_doc_links, r=m-ou-se
Manish Goregaokar [Sun, 26 Sep 2021 01:22:19 +0000 (18:22 -0700)]
Rollup merge of #89010 - est31:intra_doc_links, r=m-ou-se

Add some intra doc links

2 years agoRollup merge of #88973 - lu-zero:std_detect-env_override, r=Amanieu
Manish Goregaokar [Sun, 26 Sep 2021 01:22:18 +0000 (18:22 -0700)]
Rollup merge of #88973 - lu-zero:std_detect-env_override, r=Amanieu

Expose the std_detect env_override feature

2 years agoRollup merge of #88895 - camelid:cleanup-pt2, r=jyn514
Manish Goregaokar [Sun, 26 Sep 2021 01:22:17 +0000 (18:22 -0700)]
Rollup merge of #88895 - camelid:cleanup-pt2, r=jyn514

rustdoc: Cleanup `clean` part 2

Split out from #88379. This contains the following commits from that PR:

- Remove `Type::ResolvedPath.is_generic`
- Rename `is_generic()` to `is_assoc_ty()`

r? `@jyn514`

2 years agoTrivialize tracking of unreachable subpatterns
Nadrieril [Sat, 25 Sep 2021 20:48:50 +0000 (21:48 +0100)]
Trivialize tracking of unreachable subpatterns

Phew it had been very had to make it work without a good way to identify
patterns. Now it's dead easy.

2 years agoAvoid double-deref in `Fields`
Nadrieril [Sat, 25 Sep 2021 16:46:44 +0000 (17:46 +0100)]
Avoid double-deref in `Fields`

2 years agoReplace `Pat` with a new intermediate representation
Nadrieril [Sat, 25 Sep 2021 23:00:08 +0000 (00:00 +0100)]
Replace `Pat` with a new intermediate representation

2 years agoRemove dependency of `SubPatSet` on `Pat`
Nadrieril [Wed, 22 Sep 2021 21:35:23 +0000 (22:35 +0100)]
Remove dependency of `SubPatSet` on `Pat`

2 years agoMove special `&str` handling to `Constructor` and `Fields`
Nadrieril [Wed, 22 Sep 2021 18:29:33 +0000 (19:29 +0100)]
Move special `&str` handling to `Constructor` and `Fields`

2 years agoUse usize for slice arity
Nadrieril [Sat, 25 Sep 2021 23:00:05 +0000 (00:00 +0100)]
Use usize for slice arity

2 years agoRework `Fields` internals.
Nadrieril [Wed, 22 Sep 2021 17:16:07 +0000 (18:16 +0100)]
Rework `Fields` internals.

Now `Fields` is just a `Vec` of patterns, with some extra info on the
side to reconstruct patterns when needed. This emphasizes that this
extra info is not central to the algorithm.

2 years agoA for loop is a lot faster apparently
Nadrieril [Wed, 22 Sep 2021 23:36:49 +0000 (00:36 +0100)]
A for loop is a lot faster apparently

2 years agoCleanup the reporting of unreachable patterns
Nadrieril [Mon, 13 Sep 2021 14:49:57 +0000 (15:49 +0100)]
Cleanup the reporting of unreachable patterns

2 years agoAlways report reachability for user-supplied patterns
Nadrieril [Mon, 13 Sep 2021 14:47:24 +0000 (15:47 +0100)]
Always report reachability for user-supplied patterns

2 years agoRemove some unreachable code
Nadrieril [Mon, 13 Sep 2021 14:44:30 +0000 (15:44 +0100)]
Remove some unreachable code

2 years agoRemove premature shortcutting
Nadrieril [Thu, 26 Aug 2021 07:55:57 +0000 (09:55 +0200)]
Remove premature shortcutting

2 years agoclippy lints: update doctest ranges to inclusive ones
Matthias Krüger [Fri, 10 Sep 2021 21:47:51 +0000 (23:47 +0200)]
clippy lints: update doctest ranges to inclusive ones

2 years agobump clippy crates to edition 2021
Matthias Krüger [Fri, 10 Sep 2021 20:57:00 +0000 (22:57 +0200)]
bump clippy crates to edition 2021

2 years agoFix typo in release notes
Daniel Giger [Sat, 25 Sep 2021 20:34:39 +0000 (16:34 -0400)]
Fix typo in release notes

2 years agoAuto merge of #88343 - steffahn:fix_code_spacing, r=jyn514
bors [Sat, 25 Sep 2021 20:08:11 +0000 (20:08 +0000)]
Auto merge of #88343 - steffahn:fix_code_spacing, r=jyn514

Fix spacing of links in inline code.

Similar to #80733, but the focus is different. This PR eliminates all occurrences of pieced-together inline code blocks like [`Box`]`<`[`Option`]`<T>>` and replaces them with good-looking ones (using HTML-syntax), like <code>[Box]<[Option]\<T>></code>. As far as I can tell, I should’ve found all of these in the standard library (regex search with `` r"`\]`|`\[`" ``) \[except for in `core::convert` where I’ve noticed other things in the docs that I want to fix in a separate PR]. In particular, unlike #80733, I’ve added almost no new instance of inline code that’s broken up into multiple links (or some link and some link-free part). I also added tooltips (the stuff in quotes for the markdown link listings) in places that caught my eye, but that’s by no means systematic, just opportunistic.

[Box]: https://doc.rust-lang.org/std/boxed/struct.Box.html "Box"
[`Box`]: https://doc.rust-lang.org/std/boxed/struct.Box.html "Box"
[Option]: https://doc.rust-lang.org/std/option/enum.Option.html "Option"
[`Option`]: https://doc.rust-lang.org/std/option/enum.Option.html "Option"

Context: I got annoyed by repeatedly running into new misformatted inline code while reading the standard library docs. I know that once issue #83997 (and/or related ones) are resolved, these changes become somewhat obsolete, but I fail to notice much progress on that end right now.

r? `@jyn514`

2 years agoFix incorrect disambiguation suggestion for associated items
Fabian Wolff [Sat, 25 Sep 2021 19:47:33 +0000 (21:47 +0200)]
Fix incorrect disambiguation suggestion for associated items

2 years agoExpose the std_detect env_override feature
Luca Barbato [Wed, 15 Sep 2021 15:12:46 +0000 (17:12 +0200)]
Expose the std_detect env_override feature

2 years agoApply 16 commits (squashed)
Frank Steffahn [Wed, 25 Aug 2021 09:45:08 +0000 (11:45 +0200)]
Apply 16 commits (squashed)

----------

Fix spacing for links inside code blocks, and improve link tooltips in alloc::fmt

----------

Fix spacing for links inside code blocks, and improve link tooltips in alloc::{rc, sync}

----------

Fix spacing for links inside code blocks, and improve link tooltips in alloc::string

----------

Fix spacing for links inside code blocks in alloc::vec

----------

Fix spacing for links inside code blocks in core::option

----------

Fix spacing for links inside code blocks, and improve a few link tooltips in core::result

----------

Fix spacing for links inside code blocks in core::{iter::{self, iterator}, stream::stream, poll}

----------

Fix spacing for links inside code blocks, and improve a few link tooltips in std::{fs, path}

----------

Fix spacing for links inside code blocks in std::{collections, time}

----------

Fix spacing for links inside code blocks in and make formatting of `&str`-like types consistent in std::ffi::{c_str, os_str}

----------

Fix spacing for links inside code blocks, and improve link tooltips in std::ffi

----------

Fix spacing for links inside code blocks, and improve a few link tooltips
in std::{io::{self, buffered::{bufreader, bufwriter}, cursor, util}, net::{self, addr}}

----------

Fix typo in link to `into` for `OsString` docs

----------

Remove tooltips that will probably become redundant in the future

----------

Apply suggestions from code review

Replacing `…std/primitive.reference.html` paths with just `reference`

Co-authored-by: Joshua Nelson <github@jyn.dev>
----------

Also replace `…std/primitive.reference.html` paths with just `reference` in `core::pin`

2 years agoDon't anonymize bound region names during typeck
Aaron Hill [Sat, 25 Sep 2021 18:04:00 +0000 (13:04 -0500)]
Don't anonymize bound region names during typeck

Once this anonymization has performed, we have no
way of recovering the original names during NLL
borrow checking. Keeping the original names allows
error messages in full NLL mode to contain the original
bound region names.

As a result, the typeck results may contain types that
differ only in the names used for their bound regions. However,
anonimization of bound regions does not guarantee that
all distinct types are unqual (e.g. not subtypes of each other).
For example, `for<'a> fn(&'a u32, &'a u32)` and
`for<'b, 'c> fn(&'b u32, &'c u32)` are subtypes of each other,
as explained here:

https://github.com/rust-lang/rust/blob/63cc2bb3d07d6c726dfcdc5f95cbe5ed4760641a/compiler/rustc_infer/src/infer/nll_relate/mod.rs#L682-L690

Therefore, any code handling types with higher-ranked regions already
needs to handle the case where two distinct `Ty`s are 'actually'
equal.

2 years agoAuto merge of #87584 - adamgemmell:dev/asm-tests, r=Amanieu
bors [Sat, 25 Sep 2021 17:14:38 +0000 (17:14 +0000)]
Auto merge of #87584 - adamgemmell:dev/asm-tests, r=Amanieu

Add inline asm! tests for aarch64

Port many of the x86-only UI tests for inline asm! over to aarch64.

2 years agorustdoc: Document `is_assoc_ty()`
Noah Lev [Sat, 25 Sep 2021 16:50:12 +0000 (09:50 -0700)]
rustdoc: Document `is_assoc_ty()`

It's adapted from the old documentation for the `is_generic` field.

2 years agoElaborate comment
Hirochika Matsumoto [Sat, 25 Sep 2021 16:07:10 +0000 (01:07 +0900)]
Elaborate comment

Co-authored-by: Joshua Nelson <github@jyn.dev>
2 years agoCheck for macros in built-in attributes that don't support them.
Eric Huss [Fri, 17 Sep 2021 20:08:56 +0000 (13:08 -0700)]
Check for macros in built-in attributes that don't support them.

2 years agoMove malformed attribute code to a function and fix inner attribute suggestion.
Eric Huss [Fri, 17 Sep 2021 00:48:06 +0000 (17:48 -0700)]
Move malformed attribute code to a function and fix inner attribute suggestion.

Moving to a dedicated function in preparation for other validation.

The suggestion given didn't consider if it was an inner attribute.

2 years agoUse larger span for adjustments on method calls
Aaron Hill [Thu, 16 Sep 2021 20:01:22 +0000 (15:01 -0500)]
Use larger span for adjustments on method calls

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

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.

2 years agoAuto merge of #88243 - nikic:newpm-2, r=nagisa
bors [Sat, 25 Sep 2021 13:43:52 +0000 (13:43 +0000)]
Auto merge of #88243 - nikic:newpm-2, r=nagisa

Enable new pass manager with LLVM 13

The new pass manager is enabled by default in clang since Clang/LLVM 13. Per the recent discussion on llvm-dev (https://lists.llvm.org/pipermail/llvm-dev/2021-August/152305.html) the legacy pass manager will be unmaintained in LLVM 14 and removed entirely in LLVM 15.

This switches us to use the new pass manager if LLVM >= 13 is used. It's possible to still use the old pass manager using `-Z new-llvm-pass-manager=no`.

2 years agoAuto merge of #89030 - nbdd0121:box2, r=jonas-schievink
bors [Sat, 25 Sep 2021 11:01:13 +0000 (11:01 +0000)]
Auto merge of #89030 - nbdd0121:box2, r=jonas-schievink

Introduce `Rvalue::ShallowInitBox`

Polished version of #88700.

Implements MCP rust-lang/compiler-team#460, and should allow #43596 to go forward.

In short, creating an empty box is split from a nullary-op `NullOp::Box` into two steps, first a call to `exchange_malloc`, then a `Rvalue::ShallowInitBox` which transmutes `*mut u8` to a shallow-initialized `Box<T>`. This allows the `exchange_malloc` call to unwind. Details can be found in the MCP.

`NullOp::Box` is not yet removed, purely to make reverting easier in case anything goes wrong as the result of this PR. If revert is needed a reversion of "Use Rvalue::ShallowInitBox for box expression" commit followed by a test bless should be sufficient.

Experiments in #88700 showed a very slight compile-time perf regression due to (supposedly) slightly more time spent in LLVM. We could omit unwind edge generation (in non-`oom=panic` case) in box expression MIR construction to restore perf; but I don't think it's necessary since runtime perf isn't affected and perf difference is rather small.

2 years agoAuto merge of #89030 - nbdd0121:box2, r=jonas-schievink
bors [Sat, 25 Sep 2021 11:01:13 +0000 (11:01 +0000)]
Auto merge of #89030 - nbdd0121:box2, r=jonas-schievink

Introduce `Rvalue::ShallowInitBox`

Polished version of #88700.

Implements MCP rust-lang/compiler-team#460, and should allow #43596 to go forward.

In short, creating an empty box is split from a nullary-op `NullOp::Box` into two steps, first a call to `exchange_malloc`, then a `Rvalue::ShallowInitBox` which transmutes `*mut u8` to a shallow-initialized `Box<T>`. This allows the `exchange_malloc` call to unwind. Details can be found in the MCP.

`NullOp::Box` is not yet removed, purely to make reverting easier in case anything goes wrong as the result of this PR. If revert is needed a reversion of "Use Rvalue::ShallowInitBox for box expression" commit followed by a test bless should be sufficient.

Experiments in #88700 showed a very slight compile-time perf regression due to (supposedly) slightly more time spent in LLVM. We could omit unwind edge generation (in non-`oom=panic` case) in box expression MIR construction to restore perf; but I don't think it's necessary since runtime perf isn't affected and perf difference is rather small.

2 years agoPin panic-in-drop=abort test to old pass manager
Nikita Popov [Sat, 25 Sep 2021 10:39:20 +0000 (12:39 +0200)]
Pin panic-in-drop=abort test to old pass manager

2 years agoMake expectation in panic-in-drop-abort.rs test more precise
Nikita Popov [Tue, 14 Sep 2021 18:16:22 +0000 (20:16 +0200)]
Make expectation in panic-in-drop-abort.rs test more precise

Check whether a call/invoke of the function exists, but don't
match a leftover function declaration.

Also remove the CHECK-LABELs: In panic-in-drop=unwind mode the
call will not actually be in either of those functions, so
remove the restriction and look for any calls.

2 years agoUse correct pipeline for LTO at O0
Nikita Popov [Mon, 13 Sep 2021 16:18:59 +0000 (18:18 +0200)]
Use correct pipeline for LTO at O0

Unlike the pre-link piplines, the LTO pipelines do support O0,
and using them is required to avoid leaving behind undefined
references for the linker.

2 years agoEnable new pass manager on LLVM 13
Nikita Popov [Sat, 21 Aug 2021 20:20:32 +0000 (22:20 +0200)]
Enable new pass manager on LLVM 13

The new pass manager is enabled by default in clang since
Clang/LLVM 13. While the discussion about this is still ongoing
(https://lists.llvm.org/pipermail/llvm-dev/2021-August/152305.html)
it's expected that support for the legacy pass manager will be
dropped either in LLVM 14 or 15.

This switches us to use the new pass manager if LLVM >= 13 is used.

2 years agoAuto merge of #89237 - BoxyUwU:trackersMcCaller, r=eddyb
bors [Sat, 25 Sep 2021 07:33:25 +0000 (07:33 +0000)]
Auto merge of #89237 - BoxyUwU:trackersMcCaller, r=eddyb

make `#[track_caller]` actually do stuff in `Steal::borrow`

makes this ICE message useful:
``thread 'rustc' panicked at 'attempted to read from stolen value', /rustc/ac2d9fc509e36d1b32513744adf58c34bcc4f43c\compiler\rustc_data_structures\src\steal.rs:37:21``

2 years agorustdoc: Don't show hidden trait methods
Hirochika Matsumoto [Thu, 23 Sep 2021 10:38:01 +0000 (19:38 +0900)]
rustdoc: Don't show hidden trait methods

By skipping trait items whose attributes include `hidden`, we void
showing
such trait methods.

2 years agoAuto merge of #87220 - petrochenkov:derivecfglimit2, r=Aaron1011
bors [Sat, 25 Sep 2021 04:35:59 +0000 (04:35 +0000)]
Auto merge of #87220 - petrochenkov:derivecfglimit2, r=Aaron1011

Make `#[derive(A, B, ...)]` cfg-eval its input only for `A, B, ...` and stabilize `feature(macro_attributes_in_derive_output)`

Stabilization report: https://github.com/rust-lang/rust/pull/87220#issuecomment-881923657

Closes #81119
r? `@Aaron1011`

2 years agouse `drain_filter` instead of `filter` and `retain`
Takayuki Maeda [Sat, 25 Sep 2021 02:33:53 +0000 (11:33 +0900)]
use `drain_filter` instead of `filter` and `retain`

2 years agoAuto merge of #89230 - workingjubilee:rollup-1swktdq, r=workingjubilee
bors [Sat, 25 Sep 2021 00:20:28 +0000 (00:20 +0000)]
Auto merge of #89230 - workingjubilee:rollup-1swktdq, r=workingjubilee

Rollup of 8 pull requests

Successful merges:

 - #88893 (Add 1.56.0 release notes)
 - #89001 (Be explicit about using Binder::dummy)
 - #89072 (Avoid a couple of Symbol::as_str calls in cg_llvm )
 - #89104 (Simplify scoped_thread)
 - #89208 ([rfc 2229] Drop fully captured upvars in the same order as the regular drop code)
 - #89210 (Add missing time complexities to linked_list.rs)
 - #89217 (Enable "generate-link-to-definition" option on rust tools docs as well)
 - #89221 (Give better error for `macro_rules! name!`)

Failed merges:

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

2 years agoIntroduce `Rvalue::ShallowInitBox`
Gary Guo [Mon, 6 Sep 2021 17:33:23 +0000 (18:33 +0100)]
Introduce `Rvalue::ShallowInitBox`

2 years agoBless tests
Gary Guo [Thu, 16 Sep 2021 22:04:02 +0000 (23:04 +0100)]
Bless tests

2 years agoReport heap allocation instead of non-const fn for exchange_malloc call
Gary Guo [Thu, 16 Sep 2021 21:49:34 +0000 (22:49 +0100)]
Report heap allocation instead of non-const fn for exchange_malloc call

2 years agoUse Rvalue::ShallowInitBox for box expression
Gary Guo [Sat, 11 Sep 2021 22:24:55 +0000 (23:24 +0100)]
Use Rvalue::ShallowInitBox for box expression

2 years agoIntroduce `Rvalue::ShallowInitBox`
Gary Guo [Mon, 6 Sep 2021 17:33:23 +0000 (18:33 +0100)]
Introduce `Rvalue::ShallowInitBox`

2 years agoarrr caught ya caller
Ellen [Fri, 24 Sep 2021 23:34:02 +0000 (00:34 +0100)]
arrr caught ya caller

awd

2 years agomake junit output more consistent with default format
Jane Lusby [Fri, 24 Sep 2021 21:45:09 +0000 (14:45 -0700)]
make junit output more consistent with default format

2 years agoAuto merge of #86246 - FabianWolff:issue-83471, r=estebank
bors [Fri, 24 Sep 2021 21:30:35 +0000 (21:30 +0000)]
Auto merge of #86246 - FabianWolff:issue-83471, r=estebank

Add basic checks for well-formedness of `fn`/`fn_mut` lang items

This pull request fixes #83471. Lang items are never actually checked for well-formedness (#9307). This means that one can get an ICE quite easily, e.g. as follows:
```rust
#![feature(lang_items)]
#[lang = "fn"]
trait MyFn {
    const call: i32 = 42;
}

fn main() {
    (|| 42)();
}
```
or this:
```rust
#![feature(lang_items)]
#[lang = "fn"]
trait MyFn {
    fn call(i: i32, j: i32);
}

fn main() {
    (|| 42)();
}
```
Ideally, there should probably be a more comprehensive strategy for checking lang items for well-formedness, but for the time being, I have added some rudimentary well-formedness checks that prevent #83471 and similar issues.

2 years agoHide `<...> defined here` note if the source is not available
Fabian Wolff [Fri, 24 Sep 2021 20:42:05 +0000 (22:42 +0200)]
Hide `<...> defined here` note if the source is not available

2 years agoStabilize `feature(macro_attributes_in_derive_output)`
Vadim Petrochenkov [Sat, 17 Jul 2021 14:50:33 +0000 (17:50 +0300)]
Stabilize `feature(macro_attributes_in_derive_output)`

2 years agoderive: Do not configure or clone items unless necessary
Vadim Petrochenkov [Sat, 17 Jul 2021 14:28:43 +0000 (17:28 +0300)]
derive: Do not configure or clone items unless necessary

2 years agobuiltin_macros: Make #[derive(A, B, ...)] cfg-eval its input only for `A, B, ...`
Vadim Petrochenkov [Sat, 17 Jul 2021 14:10:03 +0000 (17:10 +0300)]
builtin_macros: Make #[derive(A, B, ...)] cfg-eval its input only for `A, B, ...`

2 years agoRollup merge of #89221 - aDotInTheVoid:macro-error-1, r=estebank
Jubilee [Fri, 24 Sep 2021 18:40:17 +0000 (11:40 -0700)]
Rollup merge of #89221 - aDotInTheVoid:macro-error-1, r=estebank

Give better error for `macro_rules! name!`

r? ``@estebank``

``@rustbot`` modify labels: +A-diagnostics +A-parser

2 years agoRollup merge of #89217 - GuillaumeGomez:generate-link-to-def-rust-tools, r=jyn514
Jubilee [Fri, 24 Sep 2021 18:40:16 +0000 (11:40 -0700)]
Rollup merge of #89217 - GuillaumeGomez:generate-link-to-def-rust-tools, r=jyn514

Enable "generate-link-to-definition" option on rust tools docs as well

Just realized that we enable the option for the compiler crates, but we don't have it for rustdoc and the other tools documentation...

Part of https://github.com/rust-lang/rust/issues/89095.

cc ``@rust-lang/rustdoc``
r? ``@Mark-Simulacrum``

2 years agoRollup merge of #89210 - Takashiidobe:master, r=kennytm
Jubilee [Fri, 24 Sep 2021 18:40:15 +0000 (11:40 -0700)]
Rollup merge of #89210 - Takashiidobe:master, r=kennytm

Add missing time complexities to linked_list.rs

Most functions in LinkedList have time complexities in their description:
Like push front:

```
Adds an element first in the list.

This operation should compute in O(1) time.
```

Time complexities were missing for the following, so I've added them in this PR:

contains: O(n)
front: O(1)
front_mut: O(1)
back: O(1)
back_mut: O(1)

2 years agoRollup merge of #89208 - wesleywiser:rfc_2229_droporder, r=nikomatsakis
Jubilee [Fri, 24 Sep 2021 18:40:14 +0000 (11:40 -0700)]
Rollup merge of #89208 - wesleywiser:rfc_2229_droporder, r=nikomatsakis

[rfc 2229] Drop fully captured upvars in the same order as the regular drop code

Currently, with the new 2021 edition, if a closure captures all of the
fields of an upvar, we'll drop those fields in the order they are used
within the closure instead of the normal drop order (the definition
order of the fields in the type).

This changes that so we sort the captured fields by the definition order
which causes them to drop in that same order as well.

Fixes rust-lang/project-rfc-2229#42

r? `@nikomatsakis`

2 years agoRollup merge of #89104 - Mark-Simulacrum:spawn-unchecked, r=nagisa,bjorn3
Jubilee [Fri, 24 Sep 2021 18:40:13 +0000 (11:40 -0700)]
Rollup merge of #89104 - Mark-Simulacrum:spawn-unchecked, r=nagisa,bjorn3

Simplify scoped_thread

Avoids a bunch of manual pointer manipulation in favor of using the appropriate std API.

2 years agoRollup merge of #89072 - bjorn3:less_symbol_as_str, r=michaelwoerister
Jubilee [Fri, 24 Sep 2021 18:40:12 +0000 (11:40 -0700)]
Rollup merge of #89072 - bjorn3:less_symbol_as_str, r=michaelwoerister

Avoid a couple of Symbol::as_str calls in cg_llvm

This should improve performance a tiny bit. Also remove `Symbol::len` and make `SymbolIndex` private.

2 years agoRollup merge of #89001 - jackh726:binder-cleanup, r=nikomatsakis
Jubilee [Fri, 24 Sep 2021 18:40:11 +0000 (11:40 -0700)]
Rollup merge of #89001 - jackh726:binder-cleanup, r=nikomatsakis

Be explicit about using Binder::dummy

This is somewhat of a late followup to the binder refactor PR. It removes `ToPredicate` and `ToPolyTraitImpls` that hide the use of `Binder::dummy`. While this does make code a bit more verbose, it allows us be more careful about where we create binders.

Another alternative here might be to add a new trait `ToBinder` or something with a `dummy()` fn. Which could still allow grepping but allows doing something like `trait_ref.dummy()` (but I also wonder if longer-term, it would be better to be even more explicit with a `bind_with_vars(ty::List::empty())` *but* that's not clear yet.

r? ``@nikomatsakis``

2 years agoRollup merge of #89001 - jackh726:binder-cleanup, r=nikomatsakis
Jubilee [Fri, 24 Sep 2021 18:40:11 +0000 (11:40 -0700)]
Rollup merge of #89001 - jackh726:binder-cleanup, r=nikomatsakis

Be explicit about using Binder::dummy

This is somewhat of a late followup to the binder refactor PR. It removes `ToPredicate` and `ToPolyTraitImpls` that hide the use of `Binder::dummy`. While this does make code a bit more verbose, it allows us be more careful about where we create binders.

Another alternative here might be to add a new trait `ToBinder` or something with a `dummy()` fn. Which could still allow grepping but allows doing something like `trait_ref.dummy()` (but I also wonder if longer-term, it would be better to be even more explicit with a `bind_with_vars(ty::List::empty())` *but* that's not clear yet.

r? ``@nikomatsakis``

2 years agoRollup merge of #88893 - Mark-Simulacrum:relnotes, r=pietroalbini
Jubilee [Fri, 24 Sep 2021 18:40:11 +0000 (11:40 -0700)]
Rollup merge of #88893 - Mark-Simulacrum:relnotes, r=pietroalbini

Add 1.56.0 release notes

Notable things:

* Rustdoc section currently absent, for lack of things to call out that I could find. It seems like https://github.com/rust-lang/rust/pull/87451 is the only potential candidate, but that seems like more of a bugfix and doesn't seem to warrant inclusion to me. But we can add it if desired.

As with the 1.55.0 release notes, my intent is to leave this open for approximately 1-2 weeks at the early part of the cycle, and then merge it in (after fixing any feedback). Further iteration can happen in subsequent issues (and PRs).

[Rendered](https://github.com/Mark-Simulacrum/rust/blob/relnotes/RELEASES.md)

2 years agoMake error message for malformed `fn`/`fn_mut` lang item more specific
Fabian Wolff [Fri, 24 Sep 2021 16:55:14 +0000 (18:55 +0200)]
Make error message for malformed `fn`/`fn_mut` lang item more specific

2 years agoAuto merge of #88872 - petrochenkov:getmod2, r=cjgillot
bors [Fri, 24 Sep 2021 18:12:33 +0000 (18:12 +0000)]
Auto merge of #88872 - petrochenkov:getmod2, r=cjgillot

resolve: Some module-related refactorings

See the individual commits.

2 years agoDisable a spuriously failing test
Vadim Petrochenkov [Fri, 24 Sep 2021 17:28:47 +0000 (20:28 +0300)]
Disable a spuriously failing test

2 years agoDisable some tests for platforms without registers.
Adam Gemmell [Mon, 6 Sep 2021 15:44:19 +0000 (16:44 +0100)]
Disable some tests for platforms without registers.

Update new tests to run on aarch64 platforms.

2 years agoUpdate and add more tests
Wesley Wiser [Fri, 24 Sep 2021 16:26:24 +0000 (12:26 -0400)]
Update and add more tests

2 years agoAdd basic checks for well-formedness of `fn`/`fn_mut` lang items
Fabian Wolff [Sat, 12 Jun 2021 10:48:04 +0000 (12:48 +0200)]
Add basic checks for well-formedness of `fn`/`fn_mut` lang items

2 years agoAdd inline asm! tests for aarch64
Adam Gemmell [Thu, 24 Jun 2021 14:01:49 +0000 (14:01 +0000)]
Add inline asm! tests for aarch64

Enable tests which are largely architecture-independent on all supported
platforms

2 years agoresolve: Refactor obtaining `Module` from its `DefId`
Vadim Petrochenkov [Sat, 11 Sep 2021 23:06:27 +0000 (02:06 +0300)]
resolve: Refactor obtaining `Module` from its `DefId`

The `Option<Module>` version is supported for the case where we don't know whether the `DefId` refers to a module or not.
Non-local traits and enums are also correctly found now.

2 years agoresolve: Use a single common map for local and foreign modules
Vadim Petrochenkov [Sat, 11 Sep 2021 22:59:05 +0000 (01:59 +0300)]
resolve: Use a single common map for local and foreign modules

2 years agoresolve: Rename some expansion def scope methods
Vadim Petrochenkov [Sat, 11 Sep 2021 22:47:46 +0000 (01:47 +0300)]
resolve: Rename some expansion def scope methods

2 years agoresolve: Cleanup module allocation
Vadim Petrochenkov [Sat, 11 Sep 2021 13:37:34 +0000 (16:37 +0300)]
resolve: Cleanup module allocation

Construction of all modules is now centralized and performed by `fn new_module`.