]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agotypeck: Save the index of private fields
Dan Robertson [Sat, 12 May 2018 19:04:44 +0000 (19:04 +0000)]
typeck: Save the index of private fields

Save the index of all fields regardless of their visibility. Problems
could occur later when attempting to index fields in error recovery if
they are not inserted.

6 years agoAuto merge of #50352 - porglezomp:btree-no-empty-alloc, r=Gankro
bors [Sat, 12 May 2018 09:42:11 +0000 (09:42 +0000)]
Auto merge of #50352 - porglezomp:btree-no-empty-alloc, r=Gankro

Don't allocate when creating an empty BTree

Following the discussion in #50266, this adds a static instance of `LeafNode` that empty BTrees point to, and then replaces it on `insert`, `append`, and `entry`. This avoids allocating for empty maps.

Fixes #50266

r? @Gankro

6 years agoAuto merge of #50476 - zackmdavis:tame_unreachable_pub_suggestion, r=Manishearth
bors [Sat, 12 May 2018 05:42:10 +0000 (05:42 +0000)]
Auto merge of #50476 - zackmdavis:tame_unreachable_pub_suggestion, r=Manishearth

don't make crazy suggestion for unreachable braced pub-use

The Higher Intermediate Representation doesn't have spans for visibility
keywords, so we were assuming that the first whitespace-delimited token
in the item span was the `pub` to be weakened. This doesn't work for
brace-grouped `use`s, which get lowered as if they were several
individual `use` statements, but with spans that only cover the braced
path-segments. Constructing a correct suggestion here presents some
challenges—until someone works those out, we can at least protect the
dignity of our compiler by not offering any suggestion at all for `use` items.

This resolves #50455 (but again, it would be desirable in the future to
make a correct suggestion instead of copping out like this).

r? @Manishearth

6 years agoAuto merge of #50249 - Zoxc:allocation-const, r=oli-obk
bors [Sat, 12 May 2018 01:48:11 +0000 (01:48 +0000)]
Auto merge of #50249 - Zoxc:allocation-const, r=oli-obk

Introduce ConstValue and use it instead of miri's Value for constant values

r? @oli-obk

6 years agoAuto merge of #50161 - rizakrko:impl_note, r=estebank
bors [Fri, 11 May 2018 23:06:27 +0000 (23:06 +0000)]
Auto merge of #50161 - rizakrko:impl_note, r=estebank

added missing implementation hint

