]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agoAuto merge of #50276 - Zoxc:build-cleanup, r=alexcrichton
bors [Sat, 5 May 2018 18:58:17 +0000 (18:58 +0000)]
Auto merge of #50276 - Zoxc:build-cleanup, r=alexcrichton

Misc tweaks

This:
- ~~Add explicit dependencies on `getops`~~
- Fixes the libtest-json test when `RUST_BACKTRACE=1` is set
- ~~Sets `opt-level` to `3`~~
- Removes the use of `staged_api` from `rustc_plugin`
- ~~Enables the Windows Error Reporting dialog when running rustc during bootstrapping~~
- Disables Windows Error Reporting dialog when running compiletest tests
- Enables backtraces when running rustc during bootstrapping
- ~~Removes the `librustc` dependency on `libtest`~~
- Triggers JIT debugging on Windows if rustc panics during bootstrapping

r? @alexcrichton

6 years agoMisc tweaks
John Kåre Alsaker [Sun, 8 Apr 2018 11:44:29 +0000 (13:44 +0200)]
Misc tweaks

6 years agoAuto merge of #50441 - kornelski:debughint, r=kornelski
bors [Sat, 5 May 2018 14:29:42 +0000 (14:29 +0000)]
Auto merge of #50441 - kornelski:debughint, r=kornelski

Suggest more helpful formatting string

