Commit Graph

95395 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
543c4648bd
Rollup merge of #62062 - ecstatic-morse:dataflow-order, r=nagisa
Use a more efficient iteration order for forward dataflow

Currently, dataflow begins by visiting each block in order of ID (`BasicBlock(0)`, `BasicBlock(1)`, etc.). This PR changes that initial iteration to reverse post-order (see [this blog post](https://eli.thegreenplace.net/2015/directed-graph-traversal-orderings-and-applications-to-data-flow-analysis/#data-flow-analysis) for more info). This ensures that the effects of all predecessors will be applied before a basic block is visited if the CFG has no back-edges, and should result in less total iterations even when back-edges exist. This should not change the results of dataflow analysis.

The current ordering for basic blocks may be pretty close to RPO already--`BasicBlock(0)` is already the start block--in which case the cost of doing the traversal up front will outweigh the efficiency gains.
A perf run is needed to check this.

r? @pnkfelix (I think).
2019-06-30 21:57:22 +02:00
bors
0af8e872ea Auto merge of #59722 - Zoxc:query-cache, r=eddyb
Clean up query cache code

There are a couple of queries for which we do not promote saved results, which have been removed from caching here. This was likely the cause of the regression in https://github.com/rust-lang/rust/pull/57293#issuecomment-476421298.

r? @michaelwoerister
2019-06-30 12:15:14 +00:00
John Kåre Alsaker
ede41ab4d6 Keep caching for non-promoted queries 2019-06-30 11:18:44 +02:00
John Kåre Alsaker
930ad86e3d Clean up query cache code 2019-06-30 11:18:44 +02:00
bors
c06f80a3c6 Auto merge of #61252 - indygreg:upgrade-musl, r=alexcrichton
Update musl to 1.1.22

This is the latest available version. I noticed Rust wasn't using the
latest version when I attempted to have Cargo link object files produced
outside of Cargo / Rust's toolchain and was getting missing symbol
errors. Those missing symbols were added in 1.1.21 and 1.1.22.

I'm not fully sure of the implications of this change or how
comprehensive the test coverage is. Upstream changes in 1.1.21 and
1.1.22 can be found at
https://git.musl-libc.org/cgit/musl/tree/WHATSNEW?h=v1.1.22&id=e97681d6f2c44bf5fa9ecdd30607cb63c780062e#n1989.
2019-06-30 08:42:58 +00:00
bors
3467e2120c Auto merge of #61767 - JohnTitor:update-smallvec, r=nikomatsakis
Update new_debug_unreachable

In latest master, smallvec has been updated. So we only update new_debug_unreachable to remove unmaintained dependencies.
2019-06-30 05:21:51 +00:00
bors
fd7f48b3ef Auto merge of #61459 - GuillaumeGomez:fix-rustdoc-sysroot-panic, r=ollie27,bjorn3,QuietMisdreavus
Prevent panic when sysroot cannot be computed

Fixes #61377.

cc @rotty @rust-lang/rustdoc

r? @Manishearth
2019-06-30 01:44:44 +00:00
bors
9a90d03ad1 Auto merge of #62226 - Centril:rollup-rcy1alx, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #61199 (Revert "Set test flag when rustdoc is running with --test option" )
 - #61755 (Add `--pass $mode` to compiletest through `./x.py`)
 - #61818 (Issue #60709 test)
 - #62023 (publish_toolstate: don't use 'new' from inside the loop)
 - #62104 (Inform the query system about properties of queries at compile time)
 - #62163 (Avoid mem::uninitialized() in std::sys::unix)
 - #62204 (doc(libcore) Fix CS)

Failed merges:

r? @ghost
2019-06-29 11:45:11 +00:00
Mazdak Farrokhzad
38801ce5d0
Rollup merge of #62204 - Hywan:patch-2, r=rkruppe
doc(libcore) Fix CS

A small PR to fix a small CS typo in `iter/traits/collect.rs`.
2019-06-29 11:18:14 +02:00
Mazdak Farrokhzad
75edfe204b
Rollup merge of #62163 - cuviper:unix-uninit, r=RalfJung
Avoid mem::uninitialized() in std::sys::unix

For `libc` types that will be initialized in FFI calls, we can just use
`MaybeUninit` and then pass around raw pointers.

For `sun_path_offset()`, which really wants `offset_of`, all callers
have a real `sockaddr_un` available, so we can use that reference.

r? @RalfJung
2019-06-29 11:18:13 +02:00
Mazdak Farrokhzad
94a066e229
Rollup merge of #62104 - Zoxc:query-info, r=eddyb
Inform the query system about properties of queries at compile time
2019-06-29 11:18:11 +02:00
Mazdak Farrokhzad
a4cf85e958
Rollup merge of #62023 - RalfJung:miri-toolstate, r=kennytm
publish_toolstate: don't use 'new' from inside the loop

I think I made a mistake in https://github.com/rust-lang/rust/pull/61938 by using `new` outside the inner loop. This PR fixes that.

However, no issue got created at all for https://github.com/rust-lang/rust/pull/62003#issuecomment-504356964, and I don't know why that is.   The script should be [triggered by Traivs](56a12b2ad0/.travis.yml (L240)), and I can find no trace of that in [the build log](https://travis-ci.com/rust-lang/rust/jobs/209880042).
2019-06-29 11:18:10 +02:00
Mazdak Farrokhzad
2238a94b96
Rollup merge of #61818 - tmandry:issue-60709-test, r=cramertj
Issue #60709 test

Adds a test for #60709, which was fixed as part of #59897.

r? @cramertj
2019-06-29 11:18:08 +02:00
Mazdak Farrokhzad
0721364f0d
Rollup merge of #61755 - Centril:compiletest-force-check, r=petrochenkov
Add `--pass $mode` to compiletest through `./x.py`

Adds a flag `--pass $mode` to compiletest, which is exposed through `./x.py`.

When `--pass $mode` is passed, `{check,build,compile,run}-pass` tests will be forced to run under the given `$mode` unless the directive `// ignore-pass` exists in the test file.

The modes are explained in https://github.com/rust-lang/rust/pull/61778:
- `check` has the same effect as `cargo check`
- `build` or `compile` have the same effect as `cargo build`
- `run` has the same effect as `cargo run`

On my machine, `./x.py -i test src/test/run-pass --stage 1 --pass check` takes 38 seconds whereas it takes 2 min 7 seconds without `--pass check`.

cc https://github.com/rust-lang/rust/issues/61712

r? @petrochenkov
2019-06-29 11:18:07 +02:00
Mazdak Farrokhzad
6c0ab739fb
Rollup merge of #61199 - ollie27:rustdoc_cfg_test, r=QuietMisdreavus
Revert "Set test flag when rustdoc is running with --test option"

Reverts https://github.com/rust-lang/rust/pull/59940.

It caused doctests in this repository to no longer be tested including all of the core crate.
2019-06-29 11:18:06 +02:00
bors
8ec39423dd Auto merge of #62105 - JohnTitor:update-miri, r=RalfJung
Update miri

Fixes #62101

r? @RalfJung
2019-06-29 05:05:32 +00:00
Tyler Mandry
b7397cc00b Move async-fn-size test to async-await/ 2019-06-28 15:31:19 -07:00
Tyler Mandry
65021ec928 Add regression test for #60709
Closes #60709.
2019-06-28 15:31:19 -07:00
bors
433a467815 Auto merge of #62192 - Centril:rollup-kssnlta, r=Centril
Rollup of 16 pull requests

Successful merges:

 - #61878 (improve pinning projection docs)
 - #62043 (Remove `FnBox`)
 - #62067 (Add suggestion for missing `.await` keyword)
 - #62076 (Updated RELEASES.md for 1.36.0)
 - #62102 (call out explicitly that general read needs to be called with an initialized buffer)
 - #62106 (Add more tests for async/await)
 - #62124 (refactor lexer to use idiomatic borrowing)
 - #62131 (libsyntax: Fix some Clippy warnings)
 - #62152 (Don't ICE on item in `.await` expression)
 - #62154 (Remove old fixme)
 - #62155 (Add regression test for MIR drop generation in async loops)
 - #62156 (Update books)
 - #62160 (Remove outdated question_mark_macro_sep lint)
 - #62164 (save-analysis: use buffered writes)
 - #62171 (rustc: Retry SIGILL linker invocations)
 - #62176 (Update RLS)

Failed merges:

r? @ghost
2019-06-28 14:08:07 +00:00
Ivan Enderlin
643ae635e9
doc(libcore) Fix CS
A small PR to fix a small CS typo in `iter/traits/collect.rs`.
2019-06-28 14:01:58 +02:00
bors
3849a5f83b Auto merge of #62179 - alexcrichton:less-travis-appveyor, r=pietroalbini
ci: Move most builders to Azure Pipelines

This commit disables all builders on Travis and almost all builders on
AppVeyor now that they're all running on Azure Pipelines. There is one
remaining builder on AppVeyor which hasn't been migrated yet due to a
test failure on Azure, which we'll be debugging soon. One remaining
builder is left on Travis which is the tools builder whenever a
submodule is changed, but we'll probably turn that off soon since it's
just for PRs.

The other major change in this PR is that the auto builders on Azure are
now configured with "real" prod credentials which should cause them to
publish all artifacts into the official CI buckets.
2019-06-28 10:20:36 +00:00
Alex Crichton
6f838b4d4a ci: Move most builders to Azure Pipelines
This commit disables all builders on Travis and almost all builders on
AppVeyor now that they're all running on Azure Pipelines. There is one
remaining builder on AppVeyor which hasn't been migrated yet due to a
test failure on Azure, which we'll be debugging soon. One remaining
builder is left on Travis which is the tools builder whenever a
submodule is changed, but we'll probably turn that off soon since it's
just for PRs.

The other major change in this PR is that the auto builders on Azure are
now configured with "real" prod credentials which should cause them to
publish all artifacts into the official CI buckets.
2019-06-28 00:41:05 -07:00
Mazdak Farrokhzad
65f1ff41d2
Rollup merge of #62176 - Xanewok:update-rls, r=alexcrichton
Update RLS

Merged PRs:
* fix(cmd): make clear_env_rust_log default to false (https://github.com/rust-lang/rls/pull/1486)
  - Retain `RUST_LOG` in `rls --cli` mode
* Pass --file-lines to rustfmt only if specified (https://github.com/rust-lang/rls/pull/1497)
  - Fix entire-file formatting when using external rustfmt (specified via `rustfmt_path` config)
* Ensure that --error-format is only passed once to `rustc` (https://github.com/rust-lang/rls/pull/1500)
  - Unbreaks RLS when used together with Cargo [pipelining build](https://github.com/rust-lang/rust/issues/60988) feature (@alexcrichton I'd consider this a stabilization blocker, mind adding it to the tracking issue for the record? 🙇‍♂️ )
2019-06-27 23:01:20 +02:00
Mazdak Farrokhzad
d6fd059461
Rollup merge of #62171 - alexcrichton:more-restarts, r=eddyb
rustc: Retry SIGILL linker invocations

We've seen quite a few issues with spurious illegal instructions getting
executed on OSX on CI recently. For whatever reason `cc` itself is
executing an illegal instruction and we're not really getting any other
information about what's happening. Since we're already retrying the
linker when it segfaults, let's just continue to retry everything and
automatically reinvoke the linker when it fails with an illegal instruction.
2019-06-27 23:01:18 +02:00
Mazdak Farrokhzad
dec2c8bd16
Rollup merge of #62164 - jsgf:buffer-save-analysis, r=Xanewok
save-analysis: use buffered writes

Otherwise it ends up writing the file byte at a time, which can be very slow for large outputs.

cc @ljw1004
2019-06-27 23:01:17 +02:00
Mazdak Farrokhzad
fdf75af730
Rollup merge of #62160 - ia0:question_mark_macro_sep, r=petrochenkov
Remove outdated question_mark_macro_sep lint
2019-06-27 23:01:15 +02:00
Mazdak Farrokhzad
766795fe5a
Rollup merge of #62156 - ehuss:update-books, r=ehuss
Update books

Update nomicon, reference, book, rust-by-example, rustc-guide

## nomicon

2 commits in c656171b749b7307f21371dd0d3278efee5573b8..341c221116a8b9f1010cf1eece952b80c5ec7f54
2019-04-25 15:31:26 -0400 to 2019-06-19 09:08:47 -0700
- Fix some links.
- cleanup the intro, and clarify how it relates to the reference (rust-lang-nursery/nomicon#140)

## reference

2 commits in 08ae27a4921ca53967656a7391c82f6c0ddd1ccc..7a5aab5fd50d6290679beb4cf42fa5f46ed22aec
2019-06-17 11:24:13 -0700 to 2019-06-20 17:38:52 +0200
- Update for cfg on generic parameter. (rust-lang-nursery/reference#624)
- Link to "const functions" section from constant expressions list (rust-lang-nursery/reference#623)

## book

2 commits in 9aacfcc4c5b102c8cda195932addefd32fe955d2..6c0d83499c8e77e06a71d28c5e1adccec278d4f3
2019-06-16 21:27:26 -0400 to 2019-06-23 20:25:30 -0400
- fancy quotes
- Edits made in copyedit

## rust-by-example

2 commits in b27472962986e85c94f4183b1a6d2207660d3ed6..62b3ff2cb44dd8b648c3ef2a9347c3706d148014
2019-06-17 15:52:07 -0300 to 2019-06-24 09:17:21 -0300
- A couple of fixes for the `Box, stack and heap` chapter. (rust-lang/rust-by-example#1206)
- [typo] Note, that it is -> Note that, it is (rust-lang/rust-by-example#1207)

## rustc-guide

38 commits in f55e97c145cf37fd664db2e0e2f2d05df328bf4f..abf512fc9cc969dcbea69aa15b44586bbeb13c2d
2019-06-15 17:29:12 -0500 to 2019-06-26 11:05:58 -0500
- fix long line
- add `point` to the glossary and link a use of it
- fix indentation
- Update src/borrow_check/region_inference/placeholders_and_universes.md
- Update src/borrow_check/region_inference/placeholders_and_universes.md
- Update src/borrow_check/region_inference/placeholders_and_universes.md
- Update src/borrow_check/region_inference/member_constraints.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/member_constraints.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/member_constraints.md
- Update src/borrow_check/region_inference/member_constraints.md
- Update src/borrow_check/region_inference/lifetime_parameters.md
- Update src/borrow_check/region_inference/member_constraints.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- Update src/borrow_check/region_inference/lifetime_parameters.md
- Update src/borrow_check/region_inference/lifetime_parameters.md
- Update src/borrow_check/region_inference/lifetime_parameters.md
- Update src/borrow_check/region_inference/constraint_propagation.md
- adjust overview slightly
- describe region inference and member constraints in some detail
- start filling out the constraint propagation chapter in more detail
- break out parts of the region inference chapter into sub-chapters
- fix typo
- avoid ftp links
- fix broken links
- add bibligraphy appendix
- Update to mdbook-linkcheck 0.3.0
- Update mdbook
- Change stage0 cfg_attr to bootstrap
- fix compiler-team
- Added Rustc Debugger Support Chapter
2019-06-27 23:01:14 +02:00
Mazdak Farrokhzad
a1a0e0c945
Rollup merge of #62155 - cramertj:61872, r=centril
Add regression test for MIR drop generation in async loops

Fixes #61986.

r? @Centril
2019-06-27 23:01:13 +02:00
Mazdak Farrokhzad
0fe028eae0
Rollup merge of #62154 - mark-i-m:old-fixme, r=Centril
Remove old fixme

fixed in https://github.com/rust-lang/rust/pull/60160

r? @Centril
2019-06-27 23:01:11 +02:00
Mazdak Farrokhzad
274c3de168
Rollup merge of #62152 - doctorn:async_let_ice, r=cramertj
Don't ICE on item in `.await` expression

The code for lowering a `.await` expression missed that item IDs may already have been assigned for items inside of an `async` block, or for closures. This change means we no longer exit early after finding a `.await` in a block that isn't `async` and instead just emit the error. This avoids an ICE generated due to item IDs not being densely generated. (The `YieldSource` of the generated `yield` expression is  used to avoid errors generated about having `yield` expressions outside of generator literals.)

r? @cramertj

Resolves #62009 and resolves #61685
2019-06-27 23:01:10 +02:00
Mazdak Farrokhzad
4aa3e27231
Rollup merge of #62131 - Xanewok:clip-some-nits, r=petrochenkov
libsyntax: Fix some Clippy warnings

When I was working on it before a lot of these popped up in the RLS so I figured I'll send a small patch fixing only the (hopefully) uncontroversial ones.

Others that could be also fixed included also [`clippy::print_with_newline`](https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline) and [`clippy::cast_lossless`](https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless). Should I add them as well?

since most of it touches libsyntax...
r? @petrochenkov
2019-06-27 23:01:09 +02:00
Mazdak Farrokhzad
bc335d6c16
Rollup merge of #62124 - matklad:without-with, r=petrochenkov
refactor lexer to use idiomatic borrowing
2019-06-27 23:01:07 +02:00
Mazdak Farrokhzad
e8f398623e
Rollup merge of #62106 - cramertj:test-await, r=centril
Add more tests for async/await

I'll follow up with more of these, but here's an initial few.

r? @Centril
2019-06-27 23:01:06 +02:00
Mazdak Farrokhzad
36b26e9bac
Rollup merge of #62102 - RalfJung:read, r=Centril
call out explicitly that general read needs to be called with an initialized buffer
2019-06-27 23:01:04 +02:00
Mazdak Farrokhzad
1c7d311fdc
Rollup merge of #62076 - XAMPPRocky:master, r=XAMPPRocky
Updated RELEASES.md for 1.36.0

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

r? @Mark-Simulacrum

cc @rust-lang/release
2019-06-27 23:01:03 +02:00
Mazdak Farrokhzad
df97fc6038
Rollup merge of #62067 - doctorn:await_diagnostic, r=matthewjasper
Add suggestion for missing `.await` keyword

This commit adds a suggestion diagnostic for missing `.await`. In order to do this, the trait `Future` is promoted to a lang item.

Compiling code of the form:

```rust
#![feature(async_await)]

fn take_u32(x: u32) {}

async fn make_u32() -> u32 {
    22
}

async fn foo() {
    let x = make_u32();
    take_u32(x)
}

fn main() {}
```

Will now result in the suggestion:

```
error[E0308]: mismatched types
  --> src/main.rs:11:18
   |
11 |         take_u32(x)
   |                  ^
   |                  |
   |                  expected u32, found opaque type
   |                  help: consider using `.await` here: `x.await`
   |
   = note: expected type `u32`
              found type `impl std::future::Future`
```

This commit does not cover chained expressions and therefore only covers the case originally pointed out in #61076. Cases I can think of that still need to be covered:

- [ ] Return places for functions
- [ ] Field access
- [ ] Method invocation

I'm planning to submit PRs for each of these separately as and when I have figured them out.
2019-06-27 23:01:01 +02:00
Mazdak Farrokhzad
2f6cf36b32
Rollup merge of #62043 - Centril:remove-fnbox, r=cramertj
Remove `FnBox`

Remove `FnBox` since we now have `Box<dyn FnOnce>`.

Closes https://github.com/rust-lang/rust/issues/28796.

r? @cramertj
2019-06-27 23:01:00 +02:00
Mazdak Farrokhzad
7ddfae74b1
Rollup merge of #61878 - RalfJung:pin, r=Dylan-DPC
improve pinning projection docs

This tries to improve the explanation of structural pinning and pinning projections based on [this URLO thread](https://users.rust-lang.org/t/when-is-it-safe-to-move-a-member-value-out-of-a-pinned-future/28182).

Fixes https://github.com/rust-lang/rust/issues/61272.
2019-06-27 23:00:58 +02:00
Dylan MacKenzie
07c5e2b310 Use a more efficient iteration order for forward dataflow
Currently, dataflow begins by visiting each block in order of ID
(`BasicBlock(0)`, `BasicBlock(1)`, etc.). This PR changes that initial
iteration to reverse post-order. This ensures that the effects of all
predecessors will be applied before a basic block is visited if the CFG
has no back-edges, and should result in less total iterations even when
back-edges exist. This should not change the results of dataflow
analysis.

The current ordering for basic blocks is pretty close to RPO
already--`BasicBlock(0)` is already the start block, so the gains from
this are pretty small, especially since we need to do an extra traversal
up front.

Note that some basic blocks are unreachable from the `START_BLOCK`
during dataflow. We add these blocks to the work queue as well to
preserve the original behavior.
2019-06-27 11:38:52 -07:00
bors
8ebd67e4ee Auto merge of #62136 - lzutao:clippy-up, r=oli-obk
submodules: Update clippy from 8c80b65f to e3cb40e4

r? @Manishearth
2019-06-27 14:30:33 +00:00
Nathan Corbyn
88194200e5 Add suggestion for missing .await keyword 2019-06-27 13:56:55 +01:00
Igor Matuszewski
d79104bda1 Update RLS 2019-06-27 13:41:00 +02:00
Alex Crichton
b6087492ed rustc: Retry SIGILL linker invocations
We've seen quite a few issues with spurious illegal instructions getting
executed on OSX on CI recently. For whatever reason `cc` itself is
executing an illegal instruction and we're not really getting any other
information about what's happening. Since we're already retrying the
linker when it segfaults, let's just continue to retry everything and
automatically reinvoke the linker when it fails with an illegal instruction.
2019-06-27 02:23:06 -07:00
bors
a6b5d229c1 Auto merge of #62147 - Centril:rollup-pigazoz, r=alexcrichton
[CI] Rollup of 5 pull requests

Successful merges:

 - #62140 (ci: Turn off PR builds on Travis)
 - #62141 (ci: Disable assertions in PR builds)
 - #62142 (ci: Switch official `try` builds to happen on Azure)
 - #62143 (ci: Publish toolstate changes from Azure)
 - #62145 (ci: Sync AppVeyor/Travis with Azure configuration)

Failed merges:

r? @ghost
2019-06-27 08:15:27 +00:00
Jeremy Fitzhardinge
768d500157 save-analysis: use buffered writes
Otherwise it ends up writing the file byte at a time, which can be very slow for large outputs.
2019-06-26 17:22:39 -07:00
Josh Stone
b533aff927 Use pointer::write_bytes for android sigemptyset 2019-06-26 16:27:54 -07:00
Josh Stone
3ba1f39fe7 Avoid mem::uninitialized() in std::sys::unix
For `libc` types that will be initialized in FFI calls, we can just use
`MaybeUninit` and then pass around raw pointers.

For `sun_path_offset()`, which really wants `offset_of`, all callers
have a real `sockaddr_un` available, so we can use that reference.
2019-06-26 15:03:15 -07:00
Yuki Okushi
742e851aaa Update miri 2019-06-27 04:45:12 +09:00
Julien Cretin
e053eede87 Remove outdated question_mark_macro_sep lint 2019-06-26 20:34:12 +02:00
Alex Crichton
6772ebc274 ci: Disable x86_64-msvc-tools builder
While we figure out what's wrong let's continue to land PRs
2019-06-26 11:13:08 -07:00