Commit Graph

155903 Commits

Author SHA1 Message Date
Michael Woerister
a1e2c0f0ad Remove untracked vtable-const-allocation cache from tcx 2021-10-07 11:27:35 +02:00
flip1995
333a06af42
Merge commit 'b7f3f7f6082679da2da9a0b3faf1b5adef3afd3b' into clippyup 2021-10-07 11:21:30 +02:00
bors
b7f3f7f608 Auto merge of #7783 - flip1995:rustup, r=flip1995
Rustup

r? `@ghost`

Finally an easy, conflict free rustup again 🎉

changelog: none
2021-10-07 09:18:25 +00:00
flip1995
8f9ef87f75
Bump nightly version -> 2021-10-07 2021-10-07 11:12:27 +02:00
flip1995
9613df9c85
Allow invalid-paths for regex paths 2021-10-07 11:12:02 +02:00
flip1995
1f955158dd
Merge remote-tracking branch 'upstream/master' into rustup 2021-10-07 11:11:23 +02:00
bors
ca8078d7b2 Auto merge of #89495 - Mark-Simulacrum:add-inlines, r=michaelwoerister
Add two inline annotations for hot functions

These two functions are essentially no-ops (and compile to just a load and
return), but show up in process_obligations profiles with a high call count --
so worthwhile to try and inline them. This is not normally possible as they're
non-generic, so they don't get offered for inlining by our current algorithm.
2021-10-07 06:23:23 +00:00
bors
01ea06acb7 Auto merge of #7780 - mikerite:update_lints_mod_revert, r=llogiq
Revert `update_lints` module list generating code

This commit reverts the module list generation code to what it was
before the change to `include!` it and generates better output.

changelog: none
2021-10-07 05:00:53 +00:00
Michael Wright
8f075ec961 Revert update_lints module list generating code
This commit reverts the module list generation code to what it was
before the change to `include!` it and generates better output.
2021-10-07 06:42:21 +02:00
bors
d3e6770efb Auto merge of #89454 - erikdesjardins:perfattrcheck, r=nikomatsakis
perf: only check for `rustc_trivial_field_reads` attribute on traits, not items, impls, etc.