Based on [user feedback](https://users.rust-lang.org/t/ux-feedback-from-a-rust-newbie/17220) the minimal suggestion of `:?` is unclear.

Also `{:#?}` is much more readable than the standard debug, so this PR suggests it to help surface this nice feature.

6 years agoAuto merge of #50370 - nikomatsakis:nll-alias-analysis-flat, r=pnkfelix
bors [Sat, 5 May 2018 11:05:23 +0000 (11:05 +0000)]
Auto merge of #50370 - nikomatsakis:nll-alias-analysis-flat, r=pnkfelix

introduce `-Znll-facts` to dump base-facts for the NLL analysis

r? @pnkfelix

6 years agoSuggest more helpful formatting string
Kornel [Fri, 4 May 2018 11:43:52 +0000 (12:43 +0100)]
Suggest more helpful formatting string

6 years agoadd a comment about Locations::All
Niko Matsakis [Fri, 4 May 2018 18:26:53 +0000 (14:26 -0400)]
add a comment about Locations::All

6 years agoremove `#[allow(dead_code)]`
Niko Matsakis [Tue, 1 May 2018 19:00:31 +0000 (15:00 -0400)]
remove `#[allow(dead_code)]`

6 years agoadd `-Znll-facts` switch that dumps facts for new analysis
Niko Matsakis [Tue, 1 May 2018 14:49:11 +0000 (10:49 -0400)]
add `-Znll-facts` switch that dumps facts for new analysis

6 years agoadd location table
Niko Matsakis [Tue, 1 May 2018 14:03:36 +0000 (10:03 -0400)]
add location table

This will be used in fact generation.

6 years agoadd `Locations::All` as a concept
Niko Matsakis [Tue, 1 May 2018 14:50:05 +0000 (10:50 -0400)]
add `Locations::All` as a concept

In particular, type annotations given by the user must hold at all
points in the program. This doesn't affect current analysis but
will affect fact generation later.

6 years agouse `crate` visibility modifier
Niko Matsakis [Tue, 1 May 2018 14:48:04 +0000 (10:48 -0400)]
use `crate` visibility modifier

6 years agoadd `Location::START` const
Niko Matsakis [Tue, 1 May 2018 13:46:11 +0000 (09:46 -0400)]
add `Location::START` const

6 years agoAuto merge of #50418 - nnethercote:cmt, r=eddyb
bors [Sat, 5 May 2018 08:52:28 +0000 (08:52 +0000)]
Auto merge of #50418 - nnethercote:cmt, r=eddyb

Avoid many `cmt` allocations.

`cmt` is a ref-counted wrapper around `cmt_` The use of refcounting
keeps `cmt` handling simple, but a lot of `cmt` instances are very
short-lived, and heap-allocating the short-lived ones takes up time.

This patch changes things in the following ways.

- Most of the functions that produced `cmt` instances now produce `cmt_`
  instances. The `Rc::new` calls that occurred within those functions
  now occur at their call sites (but only when necessary, which isn't
  that often).

- Many of the functions that took `cmt` arguments now take `&cmt_`
  arguments. This includes all the methods in the `Delegate` trait.

As a result, the vast majority of the heap allocations are avoided. In
an extreme case, the number of calls to malloc in tuple-stress drops
from 9.9M to 7.9M, a drop of 20%. And the compile times for many runs of
coercions, deep-vector, and tuple-stress drop by 1--2%.

6 years agoAuto merge of #50423 - hberntsen:armv5te_unknown_linux_musl, r=alexcrichton
bors [Sat, 5 May 2018 06:03:47 +0000 (06:03 +0000)]
Auto merge of #50423 - hberntsen:armv5te_unknown_linux_musl, r=alexcrichton

Add armv5te-unknown-linux-musl target

This PR adds the armv5te-unknown-linux-musl target. The following steps should let you produce a fully statically linked binary now:
1. Running `./src/ci/docker/run.sh dist-armv5te-linux-musl`
2. Changing the run.sh script to start bash instead of the build process and running the container
3.
   ```sh
   export USER=root
   export PATH=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin:$PATH
   ```
4. Configuring Cargo
   ```yaml
   [target.armv5te-unknown-linux-musl]
   linker = "arm-linux-gnueabi-gcc"
   ```
5. Building a project
   ```sh
   cargo new --bin hello
   cd hello
   cargo build --target=armv5te-unknown-linux-musl --release
   ```

6 years agoFix libtest-json test
John Kåre Alsaker [Tue, 20 Mar 2018 00:18:08 +0000 (01:18 +0100)]
Fix libtest-json test

6 years agoAuto merge of #50419 - sinkuu:rustdoc_nested_impl_trait, r=QuietMisdreavus
bors [Sat, 5 May 2018 03:36:09 +0000 (03:36 +0000)]
Auto merge of #50419 - sinkuu:rustdoc_nested_impl_trait, r=QuietMisdreavus

rustdoc: Resolve nested `impl Trait`s

Fixes #50358.

Populates `cx.impl_trait_bounds` incrementally while `clean`ing generic params, so that a synthetic type-parameter can refer to previous ones.

cc #50366

6 years agoAuto merge of #50084 - killercup:compiletest-rustfix, r=Manishearth
bors [Fri, 4 May 2018 23:15:00 +0000 (23:15 +0000)]
Auto merge of #50084 - killercup:compiletest-rustfix, r=Manishearth

First step towards rustfix compiletest mode

This is the first small step towards testing auto-fixable compiler
suggestions using compiletest. Currently, it only checks if next to a
UI test there also happens to a `*.rs.fixed` file, and then uses rustfix
(added as external crate) on the original file, and asserts that it
produces the fixed version.

To show that this works, I've included one such test. I picked this test
case at random (and because it was simple) -- It is not relevant to the
2018 edition. Indeed, in the near future, we want to be able to restrict
rustfix to edition-lints, so this test cast might go away soon.

In case you still think this is somewhat feature-complete, here's a
quick list of things currently missing that I want to add before telling
people they can use this:

- [x] Make this an actual compiletest mode, with `test [fix] …` output
  and everything
- [x] Assert that fixed files still compile
- [x] Assert that fixed files produce no (or a known set of) diagnostics
  output
- [x] Update `update-references.sh` to support rustfix
- [x] Use a published version of rustfix (i.e.: publish a new version
  rustfix that exposes a useful API for this)

6 years agoFold rustfix tests back into the UI test suite
Alex Crichton [Thu, 3 May 2018 18:26:58 +0000 (11:26 -0700)]
Fold rustfix tests back into the UI test suite

6 years agoUse published rustfix 0.2 version
Pascal Hertleif [Thu, 3 May 2018 13:35:42 +0000 (15:35 +0200)]
Use published rustfix 0.2 version

6 years agotest: Make a dedicated testsuite for rustfix
Alex Crichton [Wed, 2 May 2018 15:43:15 +0000 (08:43 -0700)]
test: Make a dedicated testsuite for rustfix

This commit adds a dedicated mode to compiletest for running rustfix tests,
adding a new `src/test/rustfix` directory which will execute all tests as a
"rustfix" test, namely requiring that a `*.fixed` is next to the main file which
is the result of the rustfix project's application of fixes.

The `rustfix` crate is pulled in to actually perform the fixing, and the rustfix
compiletest mode will assert a few properties about the fixing:

* The expected fixed output must be the same as rustc's output suggestions
  applied to the original code.
* The fixed code must compile successfully
* The fixed code must have no further diagnostics emitted about it

6 years agotidy
Pascal Hertleif [Tue, 1 May 2018 22:44:39 +0000 (00:44 +0200)]
tidy

6 years agoSkip NLL compiletest in rustfix mode for now
Pascal Hertleif [Tue, 1 May 2018 22:33:59 +0000 (00:33 +0200)]
Skip NLL compiletest in rustfix mode for now

6 years agoUse rustfix' suggestion fixing API
Pascal Hertleif [Tue, 1 May 2018 22:32:31 +0000 (00:32 +0200)]
Use rustfix' suggestion fixing API

Uses branch from <https://github.com/rust-lang-nursery/rustfix/pull/63>
until we publish a new release.

6 years agoFirst step towards rustfix compiletest mode
Pascal Hertleif [Thu, 19 Apr 2018 22:04:08 +0000 (00:04 +0200)]
First step towards rustfix compiletest mode

This is the first small step towards testing auto-fixable compiler
suggestions using compiletest. Currently, it only checks if next to a
UI test there also happens to a `*.rs.fixed` file, and then uses rustfix
(added as external crate) on the original file, and asserts that it
produces the fixed version.

To show that this works, I've included one such test. I picked this test
case at random (and because it was simple) -- It is not relevant to the
2018 edition. Indeed, in the near future, we want to be able to restrict
rustfix to edition-lints, so this test cast might go away soon.

In case you still think this is somewhat feature-complete, here's a
quick list of things currently missing that I want to add before telling
people they can use this:

- [ ] Make this an actual compiletest mode, with `test [fix] …` output
  and everything
- [ ] Assert that fixed files still compile
- [ ] Assert that fixed files produce no (or a known set of) diagnostics
  output
- [ ] Update `update-references.sh` to support rustfix
- [ ] Use a published version of rustfix (i.e.: publish a new version
  rustfix that exposes a useful API for this)

6 years agoAuto merge of #49870 - pnkfelix:issue-27282-immut-borrow-all-pat-ids-in-guards, r...
bors [Fri, 4 May 2018 15:00:13 +0000 (15:00 +0000)]
Auto merge of #49870 - pnkfelix:issue-27282-immut-borrow-all-pat-ids-in-guards, r=nikomatsakis

Immutably and implicitly borrow all pattern ids for their guards (NLL only)

This is an important piece of rust-lang/rust#27282.

It applies only to NLL mode. It is a change to MIR codegen that is currently toggled on only when NLL is turned on. It thus affect MIR-borrowck but not the earlier static analyses (such as the type checker).

This change makes it so that any pattern bindings of type T for a match arm will map to a `&T` within the context of the guard expression for that arm, but will continue to map to a `T` in the context of the arm body.

To avoid surfacing this type distinction in the user source code (which would be a severe change to the language and would also require far more revision to the compiler internals), any occurrence of such an identifier in the guard expression will automatically get a deref op applied to it.

So an input like:
```rust
let place = (1, Foo::new());
match place {
  (1, foo) if inspect(foo) => feed(foo),
  ...
}
```
will be treated as if it were really something like:
 ```rust
let place = (1, Foo::new());
match place {
    (1, Foo { .. }) if { let tmp1 = &place.1; inspect(*tmp1) }
                    => { let tmp2 = place.1; feed(tmp2) },
    ...
}
```

And an input like:
```rust
let place = (2, Foo::new());
match place {
    (2, ref mut foo) if inspect(foo) => feed(foo),
    ...
}
```
will be treated as if it were really something like:

```rust
let place = (2, Foo::new());
match place {
    (2, Foo { .. }) if { let tmp1 = & &mut place.1; inspect(*tmp1) }
                    => { let tmp2 = &mut place.1; feed(tmp2) },
    ...
}
```

In short, any pattern binding will always look like *some* kind of `&T` within the guard at least in terms of how the MIR-borrowck views it, and this will ensure that guard expressions cannot mutate their the match inputs via such bindings. (It also ensures that guard expressions can at most *copy* values from such bindings; non-Copy things cannot be moved via these pattern bindings in guard expressions, since one cannot move out of a `&T`.)

6 years agoAuto merge of #50435 - cuviper:rm-lookup_host, r=sfackler
bors [Fri, 4 May 2018 12:12:05 +0000 (12:12 +0000)]
Auto merge of #50435 - cuviper:rm-lookup_host, r=sfackler

Remove the deprecated std::net::{lookup_host,LookupHost}

These are unstable, and were deprecated by #47510, since Rust 1.25.  The
internal `sys` implementations are still kept to support the call in the
common `resolve_socket_addr`.

6 years agoUpdate mir-opt test to reflect change to MIR code-generation.
Felix S. Klock II [Fri, 4 May 2018 11:17:13 +0000 (13:17 +0200)]
Update mir-opt test to reflect change to MIR code-generation.

6 years agoAuto merge of #50409 - KiChjang:issue-50343, r=nikomatsakis
bors [Fri, 4 May 2018 08:22:13 +0000 (08:22 +0000)]
Auto merge of #50409 - KiChjang:issue-50343, r=nikomatsakis

Skip checking for unused mutable locals that have no name

Fixes #50343.

6 years agoMerge armv5te musl container with dist-various-1
Harm Berntsen [Fri, 4 May 2018 06:53:27 +0000 (08:53 +0200)]
Merge armv5te musl container with dist-various-1

6 years agoAdd eabi suffix to armv5te musl target
Harm Berntsen [Fri, 4 May 2018 06:47:24 +0000 (08:47 +0200)]
Add eabi suffix to armv5te musl target

6 years agoAuto merge of #50398 - llogiq:memchr-nano-opt, r=nagisa
bors [Fri, 4 May 2018 05:38:18 +0000 (05:38 +0000)]
Auto merge of #50398 - llogiq:memchr-nano-opt, r=nagisa

nano-optimization for memchr::repeat_byte

This replaces the multiple shifts & bitwise or with a single multiplication

In my benchmarks this performs equally well or better, especially on 64bit systems (it shaves a stable nanosecond on my skylake). This may go against conventional wisdom, but the shifts and bitwise ors cannot be pipelined because of hard data dependencies.

While it may or may not be worthwile from an optimization standpoint, it also reduces code size, so there's basically no downside.

6 years agoAuto merge of #50433 - nrc:update, r=alexcrichton
bors [Fri, 4 May 2018 02:58:37 +0000 (02:58 +0000)]
Auto merge of #50433 - nrc:update, r=alexcrichton

Update RLS and Rustfmt (and Cargo)

Updates RLS and Rustfmt (the latter fixing tests). Cargo is updated too (to fix RLS tests), but that is covered by https://github.com/rust-lang/rust/pull/50417, so probably  won't do much.

r? @alexcrichton

6 years agoUpdate RLS and Rustfmt (and Cargo)
Nick Cameron [Thu, 3 May 2018 19:53:33 +0000 (07:53 +1200)]
Update RLS and Rustfmt (and Cargo)

6 years agoAuto merge of #50397 - sgrif:sg-smaller-universe-refactorings, r=nikomatsakis
bors [Fri, 4 May 2018 00:16:41 +0000 (00:16 +0000)]
Auto merge of #50397 - sgrif:sg-smaller-universe-refactorings, r=nikomatsakis

Refactorings in preparation for the removal of the leak check

This contains all of the commits from #48407 that I was able to pull out on their own. This has most of the refactoring/ground work to unblock other work, but without the behavior changes that still need a crater run and NLL changes.

r? @nikomatsakis

6 years agoRemove the deprecated std::net::{lookup_host,LookupHost}
Josh Stone [Thu, 3 May 2018 23:24:21 +0000 (16:24 -0700)]
Remove the deprecated std::net::{lookup_host,LookupHost}

These are unstable, and were deprecated by #47510, since Rust 1.25.  The
internal `sys` implementations are still kept to support the call in the
common `resolve_socket_addr`.

6 years agoAuto merge of #50413 - kennytm:rollup, r=kennytm
bors [Thu, 3 May 2018 20:45:54 +0000 (20:45 +0000)]
Auto merge of #50413 - kennytm:rollup, r=kennytm

Rollup of 12 pull requests

Successful merges:

 - #50302 (Add query search order check)
 - #50320 (Fix invalid path generation in rustdoc search)
 - #50349 (Rename "show type declaration" to "show declaration")
 - #50360 (Clarify wordings of the `unstable_name_collision` lint.)
 - #50365 (Use two vectors in nearest_common_ancestor.)
 - #50393 (Allow unaligned reads in constants)
 - #50401 (Revert "Implement FromStr for PathBuf")
 - #50406 (Forbid constructing empty identifiers from concat_idents)
 - #50407 (Always inline simple BytePos and CharPos methods.)
 - #50416 (check if the token is a lifetime before parsing)
 - #50417 (Update Cargo)
 - #50421 (Fix ICE when using a..=b in a closure.)

Failed merges:

6 years agoRollup merge of #50320 - GuillaumeGomez:fix-search-path-generation, r=QuietMisdreavus
kennytm [Thu, 3 May 2018 20:28:00 +0000 (04:28 +0800)]
Rollup merge of #50320 - GuillaumeGomez:fix-search-path-generation, r=QuietMisdreavus

Fix invalid path generation in rustdoc search

Fixes #50311.

6 years agoFix invalid path generation in rustdoc search
Guillaume Gomez [Sun, 29 Apr 2018 19:32:53 +0000 (21:32 +0200)]
Fix invalid path generation in rustdoc search

6 years agoRollup merge of #50416 - rleungx:non-lifetime, r=estebank
kennytm [Thu, 3 May 2018 18:16:59 +0000 (02:16 +0800)]
Rollup merge of #50416 - rleungx:non-lifetime, r=estebank

check if the token is a lifetime before parsing

Fixes #50381.

6 years agoRollup merge of #50406 - ExpHP:concat-nonzero-idents, r=dtolnay
kennytm [Thu, 3 May 2018 18:16:39 +0000 (02:16 +0800)]
Rollup merge of #50406 - ExpHP:concat-nonzero-idents, r=dtolnay

Forbid constructing empty identifiers from concat_idents

The empty identifier is a [reserved identifier](https://github.com/rust-lang/rust/blob/8a37c75a3a661385cc607d934c70e86a9eaf5fd7/src/libsyntax_pos/symbol.rs#L300-L305) in rust, apparently used for black magicks like representing the crate root or somesuch... and therefore, being able to construct it is Ungood.  Presumably.

...even if the macro that lets you construct it is so useless that you can't actually do any damage with it. (and believe me, I tried)

Fixes #50403.

**Note:** I noticed that when you try to do something similar with `proc_macro::Term`, the compiler actually catches it and flags the identifier as reserved.  Perhaps a better solution would be to somehow have that same check applied here.

6 years agoRollup merge of #50421 - kennytm:fix-50415-ice-when-returning-range-inclusive-from...
kennytm [Thu, 3 May 2018 15:42:36 +0000 (23:42 +0800)]
Rollup merge of #50421 - kennytm:fix-50415-ice-when-returning-range-inclusive-from-closure, r=michaelwoerister

Fix ICE when using a..=b in a closure.

Fix #50415.

6 years agoRollup merge of #50417 - matklad:pr-50379, r=alexcrichton
kennytm [Thu, 3 May 2018 15:41:59 +0000 (23:41 +0800)]
Rollup merge of #50417 - matklad:pr-50379, r=alexcrichton

Update Cargo

This should fix RLS

cc https://github.com/rust-lang/rust/pull/50379, https://github.com/rust-lang/cargo/pull/5465

6 years agoRollup merge of #50407 - nnethercote:inline-BytePos, r=michaelwoerister
kennytm [Thu, 3 May 2018 08:11:34 +0000 (16:11 +0800)]
Rollup merge of #50407 - nnethercote:inline-BytePos, r=michaelwoerister

Always inline simple BytePos and CharPos methods.

Because they are (a) trivial, and (b) super hot.

This change speeds up most rustc-perf benchmarks, the best by 5%.

Full measurements:
```
coercions-check
avg: -3.0% min: -5.4% max: -1.3%
helloworld-check
avg: -3.9% min: -4.1% max: -3.6%
unify-linearly-check
avg: -3.1% min: -3.7% max: -2.5%
deeply-nested-check
avg: -2.6% min: -3.6% max: -2.1%
coercions-opt
avg: -2.1% min: -3.6% max: -1.3%
coercions
avg: -2.0% min: -3.5% max: -1.0%
issue-46449-check
avg: -2.8% min: -3.1% max: -2.6%
parser-check
avg: -2.6% min: -3.1% max: -2.0%
deeply-nested-opt
avg: -1.5% min: -3.0% max: -0.8%
deeply-nested
avg: -1.8% min: -2.9% max: -1.1%
issue-46449
avg: -1.4% min: -2.7% max: -1.1%
issue-46449-opt
avg: -1.0% min: -2.7% max: -0.5%
regression-31157-check
avg: -1.7% min: -2.3% max: -1.1%
tuple-stress-opt
avg: -1.0% min: -2.2% max: -0.5%
tokio-webpush-simple-check
avg: -1.6% min: -2.1% max: -1.2%
tuple-stress-check
avg: -1.2% min: -2.1% max: -0.8%
unused-warnings-check
avg: -1.6% min: -2.0% max: -1.4%
encoding-check
avg: -1.4% min: -1.8% max: -1.0%
tuple-stress
avg: -1.0% min: -1.7% max: -0.6%
encoding-opt
avg: -0.9% min: -1.6% max: -0.3%
unused-warnings
avg: -1.3% min: -1.6% max: -1.2%
unused-warnings-opt
avg: -1.3% min: -1.5% max: -1.2%
encoding
avg: -1.0% min: -1.5% max: -0.4%
html5ever-opt
avg: -0.7% min: -1.5% max: -0.3%
futures
avg: -1.0% min: -1.5% max: -0.5%
futures-check
avg: -1.0% min: -1.5% max: -0.5%
futures-opt
avg: -0.8% min: -1.4% max: -0.3%
regression-31157-opt
avg: -0.5% min: -1.4% max: -0.0%
unify-linearly-opt
avg: -1.2% min: -1.4% max: -1.0%
parser-opt
avg: -1.2% min: -1.4% max: -1.0%
helloworld
avg: -1.3% min: -1.4% max: -1.3%
helloworld-opt
avg: -1.3% min: -1.3% max: -1.3%
parser
avg: -1.2% min: -1.3% max: -1.0%
regex-check
avg: -1.1% min: -1.3% max: -0.7%
unify-linearly
avg: -1.1% min: -1.3% max: -1.0%
syn-check
avg: -0.8% min: -1.3% max: -0.3%
piston-image-check
avg: -0.7% min: -1.2% max: -0.4%
regex-opt
avg: -0.5% min: -1.2% max: -0.0%
syn
avg: -0.6% min: -1.2% max: -0.3%
hyper
avg: -0.8% min: -1.2% max: -0.4%
syn-opt
avg: -0.5% min: -1.2% max: -0.1%
regex
avg: -0.7% min: -1.2% max: -0.3%
regression-31157
avg: -0.7% min: -1.2% max: -0.3%
clap-rs-check
avg: -0.6% min: -1.1% max: -0.2%
hyper-check
avg: -0.8% min: -1.1% max: -0.5%
piston-image-opt
avg: -0.4% min: -1.1% max: -0.0%
hyper-opt
avg: -0.6% min: -1.0% max: 0.0%
inflate
avg: -0.4% min: -1.0% max: -0.2%
html5ever
avg: -0.5% min: -1.0% max: -0.2%
inflate-opt
avg: -0.3% min: -1.0% max: 0.3%
deep-vector-check
avg: -0.6% min: -1.0% max: -0.3%
style-servo-check
avg: -0.7% min: -1.0% max: -0.5%
tokio-webpush-simple-opt
avg: -0.3% min: -0.9% max: 0.0%
inflate-check
avg: -0.3% min: -0.9% max: -0.1%
piston-image
avg: -0.4% min: -0.8% max: -0.2%
deep-vector
avg: -0.4% min: -0.8% max: -0.1%
clap-rs
avg: -0.4% min: -0.7% max: -0.2%
deep-vector-opt
avg: -0.2% min: -0.7% max: 0.2%
style-servo
avg: -0.3% min: -0.7% max: 0.1%
crates.io
avg: -0.4% min: -0.6% max: -0.2%
crates.io-opt
avg: -0.3% min: -0.6% max: -0.1%
tokio-webpush-simple
avg: -0.4% min: -0.6% max: -0.3%
crates.io-check
avg: -0.4% min: -0.6% max: -0.3%
html5ever-check
avg: -0.4% min: -0.6% max: -0.2%
serde
avg: -0.1% min: -0.6% max: 0.2%
serde-check
avg: -0.1% min: -0.5% max: 0.4%
serde-opt
avg: -0.2% min: -0.5% max: -0.1%
style-servo-opt
avg: -0.2% min: -0.4% max: -0.0%
clap-rs-opt
avg: -0.1% min: -0.3% max: 0.0%

6 years agoRollup merge of #50401 - alexcrichton:remove-path-from-str, r=sfackler
kennytm [Thu, 3 May 2018 08:11:33 +0000 (16:11 +0800)]
Rollup merge of #50401 - alexcrichton:remove-path-from-str, r=sfackler

Revert "Implement FromStr for PathBuf"

This reverts commit 05a9acc3b844ff284a3e3d85dde2d9798abfb215.

The libs team was discussing https://github.com/rust-lang/rust/issues/44431 today and the changes originally added in https://github.com/rust-lang/rust/pull/48292 and the conclusion was that we'd like to revert this for now until `!` is stable. This'll provide us maximal flexibility to tweak the error type here in the future, and it looks like `!` is close-ish to stabilization so hopefully this won't be delayed for too long.

6 years agoRollup merge of #50393 - oli-obk:packed_const_panic, r=eddyb
kennytm [Thu, 3 May 2018 08:11:32 +0000 (16:11 +0800)]
Rollup merge of #50393 - oli-obk:packed_const_panic, r=eddyb

Allow unaligned reads in constants

fixes #50356

introduced in https://github.com/rust-lang/rust/pull/49513

6 years agoRollup merge of #50365 - nnethercote:nearest_common_ancestor-two-vecs, r=nikomatsakis
kennytm [Thu, 3 May 2018 08:11:31 +0000 (16:11 +0800)]
Rollup merge of #50365 - nnethercote:nearest_common_ancestor-two-vecs, r=nikomatsakis

Use two vectors in nearest_common_ancestor.

When looking at any scope in scope chain A, we only need to look for
matches among scopes previously seen in scope chain B, and vice versa.
This halves the number of "seen before?" comparisons, speeding up some
runs of style-servo, clap-rs, and syn by 1--2%.

Thanks to @kirillkh for the suggestion.

r? @nikomatsakis

6 years agoRollup merge of #50360 - kennytm:fix-50232-clarify-unstable-name-collision, r=nikomat...
kennytm [Thu, 3 May 2018 08:11:30 +0000 (16:11 +0800)]
Rollup merge of #50360 - kennytm:fix-50232-clarify-unstable-name-collision, r=nikomatsakis

Clarify wordings of the `unstable_name_collision` lint.

Stabilizing an inherent method may cause change in behavior instead of inference error. Updated to use the wording from [varkor's comment].

Closes #50232.

[varkor's comment]: https://github.com/rust-lang/rust/issues/50232#issuecomment-384678097

6 years agoRollup merge of #50349 - GuillaumeGomez:rename-type-declaration-label, r=estebank
kennytm [Thu, 3 May 2018 08:11:29 +0000 (16:11 +0800)]
Rollup merge of #50349 - GuillaumeGomez:rename-type-declaration-label, r=estebank

Rename "show type declaration" to "show declaration"

Fixes #50347.

r? @QuietMisdreavus

6 years agoAdd armv5te-unknown-linux-musl target
Harm Berntsen [Thu, 3 May 2018 12:35:59 +0000 (14:35 +0200)]
Add armv5te-unknown-linux-musl target

6 years agoFix issue #50415.
kennytm [Thu, 3 May 2018 14:36:44 +0000 (22:36 +0800)]
Fix issue #50415.

6 years agoUpdate Cargo
Aleksey Kladov [Thu, 3 May 2018 11:17:58 +0000 (14:17 +0300)]
Update Cargo

6 years agorustdoc: Resolve nested `impl Trait`s
Shotaro Yamada [Thu, 3 May 2018 13:24:50 +0000 (22:24 +0900)]
rustdoc: Resolve nested `impl Trait`s

6 years agoAvoid many `cmt` allocations.
Nicholas Nethercote [Wed, 2 May 2018 00:28:37 +0000 (10:28 +1000)]
Avoid many `cmt` allocations.

`cmt` is a ref-counted wrapper around `cmt_` The use of refcounting
keeps `cmt` handling simple, but a lot of `cmt` instances are very
short-lived, and heap-allocating the short-lived ones takes up time.

This patch changes things in the following ways.

- Most of the functions that produced `cmt` instances now produce `cmt_`
  instances. The `Rc::new` calls that occurred within those functions
  now occur at their call sites (but only when necessary, which isn't
  that often).

- Many of the functions that took `cmt` arguments now take `&cmt_`
  arguments. This includes all the methods in the `Delegate` trait.

As a result, the vast majority of the heap allocations are avoided. In
an extreme case, the number of calls to malloc in tuple-stress drops
from 9.9M to 7.9M, a drop of 20%. And the compile times for many runs of
coercions, deep-vector, and tuple-stress drop by 1--2%.

6 years agoUnit test for the new implicit borrow and deref within the
Felix S. Klock II [Tue, 10 Apr 2018 12:33:24 +0000 (14:33 +0200)]
Unit test for the new implicit borrow and deref within the
guard expressions of matches (activated only when using
new NLL mode).

Review feedback: removed 27282 from filename. (The test still
references it in a relevant comment in the file itself so that seemed
like a reasonable compromise.)

6 years agoWhen using NLL, implicitly borrow match bindings for any guard,
Felix S. Klock II [Mon, 26 Feb 2018 14:45:13 +0000 (15:45 +0100)]
When using NLL, implicitly borrow match bindings for any guard,
deref'ing such borrows within that guard.

Review feedback: Add comment noting a point where we may or may not
need to add a cast when we finish the work on rust-lang/rust#27282.

Review feedback: Pass a newtype'd `ArmHasGuard` rather than a raw boolean.

Review feedback: toggle "ref binding in guards" semantics via specific
method. (This should ease a follow-up PR that just unconditionally
adopts the new semantics.)

6 years agoInstrument `statement_effect_on_borrows` for the `lhs = &place` case.
Felix S. Klock II [Mon, 5 Mar 2018 15:54:20 +0000 (16:54 +0100)]
Instrument `statement_effect_on_borrows` for the `lhs = &place` case.

6 years agoImprove instrumentation for the bug reported during `fn report_borrowed_value_does_no...
Felix S. Klock II [Mon, 5 Mar 2018 15:55:27 +0000 (16:55 +0100)]
Improve instrumentation for the bug reported during `fn report_borrowed_value_does_not_live_long_enough`.

6 years agoInclude the test name when reporting that an expected line was not found in a mir...
Felix S. Klock II [Mon, 26 Feb 2018 13:46:43 +0000 (14:46 +0100)]
Include the test name when reporting that an expected line was not found in a mir-opt test.

6 years agoAuto merge of #50030 - flip1995:rfc2103, r=petrochenkov
bors [Thu, 3 May 2018 11:52:03 +0000 (11:52 +0000)]
Auto merge of #50030 - flip1995:rfc2103, r=petrochenkov

Implement tool_attributes feature (RFC 2103)

cc #44690

This is currently just a rebased and compiling (hopefully) version of #47773.

Let's see if travis likes this. I will add the implementation for `tool_lints` this week.

6 years agocheck if the token is a lifetime before parsing
rleungx [Thu, 3 May 2018 11:09:34 +0000 (19:09 +0800)]
check if the token is a lifetime before parsing

6 years agoupdate concat_idents doc stubs
Michael Lamparski [Thu, 3 May 2018 10:49:30 +0000 (06:49 -0400)]
update concat_idents doc stubs

6 years agoRollup merge of #50302 - GuillaumeGomez:add-query-search-order-check, r=QuietMisdreavus
kennytm [Thu, 3 May 2018 08:11:26 +0000 (16:11 +0800)]
Rollup merge of #50302 - GuillaumeGomez:add-query-search-order-check, r=QuietMisdreavus

Add query search order check

Fixes #50180.

r? @QuietMisdreavus

6 years agoAuto merge of #50391 - nnethercote:escape_unicode, r=eddyb
bors [Thu, 3 May 2018 08:06:08 +0000 (08:06 +0000)]
Auto merge of #50391 - nnethercote:escape_unicode, r=eddyb

Use escape_default() for strings in LitKind::token().

This avoids converting every char to \u{...} form, which bloats the
resulting strings unnecessarily. It also provides consistency with the
existing escape_default() calls in LitKind::token() used for raw
string literals, char literals, and raw byte char literals.

There are two benefits from this change.

- Compilation is faster. Most of the rustc-perf benchmarks see a
  non-trivial speedup, particularly for incremental rebuilds, with the
  best speedup over 13%, and multiple others over 10%.

- Generated rlibs are smaller. An extreme example is libfutures.rlib,
  which shrinks from 2073306 bytes to 1765927 bytes, a 15% reduction.

r? @jseyfried

<details><summary>Here are full numbers for all the rustc-perf runs where the improvement was > 1%.</summary>

```
regex-check
avg: -11.1% min: -13.4% max: -5.5%
futures-check
avg: -7.6% min: -11.4% max: -3.5%
futures-opt
avg: -6.3% min: -10.3% max: -2.3%
futures
avg: -6.6% min: -10.3% max: -2.8%
regex-opt
avg: -4.7% min: -10.2% max: -0.4%
regex
avg: -5.3% min: -10.2% max: -1.2%
hyper-check
avg: -4.8% min: -6.6% max: -2.7%
encoding-check
avg: -4.1% min: -5.5% max: -2.5%
issue-46449-check
avg: -4.7% min: -5.2% max: -4.1%
clap-rs-check
avg: -2.9% min: -5.2% max: -1.1%
hyper
avg: -3.0% min: -5.1% max: -0.8%
parser-check
avg: -4.2% min: -4.9% max: -3.2%
hyper-opt
avg: -2.6% min: -4.9% max: -0.3%
encoding-opt
avg: -2.3% min: -4.6% max: -0.5%
encoding
avg: -2.5% min: -4.4% max: -0.6%
issue-46449
avg: -2.3% min: -4.4% max: -1.8%
issue-46449-opt
avg: -1.7% min: -4.3% max: -0.9%
clap-rs-opt
avg: -1.6% min: -4.2% max: -0.2%
serde-check
avg: -1.4% min: -4.1% max: -0.2%
clap-rs
avg: -1.6% min: -3.9% max: -0.7%
unify-linearly-check
avg: -3.2% min: -3.7% max: -2.7%
serde
avg: -1.1% min: -3.5% max: -0.1%
regression-31157-check
avg: -2.6% min: -3.4% max: -1.6%
helloworld-check
avg: -2.5% min: -3.4% max: -0.6%
serde-opt
avg: -1.3% min: -3.3% max: -0.5%
tokio-webpush-simple-check
avg: -2.4% min: -3.2% max: -1.8%
piston-image-check
avg: -1.7% min: -3.2% max: -0.9%
deeply-nested-opt
avg: -1.5% min: -3.0% max: -0.6%
deeply-nested-check
avg: -1.9% min: -2.9% max: -0.4%
deeply-nested
avg: -1.9% min: -2.9% max: -1.2%
syn-check
avg: -1.8% min: -2.8% max: -0.6%
coercions
avg: -0.5% min: -2.8% max: 0.4%
syn-opt
avg: -0.9% min: -2.4% max: -0.1%
syn
avg: -1.1% min: -2.2% max: -0.3%
parser-opt
avg: -1.9% min: -2.1% max: -1.6%
parser
avg: -1.9% min: -2.1% max: -1.6%
style-servo-check
avg: -1.3% min: -2.0% max: -0.8%
regression-31157-opt
avg: -0.8% min: -2.0% max: 0.0%
piston-image
avg: -0.7% min: -1.8% max: -0.2%
piston-image-opt
avg: -0.6% min: -1.8% max: -0.0%
regression-31157
avg: -1.0% min: -1.7% max: -0.3%
html5ever-opt
avg: -0.6% min: -1.5% max: -0.1%
unify-linearly-opt
avg: -1.3% min: -1.5% max: -1.1%
unify-linearly
avg: -1.3% min: -1.4% max: -1.2%
tokio-webpush-simple-opt
avg: -0.4% min: -1.2% max: -0.0%
helloworld-opt
avg: -1.0% min: -1.1% max: -0.6%
helloworld
avg: -1.0% min: -1.1% max: -0.7%
inflate-opt
avg: -0.3% min: -1.1% max: 0.1%
html5ever-check
avg: -0.6% min: -1.0% max: -0.3%
inflate-check
avg: -0.3% min: -1.0% max: -0.1%
```

</details>

6 years agoAuto merge of #50378 - varkor:repr-align-max-29, r=eddyb
bors [Thu, 3 May 2018 05:38:11 +0000 (05:38 +0000)]
Auto merge of #50378 - varkor:repr-align-max-29, r=eddyb

Reduce maximum repr(align(N)) to 2^29

The current maximum `repr(align(N))` alignment is larger than the maximum alignment accepted by LLVM, which can cause issues for huge values of `N`, as seen in #49492. Fixes #49492.

r? @rkruppe

6 years agoSkip checking for unused mutable locals that have no name
Keith Yeung [Mon, 30 Apr 2018 22:31:37 +0000 (15:31 -0700)]
Skip checking for unused mutable locals that have no name

6 years agoadd missing output for ui test
Michael Lamparski [Thu, 3 May 2018 04:25:14 +0000 (00:25 -0400)]
add missing output for ui test

6 years agoAlways inline simple BytePos and CharPos methods.
Nicholas Nethercote [Wed, 2 May 2018 23:12:26 +0000 (09:12 +1000)]
Always inline simple BytePos and CharPos methods.

Because they are (a) trivial, and (b) super hot.

This change speeds up most rustc-benchmarks, the best by 5%.

6 years agoforbid empty identifiers from concat_idents
Michael Lamparski [Thu, 3 May 2018 00:51:39 +0000 (20:51 -0400)]
forbid empty identifiers from concat_idents

6 years agoAuto merge of #50369 - pftbest:unicode, r=SimonSapin
bors [Thu, 3 May 2018 02:01:04 +0000 (02:01 +0000)]
Auto merge of #50369 - pftbest:unicode, r=SimonSapin

Fix a warning in libcore on 16bit targets.

This code is assuming that usize >= 32bits, but it is not the case on
16bit targets. It is producing a warning that can fail the compilation
on MSP430 if deny(warnings) is enabled.
It is very unlikely that someone would actually use this code on
a microcontroller, but since unicode was merged into libcore we
have to compile it on 16bit targets.

I've tried to make sure that the code stays the same on x86,
here is an assembly comparison: https://godbolt.org/g/wFw7dZ

r? @SimonSapin

6 years agoRemove parse::escape_default().
Nicholas Nethercote [Wed, 2 May 2018 22:55:58 +0000 (08:55 +1000)]
Remove parse::escape_default().

str::escape_default() can be used instead.

6 years agoUse escape_default() for strings in LitKind::token().
Nicholas Nethercote [Wed, 2 May 2018 01:50:21 +0000 (11:50 +1000)]
Use escape_default() for strings in LitKind::token().

This avoids converting every char to \u{...} form, which bloats the
resulting strings unnecessarily. It also provides consistency with the
existing escape_default() calls in LitKind::token() used for raw
string literals, char literals, and raw byte char literals.

There are two benefits from this change.

- Compilation is faster. Most of the rustc-perf benchmarks see a
  non-trivial speedup, particularly for incremental rebuilds, with the
  best speedup over 13%, and multiple others over 10%.

- Generated rlibs are smaller. An extreme example is libfutures.rlib,
  which shrinks from 2073306 bytes to 1765927 bytes, a 15% reduction.

6 years agoRevert "Implement FromStr for PathBuf"
Alex Crichton [Wed, 2 May 2018 23:39:54 +0000 (16:39 -0700)]
Revert "Implement FromStr for PathBuf"

This reverts commit 05a9acc3b844ff284a3e3d85dde2d9798abfb215.

6 years agonano-optimization for memchr::repeat_byte
Andre Bogus [Wed, 2 May 2018 21:53:40 +0000 (23:53 +0200)]
nano-optimization for memchr::repeat_byte

6 years agoAdd a comment explaining unification w/ universes
Sean Griffin [Wed, 2 May 2018 21:02:11 +0000 (15:02 -0600)]
Add a comment explaining unification w/ universes

6 years agoAuto merge of #50355 - petrochenkov:50187, r=oli-obk
bors [Wed, 2 May 2018 20:33:31 +0000 (20:33 +0000)]
Auto merge of #50355 - petrochenkov:50187, r=oli-obk

Fix an unresolved import issue with enabled `use_extern_macros`

This is a kinda ugly special-purpose solution that will break if we suddenly add a fourth namespace, but I hope to come up with something more general if I get to import resolution refactoring this summer.

Fixes https://github.com/rust-lang/rust/issues/50187 thus removing a blocker for stabilization of `use_extern_macros`

6 years agoFix rebase issues
Sean Griffin [Wed, 2 May 2018 17:52:18 +0000 (11:52 -0600)]
Fix rebase issues

6 years agoAuto merge of #50354 - varkor:initial-field-alignment-c-int, r=eddyb
bors [Wed, 2 May 2018 17:02:25 +0000 (17:02 +0000)]
Auto merge of #50354 - varkor:initial-field-alignment-c-int, r=eddyb

Correct initial field alignment for repr(C)/repr(int)

Fixes #50098 following https://github.com/rust-lang/rust/issues/50098#issuecomment-385497333.

(I wasn't sure which kind of test was best suited here — I picked run-pass simply because that was convenient, but if codegen is more appropriate, let me know and I'll change it.)

r? @eddyb

6 years agotrack skol levels in the InferCtxt rather than via counter
Sean Griffin [Thu, 8 Feb 2018 21:12:32 +0000 (14:12 -0700)]
track skol levels in the InferCtxt rather than via counter

6 years agoWrap `InferCtxt::universe` in a cell
Sean Griffin [Thu, 8 Feb 2018 20:14:24 +0000 (13:14 -0700)]
Wrap `InferCtxt::universe` in a cell

We'll need this in order to start tracking skolemizatoins here, and it's
easier to update all the field accesses now rather than later.

6 years agoFix rebase issues
Sean Griffin [Wed, 2 May 2018 14:28:42 +0000 (08:28 -0600)]
Fix rebase issues

6 years agoAllow unaligned reads in constants
Oliver Schneider [Wed, 2 May 2018 10:30:45 +0000 (12:30 +0200)]
Allow unaligned reads in constants

6 years agogive a universe to region variables
Sean Griffin [Wed, 7 Feb 2018 19:22:47 +0000 (12:22 -0700)]
give a universe to region variables

6 years agostore RegionVariableInfo and not just RegionVariableOrigin
Sean Griffin [Wed, 7 Feb 2018 18:47:57 +0000 (11:47 -0700)]
store RegionVariableInfo and not just RegionVariableOrigin

6 years agochange skolemizations to use universe index
Sean Griffin [Wed, 7 Feb 2018 18:17:31 +0000 (11:17 -0700)]
change skolemizations to use universe index

This is sort of confusing "side step". All it does is to change the
representation of a skolemized region. but the source of that universe
index is not the inference context, which is what we eventually want,
but rather an internal counter in the region inference context.

We'll patch that up later. But doing this now ought to help with
confusing diffs later.

6 years agoadd universes to type inference variables
Sean Griffin [Wed, 7 Feb 2018 17:27:42 +0000 (10:27 -0700)]
add universes to type inference variables

This gives each type inference variable a notion of universe but doesn't
do anything with it. We can always get the "current universe" from
infer_ctxt. This relies on the property of type variables that they can
never interact with siblings.

6 years agointroduce `UniverseIndex` into `InferCtxt`
Sean Griffin [Wed, 7 Feb 2018 17:16:44 +0000 (10:16 -0700)]
introduce `UniverseIndex` into `InferCtxt`

Always using root environment for now.

6 years agoAuto merge of #49943 - pnkfelix:fix-issue-49918, r=nikomatsakis
bors [Wed, 2 May 2018 12:20:31 +0000 (12:20 +0000)]
Auto merge of #49943 - pnkfelix:fix-issue-49918, r=nikomatsakis

Treat generators as if they have an arbitrary destructor

Conservatively assume dropping a generator touches its upvars, via locals' destructors.

Fix #49918

6 years agoAuto merge of #50339 - nnethercote:lazy-Printer-buf, r=michaelwoerister
bors [Wed, 2 May 2018 10:13:11 +0000 (10:13 +0000)]
Auto merge of #50339 - nnethercote:lazy-Printer-buf, r=michaelwoerister

Extend Printer::buf on demand.

So that 55 entries (at 48 bytes each) don't need to be eagerly
initialized on creation.

This speeds up numerous rust-perf benchmark runs, by up to 3%.
```
crates.io-check
        avg: -2.4%      min: -3.7%      max: -1.1%
encoding-check
        avg: -2.1%      min: -2.9%      max: -1.2%
crates.io-opt
        avg: -1.3%      min: -2.7%      max: -0.1%
crates.io
        avg: -1.4%      min: -2.7%      max: -0.3%
encoding-opt
        avg: -1.1%      min: -2.5%      max: 0.1%
encoding
        avg: -1.3%      min: -2.4%      max: -0.3%
hyper-check
        avg: -1.7%      min: -2.3%      max: -0.9%
regex-check
        avg: -1.5%      min: -1.9%      max: -0.7%
piston-image-check
        avg: -0.9%      min: -1.8%      max: -0.5%
hyper
        avg: -1.0%      min: -1.7%      max: -0.3%
hyper-opt
        avg: -0.9%      min: -1.7%      max: -0.1%
syn-check
        avg: -1.0%      min: -1.5%      max: -0.6%
clap-rs
        avg: -0.3%      min: -1.5%      max: 0.2%
regex-opt
        avg: -0.6%      min: -1.5%      max: -0.0%
regression-31157-check
        avg: -1.1%      min: -1.4%      max: -0.7%
regex
        avg: -0.7%      min: -1.3%      max: -0.1%
clap-rs-check
        avg: -0.5%      min: -1.2%      max: 0.1%
syn-opt
        avg: -0.5%      min: -1.1%      max: -0.1%
syn
        avg: -0.5%      min: -1.1%      max: -0.2%
serde-opt
        avg: -0.3%      min: -1.1%      max: 0.1%
piston-image-opt
        avg: -0.4%      min: -1.1%      max: -0.0%
piston-image
        avg: -0.4%      min: -1.0%      max: -0.0%
```

6 years agofix tests
flip1995 [Tue, 24 Apr 2018 14:57:41 +0000 (16:57 +0200)]
fix tests

6 years agomake it compile again
flip1995 [Tue, 17 Apr 2018 13:33:39 +0000 (15:33 +0200)]
make it compile again

6 years agoFix failures in rustdoc
Seiichi Uchida [Sun, 4 Feb 2018 07:00:24 +0000 (16:00 +0900)]
Fix failures in rustdoc

6 years agoChange Attribute::name to return the last segment
Seiichi Uchida [Sun, 4 Feb 2018 06:36:26 +0000 (15:36 +0900)]
Change Attribute::name to return the last segment

And fix some typos

6 years agoAdd tool_attributes feature to unstable book
Seiichi Uchida [Tue, 30 Jan 2018 10:29:11 +0000 (19:29 +0900)]
Add tool_attributes feature to unstable book

6 years agoGate tool_attributes feature
Seiichi Uchida [Tue, 30 Jan 2018 10:28:55 +0000 (19:28 +0900)]
Gate tool_attributes feature

6 years agoRemove Option from the return type of Attribute::name()
Seiichi Uchida [Tue, 30 Jan 2018 05:53:01 +0000 (14:53 +0900)]
Remove Option from the return type of Attribute::name()

6 years agoAllow Path for name of MetaItem
Seiichi Uchida [Tue, 30 Jan 2018 05:30:39 +0000 (14:30 +0900)]
Allow Path for name of MetaItem

6 years agoAdd tests for a new feature 'tool_attributes'
Seiichi Uchida [Tue, 30 Jan 2018 04:12:37 +0000 (13:12 +0900)]
Add tests for a new feature 'tool_attributes'

6 years agoAuto merge of #50329 - Zoxc:opt-3, r=alexcrichton
bors [Wed, 2 May 2018 07:50:23 +0000 (07:50 +0000)]
Auto merge of #50329 - Zoxc:opt-3, r=alexcrichton

Set opt-level to 3

r? @alexcrichton

6 years agoAuto merge of #50282 - fitzgen:run-more-passes-on-constant-mir, r=nikomatsakis
bors [Wed, 2 May 2018 05:22:29 +0000 (05:22 +0000)]
Auto merge of #50282 - fitzgen:run-more-passes-on-constant-mir, r=nikomatsakis

Run more passes on constant mir

Not very familiar with this code, but everything seems to be working!

r? @eddyb

6 years agoAuto merge of #50278 - eddyb:mir-succ-iter, r=nikomatsakis
bors [Wed, 2 May 2018 02:10:51 +0000 (02:10 +0000)]
Auto merge of #50278 - eddyb:mir-succ-iter, r=nikomatsakis

rustc: return iterators from Terminator(Kind)::successors(_mut).

Minor cleanup (and potentially speedup) prompted by @nnethercote's `SmallVec` experiments.
This PR assumes `.count()` and `.nth(i)` on `iter::Chain<option::IntoIter, slice::Iter(Mut)>` are `O(1)`, but otherwise all of the uses appear to immediately iterate through the successors.

r? @nikomatsakis