Fixes [#50151](https://github.com/rust-lang/rust/issues/50151).
Actually, i don't know, should following code
`let x = |ref x: isize| { x += 1; };`
emit
`note: an implementation of std::ops::AddAssign might be missing for &isize`
or
`note: this is a reference to a type that + can be applied to; you need to dereference this variable once for this operation to work`
or both

6 years agoAuto merge of #50105 - mixi:crt-included, r=alexcrichton
bors [Fri, 11 May 2018 19:46:16 +0000 (19:46 +0000)]
Auto merge of #50105 - mixi:crt-included, r=alexcrichton

Use the correct crt*.o files when linking musl targets.

This is supposed to support optionally using the system copy of musl
libc instead of the included one if supported. This currently only
affects the start files, which is enough to allow building rustc on musl
targets.

Most of the changes are analogous to crt-static.

Excluding the start files is something musl based distributions usually patch into their copy of rustc:
  - https://github.com/alpinelinux/aports/blob/eb064c8/community/rust/musl-fix-linux_musl_base.patch
  - https://github.com/voidlinux/void-packages/blob/77400fc/srcpkgs/rust/patches/link-musl-dynamically.patch

For third-party distributions that not yet carry those patches it would be nice if it was supported without the need to patch upstream sources.

## Reasons
### What breaks?
Some start files were missed when originally writing the logic to swap in musl start files (gcc comes with its own start files, which are suppressed by -nostdlib, but not manually included later on). This caused #36710, which also affects rustc with the internal llvm copy or any other system libraries that need crtbegin/crtend.

### How is it fixed?
The system linker already has all the logic to decide which start files to include, so we can just defer to it (except of course if it doesn't target musl).

### Why is it optional?
In #40113 it was first tried to remove the start files, which broke compiling musl-targeting static binaries with a glibc-targeting compiler. This is why it eventually landed without removing the start files. Being an option side-steps the issue.

### Why are the start files still installed?
This has the nice side-effect, that the produced rust-std-* binaries can still be used by on a glibc-targeting system with a rustc built against glibc.

## Does it work?
With the following build script (using [musl-cross-make](https://github.com/richfelker/musl-cross-make)): https://shadowice.org/~mixi/rust-musl/build.sh, I was able to cross-compile a musl-host musl-targeting rustc on a glibc-based system. The resulting binaries are at https://shadowice.org/~mixi/rust-musl/binaries/. This also requires #50103 and #50104 (which are also applied to the branch the build script uses).

6 years agoAuto merge of #50650 - oli-obk:clippy, r=Manishearth
bors [Fri, 11 May 2018 15:40:35 +0000 (15:40 +0000)]
Auto merge of #50650 - oli-obk:clippy, r=Manishearth

Update the clippy and miri submodules

r? @Manishearth

6 years agoAuto merge of #50332 - Zoxc:interner-split, r=michaelwoerister
bors [Fri, 11 May 2018 13:26:13 +0000 (13:26 +0000)]
Auto merge of #50332 - Zoxc:interner-split, r=michaelwoerister

Only lookup types in one interner

6 years agoresolved merge conflict
Roman Stoliar [Fri, 11 May 2018 12:14:23 +0000 (15:14 +0300)]
resolved merge conflict

6 years agofixed double ref hint
Roman Stoliar [Wed, 9 May 2018 09:38:09 +0000 (12:38 +0300)]
fixed double ref hint

6 years ago[wip] fixed some error, added missing test
Roman Stoliar [Wed, 9 May 2018 07:47:09 +0000 (10:47 +0300)]
[wip] fixed some error, added missing test

6 years agounary op filter, dereference hint
Roman Stoliar [Tue, 8 May 2018 19:20:41 +0000 (22:20 +0300)]
unary op filter, dereference hint

6 years agoadded missing implementation hint
Roman Stoliar [Sun, 22 Apr 2018 17:35:21 +0000 (20:35 +0300)]
added missing implementation hint

6 years agoUpdate the clippy and miri submodules
Oliver Schneider [Fri, 11 May 2018 12:11:06 +0000 (14:11 +0200)]
Update the clippy and miri submodules

6 years agoAdd a query to convert from ConstValue to Allocation
John Kåre Alsaker [Thu, 3 May 2018 16:29:14 +0000 (18:29 +0200)]
Add a query to convert from ConstValue to Allocation

6 years agoIntroduce ConstValue and use it instead of miri's Value for constant values
John Kåre Alsaker [Thu, 26 Apr 2018 07:18:19 +0000 (09:18 +0200)]
Introduce ConstValue and use it instead of miri's Value for constant values

6 years agoAuto merge of #50620 - alexcrichton:change-names-again, r=nikomatsakis
bors [Fri, 11 May 2018 07:28:51 +0000 (07:28 +0000)]
Auto merge of #50620 - alexcrichton:change-names-again, r=nikomatsakis

Rename the 2018 edition lint names

* `rust_2018_breakage` -> `rust_2018_compatibility` - the lint for ensuring
  that your code, in the 2015 edition, is compatible with the 2018 edition's
  semantics. This is required to pass *before* you enable the 2018 edition.
* `rust_2018_migration` -> `rust_2018_idioms` - the lint for writing idiomatic
  code after you've already enabled the 2018 edition

6 years agocompiletest: escape CXX the same way as CC for MSVC
Johannes Nixdorf [Thu, 10 May 2018 08:58:51 +0000 (10:58 +0200)]
compiletest: escape CXX the same way as CC for MSVC

6 years agoAdd a test for issue 36710.
Johannes Nixdorf [Wed, 2 May 2018 08:26:00 +0000 (10:26 +0200)]
Add a test for issue 36710.

6 years agoAuto merge of #50609 - alexcrichton:no-nll-preview, r=nikomatsakis
bors [Fri, 11 May 2018 04:45:25 +0000 (04:45 +0000)]
Auto merge of #50609 - alexcrichton:no-nll-preview, r=nikomatsakis

Remove `nll` from `rust_2018_preview`

NLL isn't quite ready yet so gonna hold off on inserting it into the preview.

6 years agodon't make crazy suggestion for unreachable braced pub-use
Zack M. Davis [Sun, 6 May 2018 05:14:33 +0000 (22:14 -0700)]
don't make crazy suggestion for unreachable braced pub-use

The Higher Intermediate Representation doesn't have spans for visibility
keywords, so we were assuming that the first whitespace-delimited token
in the item span was the `pub` to be weakened. This doesn't work for
brace-grouped `use`s, which get lowered as if they were several
individual `use` statements, but with spans that only cover the braced
path-segments. Constructing a correct suggestion here presents some
challenges—until someone works those out, we can at least protect the
dignity of our compiler marking the suggestion for `use` items as
potentially incorrect.

This resolves #50455 (but again, it would be desirable in the future to
make a correct suggestion instead of copping out like this).

6 years agoAuto merge of #50440 - nikomatsakis:single-use-lifetimes, r=cramertj
bors [Fri, 11 May 2018 02:14:25 +0000 (02:14 +0000)]
Auto merge of #50440 - nikomatsakis:single-use-lifetimes, r=cramertj

Improve single-use and zero-use lifetime lints

The code now correctly identifies *when* to lint -- or more correctly, anyhow -- but it doesn't yet offer suggestions for how to fix.

(I just remembered when writing this I had meant to go back over some of these cases around e.g. impl Trait and double check that everything is right...)

cc #44752

r? @cramertj

6 years agoensure lint are issued in a stable order
Niko Matsakis [Thu, 10 May 2018 23:04:02 +0000 (19:04 -0400)]
ensure lint are issued in a stable order

6 years agoAuto merge of #50611 - alexcrichton:rollup, r=alexcrichton
bors [Thu, 10 May 2018 23:33:13 +0000 (23:33 +0000)]
Auto merge of #50611 - alexcrichton:rollup, r=alexcrichton

Rollup of 18 pull requests

Successful merges:

 - #49423 (Extend tests for RFC1598 (GAT))
 - #50010 (Give SliceIndex impls a test suite of girth befitting the implementation (and fix a UTF8 boundary check))
 - #50447 (Fix update-references for tests within subdirectories.)
 - #50514 (Pull in a wasm fix from LLVM upstream)
 - #50524 (Make DepGraph::previous_work_products immutable)
 - #50532 (Don't use Lock for heavily accessed CrateMetadata::cnum_map.)
 - #50538 ( Make CrateNum allocation more thread-safe. )
 - #50564 (Inline `Span` methods.)
 - #50565 (Use SmallVec for DepNodeIndex within dep_graph.)
 - #50569 (Allow for specifying a linker plugin for cross-language LTO)
 - #50572 (Clarify in the docs that `mul_add` is not always faster.)
 - #50574 (add fn `into_inner(self) -> (Idx, Idx)` to RangeInclusive (#49022))
 - #50575 (std: Avoid `ptr::copy` if unnecessary in `vec::Drain`)
 - #50588 (Move "See also" disambiguation links for primitive types to top)
 - #50590 (Fix tuple struct field spans)
 - #50591 (Restore RawVec::reserve* documentation)
 - #50598 (Remove unnecessary mutable borrow and resizing in DepGraph::serialize)
 - #50606 (Retry when downloading the Docker cache.)

Failed merges:

 - #50161 (added missing implementation hint)
 - #50558 (Remove all reference to DepGraph::work_products)

6 years agoSkip a memory-hungry test that OOMs
Alex Crichton [Thu, 10 May 2018 20:51:51 +0000 (13:51 -0700)]
Skip a memory-hungry test that OOMs

Attempting to fix https://travis-ci.org/rust-lang/rust/jobs/377407894 via some
selective ignoring tests

6 years agoAuto merge of #50331 - MartinHusemann:master, r=Kimundi
bors [Thu, 10 May 2018 21:02:24 +0000 (21:02 +0000)]
Auto merge of #50331 - MartinHusemann:master, r=Kimundi

Map the stack guard page with max protection on NetBSD

On NetBSD the initial mmap() protection of a mapping can not be made
less restrictive with mprotect().

So when mapping a stack guard page, use the maximum protection
we ever want to use, then mprotect() it to the permission we
want it to have initially.

Fixes #50313

6 years agoRename the 2018 edition lint names
Alex Crichton [Thu, 10 May 2018 18:28:11 +0000 (11:28 -0700)]
Rename the 2018 edition lint names

* `rust_2018_breakage` -> `rust_2018_compatibility` - the lint for ensuring
  that your code, in the 2015 edition, is compatible with the 2018 edition's
  semantics. This is required to pass *before* you enable the 2018 edition.
* `rust_2018_migration` -> `rust_2018_idioms` - the lint for writing idiomatic
  code after you've already enabled the 2018 edition

6 years agoRollup merge of #50606 - kennytm:retry-docker-cache, r=alexcrichton
Alex Crichton [Thu, 10 May 2018 16:35:38 +0000 (11:35 -0500)]
Rollup merge of #50606 - kennytm:retry-docker-cache, r=alexcrichton

Retry when downloading the Docker cache.

As a safety measure, prevent spuriously needing to rebuild the docker image in case the network was reset while downloading.

Also, adjusted the retry function to insert a sleep between retries, because retrying immediately will often just hit the same issue.

6 years agoRollup merge of #50598 - whitfin:unnecessary-mut-borrow, r=michaelwoerister
Alex Crichton [Thu, 10 May 2018 16:35:37 +0000 (11:35 -0500)]
Rollup merge of #50598 - whitfin:unnecessary-mut-borrow, r=michaelwoerister

Remove unnecessary mutable borrow and resizing in DepGraph::serialize

I might be mistaken, but I noticed this whilst in this file for something else. It appears that this mutable borrow is unnecessary and since it's locking it should be removed. The resizing looks redundant since nothing additional is added to the fingerprints in this function, so that can also be removed.

6 years agoRollup merge of #50591 - glandium:cleanup, r=dtolnay
Alex Crichton [Thu, 10 May 2018 16:35:35 +0000 (11:35 -0500)]
Rollup merge of #50591 - glandium:cleanup, r=dtolnay

Restore RawVec::reserve* documentation

When the RawVec::try_reserve* methods were added, they took the place of
the ::reserve* methods in the source file, and new ::reserve* methods
wrapping the new try_reserve* methods were created. But the
documentation didn't move along, such that:
 - reserve_* methods are barely documented.
 - try_reserve_* methods have unmodified documentation from reserve_*,
   such that their documentation indicate they are panicking/aborting.

This moves the documentation back to the right methods, with a
placeholder documentation for the try_reserve* methods.

6 years agoRollup merge of #50590 - estebank:off-by-one, r=nikomatsakis
Alex Crichton [Thu, 10 May 2018 16:35:34 +0000 (11:35 -0500)]
Rollup merge of #50590 - estebank:off-by-one, r=nikomatsakis

Fix tuple struct field spans

Fix #50578. Will have a merge conflict with #50536.

6 years agoRollup merge of #50588 - ExpHP:i-can-see-my-house-from-here, r=frewsxcv
Alex Crichton [Thu, 10 May 2018 16:35:33 +0000 (11:35 -0500)]
Rollup merge of #50588 - ExpHP:i-can-see-my-house-from-here, r=frewsxcv

Move "See also" disambiguation links for primitive types to top

Closes #50384.

<details>
<summary>Images</summary>

![rust-slice](https://user-images.githubusercontent.com/1411280/39843148-caa41c3e-53b7-11e8-8123-b57c25a4d9e0.png)

![rust-isize](https://user-images.githubusercontent.com/1411280/39843146-ca94b384-53b7-11e8-85f3-3f5e5d353a05.png)

</details>

r? @steveklabnik

6 years agoRollup merge of #50575 - alexcrichton:faster-drain-drop, r=sfackler
Alex Crichton [Thu, 10 May 2018 16:35:32 +0000 (11:35 -0500)]
Rollup merge of #50575 - alexcrichton:faster-drain-drop, r=sfackler

std: Avoid `ptr::copy` if unnecessary in `vec::Drain`

This commit is spawned out of a performance regression investigation in #50496.
In tracking down this regression it turned out that the `expand_statements`
function in the compiler was taking quite a long time. Further investigation
showed two key properties:

* The function was "fast" on glibc 2.24 and slow on glibc 2.23
* The hottest function was memmove from glibc

Combined together it looked like glibc gained an optimization to the memmove
function in 2.24. Ideally we don't want to rely on this optimization, so I
wanted to dig further to see what was happening.

The hottest part of `expand_statements` was `Drop for Drain` in the call to
`splice` where we insert new statements into the original vector. This *should*
be a cheap operation because we're draining and replacing iterators of the exact
same length, but under the hood memmove was being called a lot, causing a
slowdown on glibc 2.23.

It turns out that at least one of the optimizations in glibc 2.24 was that
`memmove` where the src/dst are equal becomes much faster. [This program][prog]
executes in ~2.5s against glibc 2.23 and ~0.3s against glibc 2.24, exhibiting
how glibc 2.24 is optimizing `memmove` if the src/dst are equal.

And all that brings us to what this commit itself is doing. The change here is
purely to `Drop for Drain` to avoid the call to `ptr::copy` if the region being
copied doesn't actually need to be copied. For normal usage of just `Drain`
itself this check isn't really necessary, but because `Splice` internally
contains `Drain` this provides a nice speed boost on glibc 2.23. Overall this
should fix the regression seen in #50496 on glibc 2.23 and also fix the
regression on Windows where `memmove` looks to not have this optimization.

Note that the way `splice` was called in `expand_statements` would cause a
quadratic number of elements to be copied via `memmove` which is likely why the
tuple-stress benchmark showed such a severe regression.

Closes #50496

[prog]: https://gist.github.com/alexcrichton/c05bc51c6771bba5ae5b57561a6c1cd3

6 years agoRollup merge of #50574 - s3bk:range_inclusive_into_inner, r=SimonSapin
Alex Crichton [Thu, 10 May 2018 16:35:31 +0000 (11:35 -0500)]
Rollup merge of #50574 - s3bk:range_inclusive_into_inner, r=SimonSapin

add fn `into_inner(self) -> (Idx, Idx)` to RangeInclusive (#49022)

adds `into_inner(self) -> (Idx, Idx)` to RangeInclusive
https://github.com/rust-lang/rust/issues/49022#issuecomment-387645176

6 years agoRollup merge of #50572 - frewsxcv:frewsxcv-fma, r=sfackler
Alex Crichton [Thu, 10 May 2018 16:35:29 +0000 (11:35 -0500)]
Rollup merge of #50572 - frewsxcv:frewsxcv-fma, r=sfackler

Clarify in the docs that `mul_add` is not always faster.

Fixes https://github.com/rust-lang/rust/issues/49842.

Other resources:

- https://users.rust-lang.org/t/why-does-the-mul-add-method-produce-a-more-accurate-result-with-better-performance/1626
- https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation

6 years agoRollup merge of #50569 - michaelwoerister:cross-lang-lto-2, r=alexcrichton
Alex Crichton [Thu, 10 May 2018 16:35:28 +0000 (11:35 -0500)]
Rollup merge of #50569 - michaelwoerister:cross-lang-lto-2, r=alexcrichton

Allow for specifying a linker plugin for cross-language LTO

This PR makes the `-Zcross-lang-lto` flag optionally take the path to the `LLVMgold.so` linker plugin. If this path is specified, `rustc` will invoke the linker with the correct arguments (i.e. `-plugin` and various `-plugin-opt`s).

This can be used to ergonomically enable cross-language LTO for Rust programs with C/C++ dependencies:
```
clang -O2 test.c -otest.o -c -flto=thin
llvm-ar -rv libxxx.a test.o
rustc -L. main.rs -Zcross-lang-lto=/usr/lib64/LLVMgold.so -O -Clink-arg=-fuse-ld=gold
```

- Note that in theory this should work with Gold, LLD, and newer versions of binutils' LD but on my current system I could only get it to work with Gold.
- Also note that this will work best if the Clang version and Rust's LLVM version are close enough. Clang 6.0 works well with the current nightly.

r? @alexcrichton

6 years agoRollup merge of #50565 - nnethercote:try_mark_green, r=michaelwoerister
Alex Crichton [Thu, 10 May 2018 16:35:27 +0000 (11:35 -0500)]
Rollup merge of #50565 - nnethercote:try_mark_green, r=michaelwoerister

Use SmallVec for DepNodeIndex within dep_graph.

This avoids a decent number of allocations, enough to speed up
incremental runs of many rustc-benchmarks, the best by 2%.

Here are the rustc-perf benchmarks that showed an improvement of at least 1% on one run:
```
unused-warnings-check
avg: -1.7% min: -2.4% max: 0.0%
unused-warnings-opt
avg: -1.4% min: -2.0% max: 0.0%
unused-warnings
avg: -1.4% min: -2.0% max: -0.0%
tokio-webpush-simple-check
avg: -1.0% min: -1.7% max: 0.0%
futures-opt
avg: -0.9% min: -1.6% max: 0.0%
encoding
avg: -1.2% min: -1.6% max: -0.6%
encoding-check
avg: -0.9% min: -1.6% max: 0.0%
encoding-opt
avg: -0.8% min: -1.6% max: -0.1%
futures
avg: -0.9% min: -1.5% max: 0.0%
futures-check
avg: -0.9% min: -1.5% max: 0.1%
regression-31157-check
avg: -0.9% min: -1.5% max: 0.0%
regex
avg: -0.6% min: -1.4% max: 0.0%
regression-31157-opt
avg: -0.5% min: -1.4% max: 0.1%
regression-31157
avg: -0.7% min: -1.4% max: 0.2%
regex-opt
avg: -0.6% min: -1.4% max: 0.1%
hyper-check
avg: -0.8% min: -1.4% max: -0.1%
regex-check
avg: -1.0% min: -1.4% max: 0.0%
hyper-opt
avg: -0.7% min: -1.4% max: -0.1%
hyper
avg: -0.7% min: -1.3% max: 0.1%
piston-image-opt
avg: -0.4% min: -1.3% max: 0.0%
tokio-webpush-simple-opt
avg: -0.3% min: -1.3% max: 0.0%
piston-image-check
avg: -0.5% min: -1.3% max: -0.0%
syn-opt
avg: -0.5% min: -1.3% max: 0.0%
clap-rs-check
avg: -0.3% min: -1.3% max: 0.2%
piston-image
avg: -0.5% min: -1.2% max: 0.1%
syn
avg: -0.5% min: -1.2% max: 0.1%
syn-check
avg: -0.6% min: -1.2% max: -0.1%
issue-46449-opt
avg: -0.4% min: -1.2% max: -0.1%
parser-check
avg: -0.7% min: -1.2% max: 0.1%
issue-46449
avg: -0.5% min: -1.2% max: -0.0%
```

6 years agoRollup merge of #50564 - nnethercote:inline-Span-methods, r=petrochenkov
Alex Crichton [Thu, 10 May 2018 16:35:26 +0000 (11:35 -0500)]
Rollup merge of #50564 - nnethercote:inline-Span-methods, r=petrochenkov

Inline `Span` methods.

Because they are simple and hot.

This change speeds up some incremental runs of a few rustc-perf
benchmarks, the best by 3%.

Here are the ones with a speedup of at least 1%:
```
coercions
        avg: -1.1%      min: -3.4%      max: -0.2%
html5ever-opt
        avg: -0.8%      min: -1.7%      max: -0.2%
clap-rs-check
        avg: -0.3%      min: -1.4%      max: 0.7%
html5ever
        avg: -0.7%      min: -1.2%      max: -0.4%
html5ever-check
        avg: -0.9%      min: -1.1%      max: -0.8%
clap-rs
        avg: -0.4%      min: -1.1%      max: -0.1%
crates.io-check
        avg: -0.8%      min: -1.0%      max: -0.6%
serde-opt
        avg: -0.6%      min: -1.0%      max: -0.3%
```

6 years agoRollup merge of #50538 - michaelwoerister:atomic-cnums, r=Zoxc
Alex Crichton [Thu, 10 May 2018 16:35:24 +0000 (11:35 -0500)]
Rollup merge of #50538 - michaelwoerister:atomic-cnums, r=Zoxc

 Make CrateNum allocation more thread-safe.

This PR makes sure that we can't have race conditions when assigning CrateNums. It's a slight improvement but a larger refactoring of the CrateStore/CrateLoader infrastructure would be good, I think.

r? @Zoxc

6 years agoRollup merge of #50532 - michaelwoerister:lockless-cnum-map, r=Zoxc
Alex Crichton [Thu, 10 May 2018 16:35:23 +0000 (11:35 -0500)]
Rollup merge of #50532 - michaelwoerister:lockless-cnum-map, r=Zoxc

Don't use Lock for heavily accessed CrateMetadata::cnum_map.

The `cnum_map` in `CrateMetadata` is used for two things:
1. to map `CrateNums` between crates (used a lot during decoding)
2. to construct the (reverse) post order of the crate graph

For the second case, we need to modify the map after the fact, which is why the map is wrapped in a `Lock`. This is bad for the first case, which does not need the modification and does lots of small reads from the map.

This PR splits case (2) out into a separate `dependencies` field. This allows to make the `cnum_map` immutable (and shifts the interior mutability to a less busy data structure).

Fixes #50502

r? @Zoxc

6 years agoRollup merge of #50524 - wesleywiser:immutable_prev_work_products, r=michaelwoerister
Alex Crichton [Thu, 10 May 2018 16:35:21 +0000 (11:35 -0500)]
Rollup merge of #50524 - wesleywiser:immutable_prev_work_products, r=michaelwoerister

Make DepGraph::previous_work_products immutable

Fixes #50501

r? @michaelwoerister

6 years agoRollup merge of #50514 - alexcrichton:update-llvm, r=kennytm
Alex Crichton [Thu, 10 May 2018 16:35:20 +0000 (11:35 -0500)]
Rollup merge of #50514 - alexcrichton:update-llvm, r=kennytm

Pull in a wasm fix from LLVM upstream

This pulls in a fix for https://bugs.llvm.org/show_bug.cgi?id=36564 which has
already landed in upstream LLVM and should...

Closes rust-lang-nursery/rust-wasm#168

6 years agoRollup merge of #50447 - ehuss:fix-update-references, r=alexcrichton
Alex Crichton [Thu, 10 May 2018 16:35:19 +0000 (11:35 -0500)]
Rollup merge of #50447 - ehuss:fix-update-references, r=alexcrichton

Fix update-references for tests within subdirectories.

Fixes #50438.

I'll make this more robust later for #49815.

6 years agoRollup merge of #50010 - ExpHP:slice-bounds, r=alexcrichton
Alex Crichton [Thu, 10 May 2018 16:35:17 +0000 (11:35 -0500)]
Rollup merge of #50010 - ExpHP:slice-bounds, r=alexcrichton

Give SliceIndex impls a test suite of girth befitting the implementation (and fix a UTF8 boundary check)

So one day I was writing something in my codebase that basically amounted to `impl SliceIndex for (Bound<usize>, Bound<usize>)`, and I said to myself:

*Boy, gee, golly!  I never realized bounds checking was so tricky!*

At some point when I had around 60 lines of tests for it, I decided to go see how the standard library does it to see if I missed any edge cases. ...That's when I discovered that libcore only had about 40 lines of tests for slicing altogether, and none of them even used `..=`.

---

This PR includes:

* **Literally the first appearance of the word `get_unchecked_mut` in any directory named `test` or `tests`.**
* Likewise the first appearance of `get_mut` used with _any type of range argument_ in these directories.
* Tests for the panics on overflow with `..=`.
    * I wanted to test on `[(); usize::MAX]` as well but that takes linear time in debug mode </3
* A horrible and ugly test-generating macro for the `should_panic` tests that increases the DRYness by a single order of magnitude (which IMO wasn't enough, but I didn't want to go any further and risk making the tests inaccessible to next guy).
* Same stuff for str!
    * Actually, the existing `str` tests were pretty good. I just helped filled in the holes.
* [A fix for the bug it caught](https://github.com/rust-lang/rust/issues/50002).  (only one ~~sadly~~)

6 years agoRollup merge of #49423 - gavento:gavento-dev, r=nikomatsakis
Alex Crichton [Thu, 10 May 2018 16:35:16 +0000 (11:35 -0500)]
Rollup merge of #49423 - gavento:gavento-dev, r=nikomatsakis

Extend tests for RFC1598 (GAT)

More GAT tests, namely some usage for `Iterable` and `StreamingIterator`, shadowing (lifetimes and type params), `Collection<T>` and `CollectionFamily` from [the series](http://smallcultfollowing.com/babysteps/blog/2016/11/03/associated-type-constructors-part-2-family-traits/) with default associated types. Tracking issue: #44265

r? @nikomatsakis

Wrong GAT argument numbers / kinds and default values are next.

6 years agoAuto merge of #49823 - Zoxc:term-str, r=alexcrichton
bors [Thu, 10 May 2018 16:27:32 +0000 (16:27 +0000)]
Auto merge of #49823 - Zoxc:term-str, r=alexcrichton

Remove usages of Term::as_str and mark it for removal

Returning references to rustc internal data structures is a bad idea since their lifetimes are unrelated to the lifetimes of proc_macro values.

See https://github.com/rust-lang/rust/pull/46972 and the `Taming thread-local storage` section of https://internals.rust-lang.org/t/parallelizing-rustc-using-rayon/6606

r? @alexcrichton

6 years agoFix tuple struct field spans
Esteban Küber [Wed, 9 May 2018 23:26:18 +0000 (16:26 -0700)]
Fix tuple struct field spans

6 years agoRemove `nll` from `rust_2018_preview`
Alex Crichton [Thu, 10 May 2018 15:44:20 +0000 (08:44 -0700)]
Remove `nll` from `rust_2018_preview`

NLL isn't quite ready yet so gonna hold off on inserting it into the preview.

6 years agoAuto merge of #50395 - Zoxc:small-tys, r=michaelwoerister
bors [Thu, 10 May 2018 14:14:35 +0000 (14:14 +0000)]
Auto merge of #50395 - Zoxc:small-tys, r=michaelwoerister

Optimize layout of TypeVariants

This makes references to `Slice` use thin pointers by storing the slice length in the slice itself. `GeneratorInterior` is replaced by storing the movability of generators in `TyGenerator` and the interior witness is stored in `GeneratorSubsts` (which is just a wrapper around `&'tcx Substs`, like `ClosureSubsts`). Finally the fields of `TypeAndMut` is stored inline in `TyRef`. These changes combine to reduce `TypeVariants` from 48 bytes to 24 bytes on x86_64.

r? @michaelwoerister

6 years agoPull in a wasm fix from LLVM upstream
Alex Crichton [Mon, 7 May 2018 18:43:58 +0000 (11:43 -0700)]
Pull in a wasm fix from LLVM upstream

This pulls in a fix for https://bugs.llvm.org/show_bug.cgi?id=36564 which has
already landed in upstream LLVM and should...

Closes rust-lang-nursery/rust-wasm#168

6 years agoRetry when downloading the Docker cache.
kennytm [Thu, 10 May 2018 12:00:29 +0000 (20:00 +0800)]
Retry when downloading the Docker cache.

Prevent spuriously needing to rebuild the docker image when the network
was down.

Also, adjusted the retry function to insert a sleep between retries,
because retrying immediately will often just hit the same issue.

6 years agoAuto merge of #50200 - alexcrichton:compile-with-clang, r=kennytm
bors [Thu, 10 May 2018 10:30:02 +0000 (10:30 +0000)]
Auto merge of #50200 - alexcrichton:compile-with-clang, r=kennytm

Compile LLVM with Clang on release builders

Attempting to cache in on some rustc compile time wins mentioned in https://github.com/rust-lang/rust/issues/49879#issuecomment-383602941

6 years agoAuto merge of #50432 - GuillaumeGomez:fix-vec-new-search, r=QuietMisdreavus
bors [Thu, 10 May 2018 07:52:15 +0000 (07:52 +0000)]
Auto merge of #50432 - GuillaumeGomez:fix-vec-new-search, r=QuietMisdreavus

Fix rustdoc pathes search

Fixes #50086.

Depends on #50302.

r? @QuietMisdreavus

6 years agoRemove unnecessary mutable borrow and resizing
Isaac Whitfield [Thu, 10 May 2018 06:36:57 +0000 (23:36 -0700)]
Remove unnecessary mutable borrow and resizing

6 years agoAuto merge of #49729 - collin5:b48483, r=Mark-Simulacrum
bors [Thu, 10 May 2018 02:15:40 +0000 (02:15 +0000)]
Auto merge of #49729 - collin5:b48483, r=Mark-Simulacrum

./x.py test should be able to run individual tests

Allows user to be able to run individual tests by specifying filename i.e `./x.py test src/test/run-pass/foo.rs`

Fixes #48483

6 years agoRestore RawVec::reserve* documentation
Mike Hommey [Thu, 10 May 2018 00:16:10 +0000 (09:16 +0900)]
Restore RawVec::reserve* documentation

When the RawVec::try_reserve* methods were added, they took the place of
the ::reserve* methods in the source file, and new ::reserve* methods
wrapping the new try_reserve* methods were created. But the
documentation didn't move along, such that:
 - reserve_* methods are barely documented.
 - try_reserve_* methods have unmodified documentation from reserve_*,
   such that their documentation indicate they are panicking/aborting.

This moves the documentation back to the right methods, with a
placeholder documentation for the try_reserve* methods.

6 years agomake std::str link into See also link
Michael Lamparski [Wed, 9 May 2018 22:05:36 +0000 (18:05 -0400)]
make std::str link into See also link

also make a drive-by typo fix

6 years agomove See also links to top
Michael Lamparski [Wed, 9 May 2018 22:03:56 +0000 (18:03 -0400)]
move See also links to top

6 years agoci: Compile LLVM with Clang 6.0.0
Alex Crichton [Tue, 24 Apr 2018 15:34:14 +0000 (08:34 -0700)]
ci: Compile LLVM with Clang 6.0.0

Currently on CI we predominately compile LLVM with the default system compiler
which means gcc on Linux, some version of Clang on OSX, MSVC on Windows, and
gcc on MinGW. This commit switches Linux, OSX, and Windows to all use Clang
6.0.0 to build LLVM (aka the C/C++ compiler as part of the bootstrap). This
looks to generate faster code according to #49879 which translates to a faster
rustc (as LLVM internally is faster)

The major changes here were to the containers that build Linux releases,
basically adding a new step that uses the previous gcc 4.8 compiler to compile
the next Clang 6.0.0 compiler. Otherwise the OSX and Windows scripts have been
updated to download precompiled versions of Clang 6 and configure the build to
use them.

Note that `cc` was updated here to fix using `clang-cl` with `cc-rs` on MSVC, as
well as an update to `sccache` on Windows which was needed to correctly work
with `clang-cl`. Finally the MinGW compiler is entirely left out here
intentionally as it's currently thought that Clang can't generate C++ code for
MinGW and we need to use gcc, but this should be verified eventually.

6 years agoAdd comment about first element in CStore::metas.
Michael Woerister [Wed, 9 May 2018 19:32:18 +0000 (21:32 +0200)]
Add comment about first element in CStore::metas.

6 years agoAuto merge of #49834 - Zoxc:sync-trait-cache, r=nikomatsakis
bors [Wed, 9 May 2018 19:17:35 +0000 (19:17 +0000)]
Auto merge of #49834 - Zoxc:sync-trait-cache, r=nikomatsakis

Make SelectionCache and EvaluationCache thread-safe

Split out from https://github.com/rust-lang/rust/pull/49558

r? @nikomatsakis

6 years agoAdd exact-check option to rustdoc-js tests
Guillaume Gomez [Thu, 3 May 2018 20:54:04 +0000 (22:54 +0200)]
Add exact-check option to rustdoc-js tests

6 years agoAuto merge of #49711 - ibabushkin:auto_trait_refactor, r=nikomatsakis
bors [Wed, 9 May 2018 16:56:30 +0000 (16:56 +0000)]
Auto merge of #49711 - ibabushkin:auto_trait_refactor, r=nikomatsakis

Refactor auto trait handling in librustdoc to be accessible from librustc.

These commits transfer some of the functionality introduced in https://github.com/rust-lang/rust/pull/47833 to librustc with the intention of making the tools to work with auto traits accessible to third-party code, for example [rust-semverver](https://github.com/rust-lang-nursery/rust-semverver).

Some rough edges remain, and I'm certain some of the FIXMEs introduced will need some discussion, most notably the fairly ugly overall approach to pull out the core logic into librustc, which was previously fairly tightly coupled with various bits and bobs from librustdoc.

cc @Aaron1011

6 years agostd: Avoid `ptr::copy` if unnecessary in `vec::Drain`
Alex Crichton [Wed, 9 May 2018 15:33:49 +0000 (08:33 -0700)]
std: Avoid `ptr::copy` if unnecessary in `vec::Drain`

This commit is spawned out of a performance regression investigation in #50496.
In tracking down this regression it turned out that the `expand_statements`
function in the compiler was taking quite a long time. Further investigation
showed two key properties:

* The function was "fast" on glibc 2.24 and slow on glibc 2.23
* The hottest function was memmove from glibc

Combined together it looked like glibc gained an optimization to the memmove
function in 2.24. Ideally we don't want to rely on this optimization, so I
wanted to dig further to see what was happening.

The hottest part of `expand_statements` was `Drop for Drain` in the call to
`splice` where we insert new statements into the original vector. This *should*
be a cheap operation because we're draining and replacing iterators of the exact
same length, but under the hood memmove was being called a lot, causing a
slowdown on glibc 2.23.

It turns out that at least one of the optimizations in glibc 2.24 was that
`memmove` where the src/dst are equal becomes much faster. [This program][prog]
executes in ~2.5s against glibc 2.23 and ~0.3s against glibc 2.24, exhibiting
how glibc 2.24 is optimizing `memmove` if the src/dst are equal.

And all that brings us to what this commit itself is doing. The change here is
purely to `Drop for Drain` to avoid the call to `ptr::copy` if the region being
copied doesn't actually need to be copied. For normal usage of just `Drain`
itself this check isn't really necessary, but because `Splice` internally
contains `Drain` this provides a nice speed boost on glibc 2.23. Overall this
should fix the regression seen in #50496 on glibc 2.23 and also fix the
regression on Windows where `memmove` looks to not have this optimization.

Note that the way `splice` was called in `expand_statements` would cause a
quadratic number of elements to be copied via `memmove` which is likely why the
tuple-stress benchmark showed such a severe regression.

Closes #50496

[prog]: https://gist.github.com/alexcrichton/c05bc51c6771bba5ae5b57561a6c1cd3

6 years agoadd fn `into_inner(self) -> (Idx, Idx)` to RangeInclusive (#49022)
Sebastian Köln [Wed, 9 May 2018 16:03:13 +0000 (18:03 +0200)]
add fn `into_inner(self) -> (Idx, Idx)` to RangeInclusive (#49022)

6 years agoAllow for specifying a linker plugin for cross-language LTO
Michael Woerister [Wed, 25 Apr 2018 13:45:04 +0000 (15:45 +0200)]
Allow for specifying a linker plugin for cross-language LTO

6 years agoMake CrateNum allocation more thread-safe.
Michael Woerister [Tue, 8 May 2018 15:15:42 +0000 (17:15 +0200)]
Make CrateNum allocation more thread-safe.

6 years agoClarify in the docs that `mul_add` is not always faster.
Corey Farwell [Wed, 9 May 2018 13:47:37 +0000 (06:47 -0700)]
Clarify in the docs that `mul_add` is not always faster.

Fixes https://github.com/rust-lang/rust/issues/49842.

Other resources:

- https://users.rust-lang.org/t/why-does-the-mul-add-method-produce-a-more-accurate-result-with-better-performance/1626
- https://en.wikipedia.org/wiki/Multiply%E2%80%93accumulate_operation

6 years agoAuto merge of #50546 - kennytm:rollup, r=kennytm
bors [Wed, 9 May 2018 13:28:15 +0000 (13:28 +0000)]
Auto merge of #50546 - kennytm:rollup, r=kennytm

Rollup of 11 pull requests

Successful merges:

 - #49988 (Mention Result<!, E> in never docs.)
 - #50148 (turn `ManuallyDrop::new` into a constant function)
 - #50456 (Update the Cargo submodule)
 - #50460 (Make `String::new()` const)
 - #50464 (Remove some transmutes)
 - #50505 (Added regression function match value test)
 - #50511 (Add some explanations for #[must_use])
 - #50525 (Optimize string handling in lit_token().)
 - #50527 (Cleanup a `use` in a raw_vec test)
 - #50539 (Add more logarithm constants)
 - #49523 (Update RELEASES.md for 1.26.0)

Failed merges:

6 years agoRollup merge of #49523 - Aaronepower:master, r=Mark-Simulacrum
kennytm [Wed, 9 May 2018 10:17:13 +0000 (18:17 +0800)]
Rollup merge of #49523 - Aaronepower:master, r=Mark-Simulacrum

Update RELEASES.md for 1.26.0

[Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)

6 years agoRollup merge of #50527 - glandium:cleanup, r=sfackler
kennytm [Wed, 9 May 2018 09:26:49 +0000 (17:26 +0800)]
Rollup merge of #50527 - glandium:cleanup, r=sfackler

Cleanup a `use` in a raw_vec test

`allocator` is deprecated in favor of `alloc`, and `Alloc` is already imported
through `super::*`.

6 years agoRollup merge of #50511 - Manishearth:must-use, r=QuietMisdreavus
kennytm [Wed, 9 May 2018 09:26:38 +0000 (17:26 +0800)]
Rollup merge of #50511 - Manishearth:must-use, r=QuietMisdreavus

Add some explanations for #[must_use]

`#[must_use]` can be given a string argument which is shown whilst warning for things.

We should add a string argument to most of the user-exposed ones.

I added these for everything but the operators, mostly because I'm not sure what to write there or if we need anything there.

6 years agoRollup merge of #50505 - Aaronepower:add-test, r=oli-obk
kennytm [Wed, 9 May 2018 09:26:25 +0000 (17:26 +0800)]
Rollup merge of #50505 - Aaronepower:add-test, r=oli-obk

Added regression function match value test

closes #44333

6 years agoRollup merge of #50464 - est31:master, r=rkruppe
kennytm [Wed, 9 May 2018 09:26:13 +0000 (17:26 +0800)]
Rollup merge of #50464 - est31:master, r=rkruppe

Remove some transmutes

6 years agoRollup merge of #50460 - F001:const_string, r=kennytm
kennytm [Wed, 9 May 2018 09:25:53 +0000 (17:25 +0800)]
Rollup merge of #50460 - F001:const_string, r=kennytm

Make `String::new()` const

Following the steps of https://github.com/rust-lang/rust/pull/50233 , make `String::new()` a `const fn`.

6 years agoUse SmallVec for DepNodeIndex within dep_graph.
Nicholas Nethercote [Wed, 9 May 2018 02:21:48 +0000 (12:21 +1000)]
Use SmallVec for DepNodeIndex within dep_graph.

This avoids a decent number of allocations, enough to speed up
incremental runs of many rustc-benchmarks, the best by 2%.

6 years agoInline `Span` methods.
Nicholas Nethercote [Wed, 9 May 2018 05:25:44 +0000 (15:25 +1000)]
Inline `Span` methods.

Because they are simple and hot.

This change speeds up some incremental runs of a few rustc-perf
benchmarks, the best by 3%.

6 years agoUpdate RELEASES.md
Aaron Power [Wed, 9 May 2018 10:06:20 +0000 (11:06 +0100)]
Update RELEASES.md

6 years agoRollup merge of #50148 - japaric:const-manuallydrop, r=oli-obk
kennytm [Wed, 9 May 2018 09:25:25 +0000 (17:25 +0800)]
Rollup merge of #50148 - japaric:const-manuallydrop, r=oli-obk

turn `ManuallyDrop::new` into a constant function

6 years agoRollup merge of #49988 - clarcharr:never_docs, r=steveklabnik
kennytm [Wed, 9 May 2018 09:25:04 +0000 (17:25 +0800)]
Rollup merge of #49988 - clarcharr:never_docs, r=steveklabnik

Mention Result<!, E> in never docs.

Fixes #48096.

6 years agoRollup merge of #50539 - clarcharr:log_const, r=dtolnay
kennytm [Wed, 9 May 2018 09:24:44 +0000 (17:24 +0800)]
Rollup merge of #50539 - clarcharr:log_const, r=dtolnay

Add more logarithm constants

Right now, we have `ln(2)` and `ln(10)`, but only `log2(e)` and `log10(e)`. This also adds `log2(10)` and `log10(2)` for consistency.

6 years agoRollup merge of #50525 - nnethercote:lit_token, r=michaelwoerister
kennytm [Wed, 9 May 2018 09:23:31 +0000 (17:23 +0800)]
Rollup merge of #50525 - nnethercote:lit_token, r=michaelwoerister

Optimize string handling in lit_token().

In the common case, the string value in a string literal Token is the
same as the string value in a string literal LitKind. (The exception is
when escapes or \r are involved.) This patch takes advantage of that to
avoid calling str_lit() and re-interning the string in that case. This
speeds up incremental builds for a few of the rustc-benchmarks, the best
by 3%.

Benchmarks that got a speedup of 1% or more:
```
coercions
        avg: -1.1%      min: -3.5%      max: 0.4%
regex-check
        avg: -1.2%      min: -1.5%      max: -0.6%
futures-check
        avg: -0.9%      min: -1.4%      max: -0.3%
futures
        avg: -0.8%      min: -1.3%      max: -0.3%
futures-opt
        avg: -0.7%      min: -1.2%      max: -0.1%
regex
        avg: -0.5%      min: -1.2%      max: -0.1%
regex-opt
        avg: -0.5%      min: -1.1%      max: -0.1%
hyper-check
        avg: -0.7%      min: -1.0%      max: -0.3%
```

6 years agoRollup merge of #50456 - alexcrichton:update-cargo, r=alexcrichton
kennytm [Wed, 9 May 2018 09:20:55 +0000 (17:20 +0800)]
Rollup merge of #50456 - alexcrichton:update-cargo, r=alexcrichton

Update the Cargo submodule

Hopefully brining in a few fixes to Cargo regressions!

6 years agoAdapt some method visibilities in librustc_metadata::cstore.
Michael Woerister [Tue, 8 May 2018 14:50:48 +0000 (16:50 +0200)]
Adapt some method visibilities in librustc_metadata::cstore.

6 years agoFix update-references for tests within subdirectories.
Eric Huss [Fri, 4 May 2018 15:46:30 +0000 (08:46 -0700)]
Fix update-references for tests within subdirectories.

Fixes #50438.

I'll make this more robust later for #49815.

6 years agoignore test-args if user specifies suite_path
Collins Abitekaniza [Tue, 8 May 2018 12:23:32 +0000 (15:23 +0300)]
ignore test-args if user specifies suite_path

6 years agoOptimize string handling in lit_token().
Nicholas Nethercote [Fri, 4 May 2018 06:53:31 +0000 (16:53 +1000)]
Optimize string handling in lit_token().

In the common case, the string value in a string literal Token is the
same as the string value in a string literal LitKind. (The exception is
when escapes or \r are involved.) This patch takes advantage of that to
avoid calling str_lit() and re-interning the string in that case. This
speeds up incremental builds for a few of the rustc-benchmarks, the best
by 3%.

6 years agoAdd more logarithm constants
Clar Charr [Tue, 8 May 2018 16:05:07 +0000 (12:05 -0400)]
Add more logarithm constants

6 years agoMake an ensure_root_is_owned method to reduce duplication
C Jones [Tue, 8 May 2018 17:28:49 +0000 (13:28 -0400)]
Make an ensure_root_is_owned method to reduce duplication

Also remove some unnecessary debug_assert! when creating the shared
root, since the root should be stored in the rodata and thus be
impossible to accidentally modify.

6 years agoAuto merge of #50530 - oli-obk:miri, r=kennytm
bors [Tue, 8 May 2018 17:20:01 +0000 (17:20 +0000)]
Auto merge of #50530 - oli-obk:miri, r=kennytm

Fix thinning pointers to extern types in miri

r? @kennytm as an alternative to disabling the miri build

fixes #50495

6 years agoUpdate the Cargo/stdsimd submodules
Alex Crichton [Sat, 5 May 2018 05:27:29 +0000 (22:27 -0700)]
Update the Cargo/stdsimd submodules

Hopefully brining in a few fixes to Cargo regressions as well as some new
stdsimd functions!

6 years agoAuto merge of #50497 - RalfJung:pinmut, r=withoutboats
bors [Tue, 8 May 2018 14:45:16 +0000 (14:45 +0000)]
Auto merge of #50497 - RalfJung:pinmut, r=withoutboats

Rename Pin to PinMut, and some more breaking changes

As discussed at [1] §3 and [2] and [3], a formal look at pinning requires considering a distinguished "shared pinned" mode/typestate.  Given that, it seems desirable to at least eventually actually expose that typestate as a reference type.  This renames Pin to PinMut, freeing the name Pin in case we want to use it for a shared pinned reference later on.

[1] https://www.ralfj.de/blog/2018/04/10/safe-intrusive-collections-with-pinning.html
[2] https://github.com/rust-lang/rfcs/pull/2349#issuecomment-379250361
[3] https://github.com/rust-lang/rust/issues/49150#issuecomment-380488275

Cc @withoutboats

6 years agoInsert fields from TypeAndMut into TyRef to allow layout optimization
John Kåre Alsaker [Wed, 2 May 2018 13:21:05 +0000 (15:21 +0200)]
Insert fields from TypeAndMut into TyRef to allow layout optimization

6 years agoStore the GeneratorInterior in the new GeneratorSubsts
John Kåre Alsaker [Wed, 2 May 2018 11:14:30 +0000 (13:14 +0200)]
Store the GeneratorInterior in the new GeneratorSubsts

6 years agoStore generator movability outside GeneratorInterior
John Kåre Alsaker [Wed, 2 May 2018 08:17:12 +0000 (10:17 +0200)]
Store generator movability outside GeneratorInterior

6 years agoFix comment
Wesley Wiser [Tue, 8 May 2018 13:13:18 +0000 (09:13 -0400)]
Fix comment

6 years agoDon't use Lock for heavily accessed CrateMetadata::cnum_map.
Michael Woerister [Tue, 8 May 2018 12:32:31 +0000 (14:32 +0200)]
Don't use Lock for heavily accessed CrateMetadata::cnum_map.

6 years agoAuto merge of #50490 - nrc:method-docs, r=eddyb
bors [Tue, 8 May 2018 12:25:01 +0000 (12:25 +0000)]
Auto merge of #50490 - nrc:method-docs, r=eddyb

save-analysis: emit correct docs for methods

cc https://github.com/rust-lang-nursery/rls/issues/446

r? @eddyb

6 years agoFix thinning pointers to extern types in miri
Oliver Schneider [Mon, 7 May 2018 13:53:44 +0000 (15:53 +0200)]
Fix thinning pointers to extern types in miri

6 years agoAuto merge of #50503 - alexheretic:master, r=oli-obk
bors [Tue, 8 May 2018 10:15:48 +0000 (10:15 +0000)]
Auto merge of #50503 - alexheretic:master, r=oli-obk

Update rls with compiling clippy

Updates rls to use a working clippy version. This pr can be closed if the latest clippy release is broken again.