The checks that are removed in this PR (originally added in #85200) caused a small perf regression: https://github.com/rust-lang/rust/pull/88824#issuecomment-932664761

Since the attribute is currently only applied to traits, I don't think it's worth keeping the additional checks for now.
If/when we decide to apply the attribute somewhere else, we can (partially) revert this and reevaluate the perf impact.

r? `@nikomatsakis` cc `@FabianWolff`
2021-10-07 03:42:05 +00:00
Will Crichton
549a68b73e Add InferCtxt::with_opaque_type_inference to get_body_with_borrowck_facts 2021-10-06 19:07:56 -07:00
bors
0eabf25b90 Auto merge of #89608 - Manishearth:rollup-m7kd76f, r=Manishearth
Rollup of 12 pull requests

Successful merges:

 - #87601 (Add functions to add unsigned and signed integers)
 - #88523 (Expand documentation for `FpCategory`.)
 - #89050 (refactor: VecDeques Drain fields to private)
 - #89245 (refactor: make VecDeque's IterMut fields module-private, not just crate-private)
 - #89324 (Rename `std:🧵:available_conccurrency` to `std:🧵:available_parallelism`)
 - #89329 (print-type-sizes: skip field printing for primitives)
 - #89501 (Note specific regions involved in 'borrowed data escapes' error)
 - #89506 (librustdoc: Use correct heading levels.)
 - #89528 (Fix suggestion to borrow when casting from pointer to reference)
 - #89531 (library std, libc dependency update)
 - #89588 (Add a test for generic_const_exprs)
 - #89591 (fix: alloc-optimisation is only for rust llvm)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-10-06 20:17:28 +00:00
Michael Benfield
a17193dbb9 Enable AutoFDO.
This largely involves implementing the options debug-info-for-profiling
and profile-sample-use and forwarding them on to LLVM.

AutoFDO can be used on x86-64 Linux like this:
rustc -O -Cdebug-info-for-profiling main.rs -o main
perf record -b ./main
create_llvm_prof --binary=main --out=code.prof
rustc -O -Cprofile-sample-use=code.prof main.rs -o main2

Now `main2` will have feedback directed optimization applied to it.

The create_llvm_prof tool can be obtained from this github repository:
https://github.com/google/autofdo

Fixes #64892.
2021-10-06 19:36:52 +00:00
Manish Goregaokar
f31c805038
Rollup merge of #89591 - infinity0:master, r=Amanieu
fix: alloc-optimisation is only for rust llvm

As discussed at the bottom of #83485.

On a separate note I'll take this chance ask, is it worth pulling in that patch (to recognise `__rust_dealloc`) into Debian's system LLVM? The main factors for us to consider would be (1) is the optimisation significant and (2) is there not any significant negative impact to non-rust packages that use LLVM.
2021-10-06 12:33:24 -07:00
Manish Goregaokar
eb7da35d84
Rollup merge of #89588 - BoxyUwU:add_a_test_uwu, r=lcnr
Add a test for generic_const_exprs

Test that const_eval_resolve evaluates consts with unused inference vars in substs

r? ``@lcnr``
2021-10-06 12:33:23 -07:00
Manish Goregaokar
79a1fc8419
Rollup merge of #89531 - devnexen:stack_overflow_bsd_libc_upd, r=dtolnay
library std, libc dependency update

to solve #87528 build.
2021-10-06 12:33:22 -07:00
Manish Goregaokar
f5bfa3450a
Rollup merge of #89528 - FabianWolff:issue-89497, r=jackh726
Fix suggestion to borrow when casting from pointer to reference

Fixes #89497.
2021-10-06 12:33:21 -07:00
Manish Goregaokar
7d6feb421e
Rollup merge of #89506 - yaymukund:docblock-headings, r=GuillaumeGomez
librustdoc: Use correct heading levels.

Closes #89309

This fixes the `<h#>` header tags throughout the docs to reflect a semantic hierarchy.

- I ran a script to manually check that we don't have any files with multiple `<h1>` tags.
- Also checked that we never incorrectly nest e.g. a `<h2>` under an `<h3>`.
- I also spot-checked a bunch of pages (`trait.Read`, `enum.Ordering`, `primitive.isize`, `trait.Iterator`).
2021-10-06 12:33:20 -07:00
Manish Goregaokar
b01594051c
Rollup merge of #89501 - Aaron1011:escaping-name-regions, r=davidtwco
Note specific regions involved in 'borrowed data escapes' error

Fixes #67007

Currently, a 'borrowed data escapes' error does not mention
the specific lifetime involved (except indirectly through a suggestion
about adding a lifetime bound). We now explain the specific lifetime
relationship that failed to hold, which improves otherwise vague
error messages.
2021-10-06 12:33:19 -07:00
Manish Goregaokar
b87a9a8a7c
Rollup merge of #89329 - tmiasko:print-type-sizes-no-fields, r=jackh726
print-type-sizes: skip field printing for primitives

Fixes #86528.
2021-10-06 12:33:18 -07:00
Manish Goregaokar
b4615b5bf9
Rollup merge of #89324 - yoshuawuyts:hardware-parallelism, r=m-ou-se
Rename `std:🧵:available_conccurrency` to `std:🧵:available_parallelism`

_Tracking issue: https://github.com/rust-lang/rust/issues/74479_

This PR renames  `std:🧵:available_conccurrency` to `std:🧵:available_parallelism`.

## Rationale

The API was initially named `std:🧵:hardware_concurrency`, mirroring the [C++ API of the same name](https://en.cppreference.com/w/cpp/thread/thread/hardware_concurrency). We eventually decided to omit any reference to the word "hardware" after [this comment](https://github.com/rust-lang/rust/pull/74480#issuecomment-662045841). And so we ended up with `available_concurrency` instead.

---

For a talk I was preparing this week I was reading through ["Understanding and expressing scalable concurrency" (A. Turon, 2013)](http://aturon.github.io/academic/turon-thesis.pdf), and the following passage stood out to me (emphasis mine):

> __Concurrency is a system-structuring mechanism.__ An interactive system that deals with disparate asynchronous events is naturally structured by division into concurrent threads with disparate responsibilities. Doing so creates a better fit between problem and solution, and can also decrease the average latency of the system by preventing long-running computations from obstructing quicker ones.

> __Parallelism is a resource.__ A given machine provides a certain capacity for parallelism, i.e., a bound on the number of computations it can perform simultaneously. The goal is to maximize throughput by intelligently using this resource. For interactive systems, parallelism can decrease latency as well.

_Chapter 2.1: Concurrency is not Parallelism. Page 30._

---

_"Concurrency is a system-structuring mechanism. Parallelism is a resource."_ — It feels like this accurately captures the way we should be thinking about these APIs. What this API returns is not "the amount of concurrency available to the program" which is a property of the program, and thus even with just a single thread is effectively unbounded. But instead it returns "the amount of _parallelism_ available to the program", which is a resource hard-constrained by the machine's capacity (and can be further restricted by e.g. operating systems).

That's why I'd like to propose we rename this API from `available_concurrency` to `available_parallelism`. This still meets the criteria we previously established of not attempting to define what exactly we mean by "hardware", "threads", and other such words. Instead we only talk about "concurrency" as an abstract resource available to our program.

r? `@joshtriplett`
2021-10-06 12:33:17 -07:00
Manish Goregaokar
14da7fc9ae
Rollup merge of #89245 - DeveloperC286:iter_mut_fields_to_private, r=joshtriplett
refactor: make VecDeque's IterMut fields module-private, not just crate-private

Made the fields of VecDeque's IterMut private by creating a IterMut::new(...) function to create a new instance of IterMut and migrating usage to use IterMut::new(...).
2021-10-06 12:33:16 -07:00
Manish Goregaokar
91e3b5172c
Rollup merge of #89050 - DeveloperC286:drain_fields_to_private, r=joshtriplett
refactor: VecDeques Drain fields to private

Made the fields of VecDeque's Drain private by creating a Drain::new(...) function to create a new instance of Drain and migrating usage to use Drain::new(...).
2021-10-06 12:33:15 -07:00
Manish Goregaokar
1e3b5d6725
Rollup merge of #88523 - kpreid:category, r=yaahc
Expand documentation for `FpCategory`.

I intend these changes to be helpful to readers who are not yet familiar with the quirks of floating-point numbers. Additionally, I felt it was misleading to describe `Nan` as being the result of division by zero, since most divisions by zero (except for 0/0) produce `Infinite` floats, so I moved that remark to the `Infinite` variant with adjustment.

The first sentence of the `Nan` documentation is copied from `f32`; I followed the example of the `f64` documentation by referring to `f32` for general concepts, rather than duplicating the text.

----

I considered making similar changes to the documentation of the `is_*` methods of floats, but decided that that was a much larger and trickier problem; here, each of the variants' descriptions can be expected to be read in context of being mutually exclusive with the others.
2021-10-06 12:33:14 -07:00
Manish Goregaokar
3209582a87
Rollup merge of #87601 - a1phyr:feature_uint_add_signed, r=kennytm
Add functions to add unsigned and signed integers

This PR adds methods to unsigned integers to add signed integers with good overflow semantics under `#![feature(mixed_integer_ops)]`.

The added API is:

```rust
// `uX` is `u8`, `u16`, `u32`, `u64`,`u128`, `usize`
impl uX {
    pub const fn checked_add_signed(self, iX) -> Option<Self>;
    pub const fn overflowing_add_signed(self, iX) -> (Self, bool);
    pub const fn saturating_add_signed(self, iX) -> Self;
    pub const fn wrapping_add_signed(self, iX) -> Self;
}

impl iX {
    pub const fn checked_add_unsigned(self, uX) -> Option<Self>;
    pub const fn overflowing_add_unsigned(self, uX) -> (Self, bool);
    pub const fn saturating_add_unsigned(self, uX) -> Self;
    pub const fn wrapping_add_unsigned(self, uX) -> Self;

    pub const fn checked_sub_unsigned(self, uX) -> Option<Self>;
    pub const fn overflowing_sub_unsigned(self, uX) -> (Self, bool);
    pub const fn saturating_sub_unsigned(self, uX) -> Self;
    pub const fn wrapping_sub_unsigned(self, uX) -> Self;
}
```

Maybe it would be interesting to also have `add_signed` that panics in debug and wraps in release ?
2021-10-06 12:33:13 -07:00
Guillaume Gomez
09c76884bc Simplify AttributesExt::cfg function and remove error emissions since they are not useful 2021-10-06 21:22:56 +02:00
bors
11492c75a3 Auto merge of #7772 - Manishearth:doc-markdown-intra, r=camsteffen
Handle intra-doc links in doc_markdown

Fixes #7758

changelog: Handle intra-doc links in [`doc_markdown`]
2021-10-06 19:16:22 +00:00
Cameron Steffen
a8d8bfd376 Bless tests 2021-10-06 14:00:40 -05:00
Alexander
a31518fbf4 opt-level >= 4 2021-10-06 20:37:24 +02:00
Guillaume Gomez
8fac41a530 Clean up code a bit:
* Remove "bool_to_options" feature
 * Update version for compiler feature
 * rustfmt
2021-10-06 20:23:57 +02:00
Cameron Steffen
b6cab80c18 Use get_diagnostic_name 2021-10-06 13:10:08 -05:00
Camille GILLOT
4028b093e4 Do not ICE if some foreign expansions were not encoded.
The metadata encoder does not necessarily encode all expansions, only
those which are referenced in other metadata fields.
2021-10-06 19:10:08 +02:00
Camille GILLOT
daf8903e8e Do not re-hash foreign spans. 2021-10-06 19:10:07 +02:00
Alexander
4c3465c69e run remaining tests 2021-10-06 19:08:21 +02:00
bors
d480ceff38 Auto merge of #89599 - rusticstuff:ci-fix, r=Mark-Simulacrum
Switch to our own mirror of libisl plus `ct-ng oldconfig` fixes

Switching to mirror the ISL libs (#89594) unearthed a (possibly long-standing?) issue with `ct-ng oldconfig`. It always overwrites the mirror config values. This PR adds the ISL mirror, gets rid of `ct-ng oldconfig` and adds crosstools-ng config files which can be used directly. (Edited)

Fixes #89593.

r? `@pietroalbini`
2021-10-06 17:06:29 +00:00
Camille GILLOT
ce21756ed3 Access Session while decoding expn_id. 2021-10-06 19:06:20 +02:00
Alexander
8562d94ba7 tidy 2021-10-06 18:36:33 +02:00
Hans Kratz
b5f9cdb530 Get rid of broken ct-ng oldconfig everywhere and directly provide a suitable .config file. 2021-10-06 18:26:01 +02:00
Alexander
109d5c7688 add MIR artifacts 2021-10-06 17:53:11 +02:00
Alexander
d61f95fead fix import 2021-10-06 17:45:54 +02:00
Manish Goregaokar
2a8d7bd0dd Handle intra-doc links in doc_markdown 2021-10-06 08:38:35 -07:00
Alexander
94e1413f60 reset and cleanup 2021-10-06 17:31:35 +02:00
Manish Goregaokar
80408ef8dc Add regression test for #7758 2021-10-06 08:31:14 -07:00
Cameron Steffen
33b9b95305 Introduce get_diagnostic_name 2021-10-06 08:40:28 -05:00
bors
b9d753e4f5 Auto merge of #7776 - tsoutsman:patch-1, r=flip1995
Fix typos

I'm not sure whether I should add links to `bool`, `char`, and `str`. `slice` could also be linked to.

changelog: none
2021-10-06 13:23:13 +00:00
Mark Rousskov
a412880d8f Switch to our own mirror of libisl 2021-10-06 08:55:02 -04:00
Klim Tsoutsman
8b37928131
Fix typos
I'm not sure whether I should add links to `bool`, `char`, and `str`. `slice` could also be linked to.
2021-10-06 23:32:22 +11:00
Mukund Lakshman
1f86a8e2a0 Revert the rustc_error_codes changes. 2021-10-06 07:58:41 -04:00
Mukund Lakshman
742d8be5e6 Restore h1 styles, which got accidentally removed. 2021-10-06 07:27:27 -04:00
Ximin Luo
b386959aca fix: alloc-optimisation is only for rust llvm 2021-10-06 10:22:03 +01:00