]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoAuto merge of #55238 - alexcrichton:rm-jemalloc, r=estebank
bors [Sat, 3 Nov 2018 09:33:10 +0000 (09:33 +0000)]
Auto merge of #55238 - alexcrichton:rm-jemalloc, r=estebank

Remove the `alloc_jemalloc` crate

This commit removes the `alloc_jemalloc` crate from the standard library and all related configuration. We will no longer be shipping this unstable crate. Rationale for this is provided on https://github.com/rust-lang/rust/issues/36963 and the many linked issues, but I can inline rationale here if desired!

We currently rely on jemalloc for increased perf in the Rust compiler, however. [This perf run shows](https://perf.rust-lang.org/compare.html?start=74ff7dcb1388e60a613cd6050bcd372a3cc4998b&end=7e7928dc0340d79b404e93f0c79eb4b946c1d669&stat=wall-time) that if we switch to glibc 2.23's allocator that it's slower than jemalloc across many benchmarks. [This perf run, however](https://perf.rust-lang.org/compare.html?start=22cc2ae8057d14e980b7c784e1eb2eee26b59e7d&end=10c95ccfa7a7adc12f4e608621ca29f9b98eed29), shows that if we use `jemalloc-sys` from crates.io then rustc actually gets faster across all benchmarks! (presumably because it has a more recent version of jemalloc than our submodule).

As a result, it's expected that this doesn't regress any code (as it's just removing an unstable crate) and it should actually improve rustc performance because it updates jemalloc.

Closes #36963

5 years agoAuto merge of #55363 - pietroalbini:update-cargo-vendor, r=Mark-Simulacrum
bors [Sat, 3 Nov 2018 06:50:19 +0000 (06:50 +0000)]
Auto merge of #55363 - pietroalbini:update-cargo-vendor, r=Mark-Simulacrum

Bump cargo-vendor version

Currently we pin `cargo-vendor` to 0.1.4, which doesn't set the `User-Agent` HTTP header. crates.io is going to require that header in the near future, so this PR bumps the pinned version of the crate to the latest one (which correctly sets the header).

r? @Mark-Simulacrum
cc @sgrif

5 years agoAuto merge of #54383 - mikeyhew:custom-receivers-object-safety, r=nikomatsakis
bors [Sat, 3 Nov 2018 02:37:29 +0000 (02:37 +0000)]
Auto merge of #54383 - mikeyhew:custom-receivers-object-safety, r=nikomatsakis

Take 2: Implement object-safety and dynamic dispatch for arbitrary_self_types

This replaces #50173. Over the months that that PR was open, we made a lot of changes to the way this was going to be implemented, and the long, meandering comment thread and commit history would have been confusing to people reading it in the future. So I decided to package everything up with new, straighforward commits and open a new PR.

Here are the main points. Please read the commit messages for details.

- To simplify codegen, we only support receivers that have the ABI of a pointer. That means they are builtin pointer types, or newtypes thereof.
- We introduce a new trait: `DispatchFromDyn<T>`, similar to `CoerceUnsized<T>`. `DispatchFromDyn` has extra requirements that `CoerceUnsized` does not: when you implement `DispatchFromDyn` for a struct, there cannot be any extra fields besides the field being coerced and `PhantomData` fields. This ensures that the struct's ABI is the same as a pointer.
- For a method's receiver (e.g. `self: Rc<Self>`) to be object-safe, it needs to have the following property:
    - let `DynReceiver` be the receiver when `Self = dyn Trait`
    - let `ConcreteReceiver` be the receiver when `Self = T`, where `T` is some unknown `Sized` type that implements `Trait`, and is the erased type of the trait object.
    - `ConcreteReceiver` must implement `DispatchFromDyn<DynReceiver>`

In the case of `Rc<Self>`, this requires `Rc<T>: DispatchFromDyn<Rc<dyn Trait>>`

These rules are explained more thoroughly in the doc comment on `receiver_is_dispatchable` in object_safety.rs.

r? @nikomatsakis and @eddyb

cc @arielb1 @cramertj @withoutboats

Special thanks to @nikomatsakis for getting me un-stuck when implementing the object-safety checks, and @eddyb for helping with the codegen parts.

EDIT 2018-11-01: updated because CoerceSized has been replaced with DispatchFromDyn

5 years agoAuto merge of #55087 - levex:e0669-improve-span, r=nagisa
bors [Fri, 2 Nov 2018 18:28:51 +0000 (18:28 +0000)]
Auto merge of #55087 - levex:e0669-improve-span, r=nagisa

rustc: improve E0669 span

E0669 refers to an operand that cannot be coerced into a single LLVM
value, unfortunately right now this uses the Span for the entire inline
assembly statement, which is less than ideal.

This commit preserves the Span from HIR, which lets us emit the error
using the Span for the operand itself in MIR.

r? @nagisa
cc/ @parched

5 years agoAuto merge of #54543 - GuillaumeGomez:top-level-index, r=QuietMisdreavus
bors [Fri, 2 Nov 2018 15:39:25 +0000 (15:39 +0000)]
Auto merge of #54543 - GuillaumeGomez:top-level-index, r=QuietMisdreavus

Add index page argument

@Mark-Simulacrum: I might need some help from you: in bootstrap, I want to add an argument (a new flag added into `rustdoc`) in order to generate the current index directly when `rustdoc` is documenting the `std` lib. However, my change in `bootstrap` didn't do it and I assume it must be moved inside the `Std` struct. But there, I don't see how to pass it to `rustdoc` through `cargo`. Did I miss anything?

r? @QuietMisdreavus

5 years agorustc: Wait for all codegen threads to exit
Alex Crichton [Wed, 31 Oct 2018 18:32:27 +0000 (11:32 -0700)]
rustc: Wait for all codegen threads to exit

This commit updates rustc to wait for all codegen threads to exit before
allowing the main thread to exit. This is a stab in the dark to fix the
mysterious segfaults appearing on #55238, and hopefully we'll see
whether this actually fixes things in practice...

5 years agoUse `jemalloc-sys` on Linux and OSX compilers
Alex Crichton [Sun, 21 Oct 2018 02:15:06 +0000 (19:15 -0700)]
Use `jemalloc-sys` on Linux and OSX compilers

This commit adds opt-in support to the compiler to link to `jemalloc` in
the compiler. When activated the compiler will depend on `jemalloc-sys`,
instruct jemalloc to unprefix its symbols, and then link to it. The
feature is activated by default on Linux/OSX compilers for x86_64/i686
platforms, and it's not enabled anywhere else for now. We may be able to
opt-in other platforms in the future! Also note that the opt-in only
happens on CI, it's otherwise unconditionally turned off by default.

Closes #36963

5 years agoRemove all jemalloc-related content
Alex Crichton [Sun, 21 Oct 2018 02:04:42 +0000 (19:04 -0700)]
Remove all jemalloc-related content

This commit removes all jemalloc related submodules, configuration, etc,
from the bootstrap, from the standard library, and from the compiler.
This will be followed up with a change to use jemalloc specifically as
part of rustc on blessed platforms.

5 years agoAuto merge of #55316 - RalfJung:retagging, r=oli-obk
bors [Fri, 2 Nov 2018 12:45:03 +0000 (12:45 +0000)]
Auto merge of #55316 - RalfJung:retagging, r=oli-obk

Add Retagging statements

This adds a `Retag` statement kind to MIR, used to perform the retagging operation from [Stacked Borrows](https://www.ralfj.de/blog/2018/08/07/stacked-borrows.html). It also kills the old `Validate` statements that I added last year.

NOTE: This includes https://github.com/rust-lang/rust/pull/55270. Only [these commits are new](https://github.com/RalfJung/rust/compare/stacked-borrows-ng...RalfJung:retagging).

5 years agoAuto merge of #54718 - froydnj:aarch64-ci, r=alexcrichton
bors [Fri, 2 Nov 2018 09:46:11 +0000 (09:46 +0000)]
Auto merge of #54718 - froydnj:aarch64-ci, r=alexcrichton

add an appveyor config for aarch64-pc-windows-msvc

This is purely a cargo-cult of things to solicit feedback from humans and/or automation failures.  Not sure that the build artifacts would get packaged properly to start providing nightly tarballs for `libstd`, but this is at least a start.

Fixes #53864.

5 years agoAuto merge of #54043 - fintelia:raw_entry, r=alexcrichton
bors [Fri, 2 Nov 2018 07:04:07 +0000 (07:04 +0000)]
Auto merge of #54043 - fintelia:raw_entry, r=alexcrichton

Add raw_entry API to HashMap

This is a continuation of #50821.

5 years agoAuto merge of #55359 - alex:command-exec-uaf, r=alexcrichton
bors [Fri, 2 Nov 2018 04:20:36 +0000 (04:20 +0000)]
Auto merge of #55359 - alex:command-exec-uaf, r=alexcrichton

Fixes #46775 -- don't mutate the process's environment in Command::exec

Instead, pass the environment to execvpe, so the kernel can apply it directly to the new process. This avoids a use-after-free in the case where exec'ing the new process fails for any reason, as well as a race condition if there are other threads alive during the exec.

Fixes #46775

5 years agoAuto merge of #55305 - nikomatsakis:universes-refactor-3, r=scalexm
bors [Fri, 2 Nov 2018 01:19:17 +0000 (01:19 +0000)]
Auto merge of #55305 - nikomatsakis:universes-refactor-3, r=scalexm

universes refactor 3

Some more refactorings from my universe branch. These are getting a bit more "invasive" -- they start to plumb the universe information through the canonicalization process. As of yet though I don't **believe** this branch changes our behavior in any notable way, though I'm marking the branch as `WIP` to give myself a chance to verify this.

r? @scalexm

5 years agoMove doc_alias doc
Guillaume Gomez [Thu, 1 Nov 2018 23:04:56 +0000 (00:04 +0100)]
Move doc_alias doc

5 years agoAdd test for index-page
Guillaume Gomez [Sat, 20 Oct 2018 23:13:33 +0000 (01:13 +0200)]
Add test for index-page

5 years agoAdd documentation for index-page features
Guillaume Gomez [Sat, 13 Oct 2018 12:42:33 +0000 (14:42 +0200)]
Add documentation for index-page features

5 years agoAdd comments explaining how codegen works for `dyn Trait` methods
Michael Hewson [Thu, 1 Nov 2018 22:28:52 +0000 (18:28 -0400)]
Add comments explaining how codegen works for `dyn Trait` methods

5 years agoAuto merge of #55595 - Manishearth:clippyup, r=oli-obk
bors [Thu, 1 Nov 2018 22:18:16 +0000 (22:18 +0000)]
Auto merge of #55595 - Manishearth:clippyup, r=oli-obk

Update clippy

r? @kennytm @oli-obk

5 years agoAdd a check for reprs that could change the ABI
Michael Hewson [Fri, 26 Oct 2018 05:09:33 +0000 (01:09 -0400)]
Add a check for reprs that could change the ABI

disallow `#[repr(C)] and `#[repr(packed)]` on structs implementing DispatchFromDyn because they will change the ABI from Scalar/ScalarPair to Aggregrate, resulting in an ICE during object-safety checks or codegen

5 years agoRemove this check for object-safety during selection of trait object candidates
Michael Hewson [Wed, 17 Oct 2018 22:54:13 +0000 (18:54 -0400)]
Remove this check for object-safety during selection of trait object candidates

I don't really understand what it's for, but see the comment here:
https://github.com/rust-lang/rust/pull/50173#discussion_r204222336

where arielb1 said

> Does this check do anything these days? I think `$0: Trait` is always considered ambiguous

and nikomatsakis agreed we may be able to get rid of it

5 years agoadd `U: Trait` to the param env during DispatchFromDyn check
Michael Hewson [Fri, 12 Oct 2018 04:12:56 +0000 (00:12 -0400)]
add `U: Trait` to the param env during DispatchFromDyn check
also updated the doc on `receiver_is_dispatchable` to reflect current state of the implementation

5 years agoPut backticks around field names, types and paths in error messages
Michael Hewson [Tue, 9 Oct 2018 05:13:07 +0000 (01:13 -0400)]
Put backticks around field names, types and paths in error messages

Added to `DispatchFromDyn` and `CoerceUnsized` error messages

5 years agoAdd layout sanity checks in object safety
Michael Hewson [Tue, 9 Oct 2018 00:40:57 +0000 (20:40 -0400)]
Add layout sanity checks in object safety

If object-safety checks succeed for a receiver type, make sure the
receiver’s abi is
a) a Scalar, when Self = ()
b) a ScalarPair, when Self = dyn Trait

5 years agoReplace UncoeribleReceiver error message with UndispatchableReceiver
Michael Hewson [Tue, 9 Oct 2018 00:37:58 +0000 (20:37 -0400)]
Replace UncoeribleReceiver error message with UndispatchableReceiver

5 years agofix error-index test
Michael Hewson [Fri, 5 Oct 2018 20:35:42 +0000 (16:35 -0400)]
fix error-index test

5 years agoupdate DispatchFromDyn doctest
Michael Hewson [Fri, 5 Oct 2018 06:09:06 +0000 (02:09 -0400)]
update DispatchFromDyn doctest

5 years agoReplace CoerceSized trait with DispatchFromDyn
Michael Hewson [Thu, 4 Oct 2018 03:40:21 +0000 (23:40 -0400)]
Replace CoerceSized trait with DispatchFromDyn

Rename `CoerceSized` to `DispatchFromDyn`, and reverse the direction so that, for example, you write

```
impl<T: Unsize<U>, U> DispatchFromDyn<*const U> for *const T {}
```

instead of

```
impl<T: Unsize<U>, U> DispatchFromDyn<*const T> for *const U {}
```

this way the trait is really just a subset of `CoerceUnsized`.

The checks in object_safety.rs are updated for the new trait, and some documentation and method names in there are updated for the new trait name — e.g. `receiver_is_coercible` is now called `receiver_is_dispatchable`. Since the trait now works in the opposite direction, some code had to updated here for that too.

I did not update the error messages for invalid `CoerceSized` (now `DispatchFromDyn`) implementations, except to find/replace `CoerceSized` with `DispatchFromDyn`. Will ask for suggestions in the PR thread.

5 years agofix docs on trait
Michael Hewson [Fri, 21 Sep 2018 06:16:29 +0000 (02:16 -0400)]
fix docs on  trait
tests were failing because I didn't wrap code snippets like  in backticks. fixed that now, so hopefully tests will pass on travis

5 years agoAdd new tests and update existing for object-safe custom receivers
Michael Hewson [Thu, 20 Sep 2018 07:28:57 +0000 (03:28 -0400)]
Add new tests and update existing for object-safe custom receivers

5 years agoupdate tests that have changed output
Michael Hewson [Thu, 20 Sep 2018 07:21:29 +0000 (03:21 -0400)]
update tests that have changed output

 I’m not sure why these tests have different output now, but they do.
In all cases, the error message that is missing looks like this: “the
trait bound `dyn Trait: Trait` is not satisfied”

My guess is that the error message is going away because object-safety
now involves trait solving, and these extra error messages are no
longer leaking out.

5 years agoAdd CoerceSized impls throughout libstd
Michael Hewson [Thu, 20 Sep 2018 07:18:00 +0000 (03:18 -0400)]
Add CoerceSized impls throughout libstd

This will make receiver types like `Rc<Self>` and `Pin<&mut Self>`
object-safe.

5 years agoImplement object-safety for arbitrary_self_types: part 2
Michael Hewson [Thu, 20 Sep 2018 07:16:10 +0000 (03:16 -0400)]
Implement object-safety for arbitrary_self_types: part 2

For now, all of the receivers that we care about are just a newtyped
pointer — i.e. `Box<Self>`, `Rc<Self>`, `Pin<Box<Self>>`, `Pin<&mut
Self>`. This is much simpler to implement in codeine than the more
general case, because the ABI is the same as a pointer. So we add some
checks in typeck/coherence/builtin.rs to make sure that implementors of
CoerceSized are just newtyped pointers. In this commit, we also
implement the codegen bits.

5 years agoImplement the object-safety checks for arbitrary_self_types: part 1
Michael Hewson [Thu, 20 Sep 2018 07:12:00 +0000 (03:12 -0400)]
Implement the object-safety checks for arbitrary_self_types: part 1

For a trait method to be considered object-safe, the receiver type must
satisfy certain properties: first, we need to be able to get the vtable
to so we can look up the method, and second, we need to convert the
receiver from the version where `Self=dyn Trait`, to the version where
`Self=T`, `T` being some unknown, `Sized` type that implements `Trait`.

To check that the receiver satisfies those properties, we use the
following query:

forall (U) {
if (Self: Unsize<U>) {
Receiver[Self => U]: CoerceSized<Receiver>
}
}

where `Receiver` is the receiver type of the method (e.g. `Rc<Self>`),
and `Receiver[Self => U]` is the receiver type where `Self = U`, e.g.
`Rc<U>`.

forall queries like this aren’t implemented in the trait system yet, so
for now we are using a bit of a hack — see the code for explanation.

5 years agoAdd CoerceSized trait and lang item
Michael Hewson [Thu, 20 Sep 2018 07:04:08 +0000 (03:04 -0400)]
Add CoerceSized trait and lang item

This trait is more-or-less the reverse of CoerceUnsized, and will be
used for object-safety checks. Receiver types like `Rc` will have to
implement `CoerceSized` so that methods that use `Rc<Self>` as the
receiver will be considered object-safe.

5 years agomove some code around to avoid query cycles
Michael Hewson [Thu, 20 Sep 2018 06:56:10 +0000 (02:56 -0400)]
move some code around to avoid query cycles

5 years agoMake all object-safety methods require a global TyCtxt
Michael Hewson [Mon, 2 Jul 2018 22:30:59 +0000 (18:30 -0400)]
Make all object-safety methods require a global TyCtxt

5 years agoUpdate clippy
Manish Goregaokar [Thu, 1 Nov 2018 20:58:07 +0000 (13:58 -0700)]
Update clippy

5 years agoAuto merge of #55579 - pietroalbini:rollup, r=kennytm
bors [Thu, 1 Nov 2018 16:06:15 +0000 (16:06 +0000)]
Auto merge of #55579 - pietroalbini:rollup, r=kennytm

Rollup of 13 pull requests

Successful merges:

 - #55280 (Add libproc_macro to rust-src distribution)
 - #55469 (Regression tests for issue #54477.)
 - #55504 (Use vec![x; n] instead of iter::repeat(x).take(n).collect())
 - #55522 (use String::from() instead of format!() macro to construct Strings.)
 - #55536 (Pass suggestions as impl Iterator instead of Vec)
 - #55542 (syntax: improve a few allocations)
 - #55558 (Tweak `MatcherPos::matches`)
 - #55561 (Fix double_check tests on big-endian targets)
 - #55573 (Make sure the `aws` executable is in $PATH on macOS)
 - #55574 (Use `SmallVec` within `MoveData`.)
 - #55575 (Fix invalid_const_promotion test on some archs)
 - #55578 (Made doc example of `impl Default for …` use `-> Self` instead of explicit self type)
 - #55582 (Remove unused import copy from publish_toolstate.py)

5 years agoRollup merge of #55578 - regexident:fix/self, r=frewsxcv
kennytm [Thu, 1 Nov 2018 14:56:36 +0000 (22:56 +0800)]
Rollup merge of #55578 - regexident:fix/self, r=frewsxcv

Made doc example of `impl Default for …` use `-> Self` instead of explicit self type

There is no need to state the explicit type of `self`.

5 years agoRollup merge of #55561 - smaeul:test-fixes, r=alexcrichton
kennytm [Thu, 1 Nov 2018 14:56:12 +0000 (22:56 +0800)]
Rollup merge of #55561 - smaeul:test-fixes, r=alexcrichton

Fix double_check tests on big-endian targets

Since the enums get optimized down to 1 byte long, the bits set in the `usize` member don't align with the `enum` values on big-endian machines. Avoid this issue by shrinking the integer member to the
same size as the enums.

5 years agoRollup merge of #55582 - yamaguchi1024:publish_toolstate, r=alexcrichton
kennytm [Thu, 1 Nov 2018 14:55:49 +0000 (22:55 +0800)]
Rollup merge of #55582 - yamaguchi1024:publish_toolstate, r=alexcrichton

Remove unused import copy from publish_toolstate.py

5 years agoRollup merge of #55573 - kennytm:macos-aws, r=alexcrichton
kennytm [Thu, 1 Nov 2018 14:54:16 +0000 (22:54 +0800)]
Rollup merge of #55573 - kennytm:macos-aws, r=alexcrichton

Make sure the `aws` executable is in $PATH on macOS

Fixes #55571

5 years agoRollup merge of #55575 - parched:trap, r=RalfJung
Pietro Albini [Thu, 1 Nov 2018 10:55:32 +0000 (11:55 +0100)]
Rollup merge of #55575 - parched:trap, r=RalfJung

Fix invalid_const_promotion test on some archs

On at least AArch64 `llvm.trap` raises SIGTRAP.

r? @RalfJung

5 years agoRollup merge of #55574 - nnethercote:gather_move-SmallVec, r=michaelwoerister
Pietro Albini [Thu, 1 Nov 2018 10:55:30 +0000 (11:55 +0100)]
Rollup merge of #55574 - nnethercote:gather_move-SmallVec, r=michaelwoerister

Use `SmallVec` within `MoveData`.

This reduces allocation counts significantly in a few benchmarks, reducing instruction counts by up to 2%.

5 years agoRollup merge of #55558 - nnethercote:tweak-MatcherPos-matches, r=petrochenkov
Pietro Albini [Thu, 1 Nov 2018 10:55:29 +0000 (11:55 +0100)]
Rollup merge of #55558 - nnethercote:tweak-MatcherPos-matches, r=petrochenkov

Tweak `MatcherPos::matches`

These changes reduce instruction counts on `sentry-cli-check` incremental builds by up to 2%.

5 years agoRollup merge of #55542 - ljedrz:syntax_alloc_improvements, r=kennytm
Pietro Albini [Thu, 1 Nov 2018 10:55:28 +0000 (11:55 +0100)]
Rollup merge of #55542 - ljedrz:syntax_alloc_improvements, r=kennytm

syntax: improve a few allocations

Add 2 `reserve`s and a `with_capacity` where the final vector size is known.

5 years agoRollup merge of #55536 - ljedrz:don't_collect_suggestions, r=davidtwco
Pietro Albini [Thu, 1 Nov 2018 10:55:26 +0000 (11:55 +0100)]
Rollup merge of #55536 - ljedrz:don't_collect_suggestions, r=davidtwco

Pass suggestions as impl Iterator instead of Vec

This avoids some allocations when throwing errors, making failing faster ^^.

5 years agoRollup merge of #55522 - matthiaskrgr:no_format, r=zackmdavis
Pietro Albini [Thu, 1 Nov 2018 10:55:25 +0000 (11:55 +0100)]
Rollup merge of #55522 - matthiaskrgr:no_format, r=zackmdavis

use String::from() instead of format!() macro to construct Strings.

5 years agoRemove unused import copy from publish_toolstate.py
Yuka Takahashi [Thu, 1 Nov 2018 13:52:00 +0000 (14:52 +0100)]
Remove unused import copy from publish_toolstate.py

5 years agoFixes #46775 -- don't mutate the process's environment in Command::exec
Alex Gaynor [Thu, 25 Oct 2018 19:44:32 +0000 (19:44 +0000)]
Fixes #46775 -- don't mutate the process's environment in Command::exec

Instead, pass the environment to execvpe, so the kernel can apply it directly to the new process. This avoids a use-after-free in the case where exec'ing the new process fails for any reason, as well as a race condition if there are other threads alive during the exec.

5 years agoRollup merge of #55504 - ljedrz:simpler_repeated_elements, r=oli-obk
Pietro Albini [Thu, 1 Nov 2018 10:55:22 +0000 (11:55 +0100)]
Rollup merge of #55504 - ljedrz:simpler_repeated_elements, r=oli-obk

Use vec![x; n] instead of iter::repeat(x).take(n).collect()

It's shorter and possibly easier to optimize.

5 years agoRollup merge of #55469 - pnkfelix:issue-54477-regression-tests, r=nikomatsakis
Pietro Albini [Thu, 1 Nov 2018 10:55:20 +0000 (11:55 +0100)]
Rollup merge of #55469 - pnkfelix:issue-54477-regression-tests, r=nikomatsakis

Regression tests for issue #54477.

At some point someone may want to revisit PR #53564

it would be really good to have regression tests for #54477 before that happens. :)

5 years agoRollup merge of #55280 - vlad20012:add-libproc_macro-to-src-disrt, r=Mark-Simulacrum
Pietro Albini [Thu, 1 Nov 2018 10:55:19 +0000 (11:55 +0100)]
Rollup merge of #55280 - vlad20012:add-libproc_macro-to-src-disrt, r=Mark-Simulacrum

Add libproc_macro to rust-src distribution

Fixes #55279

5 years agoMade doc example of `impl Default for …` use `-> Self` instead of explicit self type
Vincent Esche [Thu, 1 Nov 2018 10:52:44 +0000 (11:52 +0100)]
Made doc example of `impl Default for …` use `-> Self` instead of explicit self type

5 years agoUse `SmallVec` within `MoveData`.
Nicholas Nethercote [Thu, 1 Nov 2018 04:34:36 +0000 (15:34 +1100)]
Use `SmallVec` within `MoveData`.

This reduces allocation counts significantly in a few benchmarks,
reducing instruction counts by up to 2%.

5 years agoMake sure the installed `awscli` is found on macOS.
kennytm [Thu, 1 Nov 2018 07:30:30 +0000 (15:30 +0800)]
Make sure the installed `awscli` is found on macOS.

5 years agoAuto merge of #55548 - alexcrichton:bump, r=Mark-Simulacrum
bors [Thu, 1 Nov 2018 06:26:28 +0000 (06:26 +0000)]
Auto merge of #55548 - alexcrichton:bump, r=Mark-Simulacrum

Bump nightly to 1.32.0

* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations

5 years agoAuto merge of #55521 - nrc:rls-fix, r=petrochenkov
bors [Thu, 1 Nov 2018 02:41:00 +0000 (02:41 +0000)]
Auto merge of #55521 - nrc:rls-fix, r=petrochenkov

save-analysis: bug fix and optimisation.

The first commit fixes a bug in name resolution and save-analysis (introduced in #54145) and removes an unused parameter. This fixes the RLS tests, which are currently blocking distribution of the RLS. The second commit removes macro uses from save-analysis data, since these are never used, they just take up space.

r? @petrochenkov

5 years agoFix double_check tests on big-endian targets
Samuel Holland [Sun, 16 Sep 2018 18:27:56 +0000 (18:27 +0000)]
Fix double_check tests on big-endian targets

Since the enums get optimized down to 1 byte long, the bits
set in the usize member don't align with the enums on big-endian
machines. Avoid this issue by shrinking the integer member to the
same size as the enums.

5 years agoFix invalid_const_promotion test on some archs
James Duley [Wed, 31 Oct 2018 22:59:53 +0000 (22:59 +0000)]
Fix invalid_const_promotion test on some archs

On at least AArch64 `llvm.trap` raises SIGTRAP.

5 years agoUse `SmallVec` for the inner vectors in `MatcherPos::matches`.
Nicholas Nethercote [Wed, 31 Oct 2018 21:41:57 +0000 (08:41 +1100)]
Use `SmallVec` for the inner vectors in `MatcherPos::matches`.

This avoids some allocations.

5 years agoShare empty `Vec`s more within `MatcherPos::matches`.
Nicholas Nethercote [Wed, 31 Oct 2018 18:35:20 +0000 (05:35 +1100)]
Share empty `Vec`s more within `MatcherPos::matches`.

`create_matches` creates a `Vec<Rc<Vec<NamedMatch>>>`. Even though all the
inner `Vec`s are empty, each one is created separately.

This commit changes `create_matches` so it instead creates one empty inner
`Vec`, and shares it.

The commit also changes `MatcherPos::matches` to a boxed slice, because its
length doesn't change.

5 years agoA couple suggested edits
Jonathan Behrens [Wed, 31 Oct 2018 19:15:20 +0000 (15:15 -0400)]
A couple suggested edits

5 years agoBump nightly to 1.32.0
Alex Crichton [Wed, 31 Oct 2018 18:53:17 +0000 (11:53 -0700)]
Bump nightly to 1.32.0

* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations

5 years agokill old-style-lub warnings
Niko Matsakis [Mon, 15 Oct 2018 15:55:20 +0000 (11:55 -0400)]
kill old-style-lub warnings

5 years agofix bug in NLL error reporting
Niko Matsakis [Wed, 31 Oct 2018 16:10:49 +0000 (12:10 -0400)]
fix bug in NLL error reporting

Account for incompatible universes and higher-ranked subtyping.

5 years agosyntax: improve a few allocations
ljedrz [Wed, 31 Oct 2018 15:58:51 +0000 (16:58 +0100)]
syntax: improve a few allocations

5 years agobootstrap: bump cargo-vendor version to 0.1.19
Pietro Albini [Thu, 25 Oct 2018 21:32:10 +0000 (23:32 +0200)]
bootstrap: bump cargo-vendor version to 0.1.19

5 years agoAuto merge of #54806 - parched:park, r=RalfJung
bors [Wed, 31 Oct 2018 13:52:00 +0000 (13:52 +0000)]
Auto merge of #54806 - parched:park, r=RalfJung

thread::unpark: Avoid notifying with mutex locked.

This means when the other thread wakes it can continue right away
instead of having to wait for the mutex.

Also add some comments explaining why the mutex needs to be locked in
the first place.

This is a follow up to https://github.com/rust-lang/rust/pull/54174
I did some tests with relacy [here](https://gist.github.com/parched/b7fb88c97755a81e5cb9f9048a15f7fb) (This PR is InnerV2). If anyone can think of some other test case worth adding let me know.

r? @RalfJung

5 years agoPass suggestions as impl Iterator instead of Vec
ljedrz [Mon, 15 Oct 2018 11:16:05 +0000 (13:16 +0200)]
Pass suggestions as impl Iterator instead of Vec

5 years agoswitch to LLVM 7.0 as the host compiler
Nathan Froyd [Tue, 30 Oct 2018 20:54:34 +0000 (16:54 -0400)]
switch to LLVM 7.0 as the host compiler

This version ought to work better with MSVC 15.9 preview headers.

5 years agoadd an appveyor config for aarch64-pc-windows-msvc
Nathan Froyd [Mon, 1 Oct 2018 14:20:12 +0000 (10:20 -0400)]
add an appveyor config for aarch64-pc-windows-msvc

Fixes #53864.

5 years agoAuto merge of #55304 - alexcrichton:update-credentials, r=kennytm
bors [Wed, 31 Oct 2018 06:42:24 +0000 (06:42 +0000)]
Auto merge of #55304 - alexcrichton:update-credentials, r=kennytm

ci: Move global credentials to web configuration

This commit moves a number of our encrypted credentials stored in
configuration files in this repository to env vars on the web UI. This
will hopefully make it easier to rotate credentials in the future as
well as quickly change them if the need arises. (quicker than landing a
PR that is).

This also updates the travis deployment process to always use the `aws`
command line tool which we're already installing on Linux and should
enable us to avoid all `dpl` gem issues as well as have greater control
over what's going where.

5 years agosave analysis: don't dump macro refs
Nick Cameron [Tue, 30 Oct 2018 22:56:11 +0000 (11:56 +1300)]
save analysis: don't dump macro refs

5 years agoAuto merge of #54004 - tromey:enum-debuginfo, r=tromey
bors [Tue, 30 Oct 2018 23:36:10 +0000 (23:36 +0000)]
Auto merge of #54004 - tromey:enum-debuginfo, r=tromey

Fix DWARF generation for enums

The DWARF generated for Rust enums was always somewhat unusual.
Rather than using DWARF constructs directly, it would emit magic field
names like "RUST$ENCODED$ENUM$0$Name" and "RUST$ENUM$DISR".  Since
PR #45225, though, even this has not worked -- the ad hoc scheme was
not updated to handle the wider variety of niche-filling layout
optimizations now available.

This patch changes the generated DWARF to use the standard tags meant
for this purpose; namely, DW_TAG_variant and DW_TAG_variant_part.

The patch to implement this went in to LLVM 7.  In order to work with
older versions of LLVM, and because LLVM doesn't do anything here for
PDB, the existing code is kept as a fallback mode.

Support for this DWARF is in the Rust lldb and in gdb 8.2.

Closes #32920
Closes #32924
Closes #52762
Closes #53153

5 years agouse String::from() instead of format!() macro to construct Strings.
Matthias Krüger [Tue, 30 Oct 2018 23:10:10 +0000 (00:10 +0100)]
use String::from() instead of format!() macro to construct Strings.

5 years agothread::unpark: Avoid notifying with mutex locked.
James Duley [Fri, 21 Sep 2018 14:13:39 +0000 (14:13 +0000)]
thread::unpark: Avoid notifying with mutex locked.

This means when the other thread wakes it can continue right away
instead of having to wait for the mutex.

Also add some comments explaining why the mutex needs to be locked in
the first place.

5 years agosave-analysis: make sure we save the def for the last segment of a path
Nick Cameron [Tue, 30 Oct 2018 22:05:58 +0000 (11:05 +1300)]
save-analysis: make sure we save the def for the last segment of a path

5 years agoAdd a test for multiple cases of E0669
Levente Kurusa [Tue, 30 Oct 2018 21:09:56 +0000 (22:09 +0100)]
Add a test for multiple cases of E0669

Signed-off-by: Levente Kurusa <lkurusa@acm.org>
5 years agoAuto merge of #55303 - alexcrichton:update-libm, r=kennytm
bors [Tue, 30 Oct 2018 20:43:36 +0000 (20:43 +0000)]
Auto merge of #55303 - alexcrichton:update-libm, r=kennytm

Update compiler-builtins submodule

This commit updates our `compiler-builtins` submodule which brings in at
least a few improvements for intrinsics on wasm32

5 years agoUpdate lldb
Tom Tromey [Tue, 2 Oct 2018 16:13:30 +0000 (10:13 -0600)]
Update lldb

Update src/tools/lldb to pick up a needed bug fix in the
DW_TAG_variant_part handling.

5 years agoAdd legacy debuginfo tests
Tom Tromey [Thu, 27 Sep 2018 16:17:00 +0000 (10:17 -0600)]
Add legacy debuginfo tests

The enum debuginfo patch includes a legacy mode that is used when
building against LLVM 5 and LLVM 6.  The main enum debuginfo tests
have been updated to rely on the new approach and a new-enough gdb.
This patch makes a copy of these tests so that the fallback mode will
continue to be tested.

Note that nil-enum.rs is not copied; it seemed not to provide enough
value to bother.

A new header directive is added, "ignore-llvm-version".  I will send a
patch to update the rustc documentation once this lands.

5 years agoUpdate enum debuginfo tests
Tom Tromey [Wed, 26 Sep 2018 18:58:10 +0000 (12:58 -0600)]
Update enum debuginfo tests

Bug #52452 notes some debuginfo test regressions when moving to gdb
8.1.  This series will also cause versions of gdb before 8.2 to fail
when a recent LLVM is used -- DW_TAG_variant_part support was not
added until 8.2.

This patch updates one of the builders to a later version of Ubuntu,
which comes with gdb 8.2.  It updates the relevant tests to require
both a new-enough LLVM and a new-enough gdb; the subsequent patch
arranges to continue testing the fallback mode.

The "gdbg" results are removed from these tests because the tests now
require a rust-enabled gdb.

If you read closely, you'll see that some of the lldb results in this
patch still look a bit strange.  This will be addressed in a
subsequent patch; I believe the fix is to disable the Python
pretty-printers when lldb is rust-enabled.

5 years agoAvoid possible integer overflow in niche value computation
Tom Tromey [Thu, 13 Sep 2018 12:51:17 +0000 (06:51 -0600)]
Avoid possible integer overflow in niche value computation

@eddyb pointed out in review that the niche value computation had a
possible integer overflow problem, fixed here as he suggested.

5 years agoAdd more enum debug info tests
Tom Tromey [Fri, 7 Sep 2018 16:08:59 +0000 (10:08 -0600)]
Add more enum debug info tests

Rename the previous enum debug info test, and add more tests to cover
c-like enums and tagged (ordinary) enums.

5 years agoTighten enum-debug test
Tom Tromey [Fri, 7 Sep 2018 15:42:02 +0000 (09:42 -0600)]
Tighten enum-debug test

Update the new enum-debug to ensure that field "D" does not have a
discrimnant.

5 years agoAddress review comments
Tom Tromey [Fri, 7 Sep 2018 15:29:40 +0000 (09:29 -0600)]
Address review comments

This fixes the issues pointed out in review.

5 years agoFix DWARF generation for enums
Tom Tromey [Wed, 29 Nov 2017 21:42:25 +0000 (14:42 -0700)]
Fix DWARF generation for enums

The DWARF generated for Rust enums was always somewhat unusual.
Rather than using DWARF constructs directly, it would emit magic field
names like "RUST$ENCODED$ENUM$0$Name" and "RUST$ENUM$DISR".  Since
PR #45225, though, even this has not worked -- the ad hoc scheme was
not updated to handle the wider variety of niche-filling layout
optimizations now available.

This patch changes the generated DWARF to use the standard tags meant
for this purpose; namely, DW_TAG_variant and DW_TAG_variant_part.

The patch to implement this went in to LLVM 7.  In order to work with
older versions of LLVM, and because LLVM doesn't do anything here for
PDB, the existing code is kept as a fallback mode.

Support for this DWARF is in the Rust lldb and in gdb 8.2.

Closes #32920
Closes #32924
Closes #52762
Closes #53153

5 years agoUpdate compiler-builtins submodule
Alex Crichton [Wed, 24 Oct 2018 08:09:49 +0000 (01:09 -0700)]
Update compiler-builtins submodule

This commit updates our `compiler-builtins` submodule which brings in at
least a few improvements for intrinsics on wasm32

5 years agoUse vec![x; n] instead of iter::repeat(x).take(n).collect()
ljedrz [Tue, 30 Oct 2018 13:37:26 +0000 (14:37 +0100)]
Use vec![x; n] instead of iter::repeat(x).take(n).collect()

5 years agoAuto merge of #55502 - kennytm:rollup, r=kennytm
bors [Tue, 30 Oct 2018 11:38:31 +0000 (11:38 +0000)]
Auto merge of #55502 - kennytm:rollup, r=kennytm

Rollup of 12 pull requests

Successful merges:

 - #54885 (Don't lint 'unused_parens` on `if (break _) { .. }`)
 - #55205 (Improve a few cases of collecting to an FxHash(Map/Set))
 - #55450 (msp430: remove the whole Atomic* API)
 - #55459 (Add UI test for #49296)
 - #55472 (Use opt.take() instead of mem::replace(opt, None))
 - #55473 (Take advantage of impl Iterator in (transitive/elaborate)_bounds)
 - #55474 (Fix validation false positive)
 - #55476 (Change a flat_map with 0/1-element vecs to a filter_map)
 - #55487 (Adjust Ids of path segments in visibility modifiers)
 - #55493 (Doc fixes)
 - #55494 (borrowck=migrate must look at parents of closures)
 - #55496 (Update clippy)

Failed merges:

r? @ghost

5 years agoRollup merge of #55496 - Manishearth:clippyup, r=oli-obk
kennytm [Tue, 30 Oct 2018 10:55:38 +0000 (18:55 +0800)]
Rollup merge of #55496 - Manishearth:clippyup, r=oli-obk

Update clippy

Pulls in https://github.com/rust-lang-nursery/rust-clippy/pull/3382, should unbreak clippy

r? @oli-obk @phansch

5 years agoRollup merge of #55494 - pnkfelix:issue-55492-borrowck-migrate-must-look-at-parents...
kennytm [Tue, 30 Oct 2018 10:55:37 +0000 (18:55 +0800)]
Rollup merge of #55494 - pnkfelix:issue-55492-borrowck-migrate-must-look-at-parents-of-closures, r=davidtwco

borrowck=migrate must look at parents of closures

This fixes the NLL migration mode (which is the default with edition=2018) to inspect all parents of a closure in addition to the closure itself when looking to see if AST-borrowck issues an error for the given code.

This should be a candidate for beta backport.

Fix #55492

5 years agoRollup merge of #55493 - GuillaumeGomez:doc-fixes, r=@QuietMisdreavus
kennytm [Tue, 30 Oct 2018 10:55:35 +0000 (18:55 +0800)]
Rollup merge of #55493 - GuillaumeGomez:doc-fixes, r=@QuietMisdreavus

Doc fixes

Fixes the bug in source code page where code was below line numbers and fixed this bug too ("Expand description" is shown whereas it shouldn't):

<img width="1440" alt="screenshot 2018-10-29 at 23 11 29" src="https://user-images.githubusercontent.com/3050060/47684136-1105ad80-dbd2-11e8-9e9f-fb7f26b0f5bd.png">

r? @QuietMisdreavus

5 years agoRollup merge of #55487 - nrc:path-fix, r=petrochenkov
kennytm [Tue, 30 Oct 2018 10:55:34 +0000 (18:55 +0800)]
Rollup merge of #55487 - nrc:path-fix, r=petrochenkov

Adjust Ids of path segments in visibility modifiers

Fixes #55376 (nightly regression)

r? @petrochenkov

5 years agoRollup merge of #55476 - ljedrz:flat_map_to_filter_map, r=cramertj
kennytm [Tue, 30 Oct 2018 10:55:33 +0000 (18:55 +0800)]
Rollup merge of #55476 - ljedrz:flat_map_to_filter_map, r=cramertj

Change a flat_map with 0/1-element vecs to a filter_map

No need to use vectors in this case - `Option`s are quite sufficient.

5 years agoRollup merge of #55474 - oli-obk:const_eval_promoted, r=RalfJung
kennytm [Tue, 30 Oct 2018 10:55:32 +0000 (18:55 +0800)]
Rollup merge of #55474 - oli-obk:const_eval_promoted, r=RalfJung

Fix validation false positive

Fixes #55454

r? @RalfJung

5 years agoRollup merge of #55473 - ljedrz:transitive/elaborate_bounds_impl_iterator, r=estebank
kennytm [Tue, 30 Oct 2018 10:55:30 +0000 (18:55 +0800)]
Rollup merge of #55473 - ljedrz:transitive/elaborate_bounds_impl_iterator, r=estebank

Take advantage of impl Iterator in (transitive/elaborate)_bounds

Other than for `debug!`ging purposes, `bounds` are only iterated over, so they don't need to be collected into vectors.

5 years agoRollup merge of #55472 - ljedrz:use_option_take, r=cramertj
kennytm [Tue, 30 Oct 2018 10:55:29 +0000 (18:55 +0800)]
Rollup merge of #55472 - ljedrz:use_option_take, r=cramertj

Use opt.take() instead of mem::replace(opt, None)

It's easier to read.

5 years agoRollup merge of #55459 - memoryruins:issue-49296, r=oli-obk
kennytm [Tue, 30 Oct 2018 10:55:28 +0000 (18:55 +0800)]
Rollup merge of #55459 - memoryruins:issue-49296, r=oli-obk

Add UI test for #49296

Closes #49296

r? @oli-obk