Commit graph

68526 commits

Author SHA1 Message Date
bors
91eb6fe56d Auto merge of #45013 - chrisvittal:mir_pretty_printing_pr, r=nikomatsakis
Extend mir dump to dump each region

Building on #44878, implement the feature discussed in #44872.

Through discussions on the WG-nll-gitter, @nikomatsakis and I decided to implement this by extending `dump_mir` and all functions that it calls to take a callback of signature `FnMut(PassWhere, &mut Write) -> io::Result<()>` where `PassWhere` is an enum that represents possible locations that we may want to print out extra data in the process of dumping the MIR.

I'm not particularly wedded to the name `PassWhere`, but I felt that simply calling the enum `Where` wasn't the right thing to name it.

This work depends strongly on #44878, and should be rebased on the final version of that tree, whatever that may be.
2017-10-13 01:33:34 +00:00
bors
64ee7d1399 Auto merge of #45233 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

- Successful merges: #44989, #45005, #45049, #45105, #45121, #45166, #45172, #45190, #45231
- Failed merges: #45138
2017-10-12 23:01:34 +00:00
kennytm
45e4c19d1f
Rollup merge of #45231 - kennytm:patch-1, r=petrochenkov
Fix typo in libsyntax/parse/lexer/unicode_chars.rs

`` ` `` (U+0060) should be the "grave" accent, not "Greek" accent.
2017-10-13 01:58:53 +08:00
kennytm
19901df002
Fix typo in libsyntax/parse/lexer/unicode_chars.rs
` (U+0060) should be the "grave" accent, not "Greek" accent.
2017-10-13 01:58:51 +08:00
kennytm
e1a6795188
Rollup merge of #45190 - petrochenkov:shorten, r=alexcrichton
Shorten some test names

An immediate fix for the first issue in https://github.com/rust-lang/rust/issues/45103
r? @alexcrichton
2017-10-13 01:58:49 +08:00
kennytm
db6fdf664a
Rollup merge of #45172 - oli-obk:patch-8, r=pnkfelix
Upgrade some comments to doc comments
2017-10-13 01:58:47 +08:00
kennytm
7640cda8b2
Rollup merge of #45166 - tinaun:more_unstable_docs, r=steveklabnik
Documented a few more unstable feature gates.

unboxed closures, fn_traits, and OIBIT. hope these are decent!
2017-10-13 01:58:45 +08:00
kennytm
69447684d1
Rollup merge of #45121 - johnthagen:pep8-bootstrap, r=alexcrichton
Fix PEP8 style issues in bootstrap code

This fixes PEP8 style issues (other than line-length) in the bootstrap Python code.

The most important fix is in the `set` function where the code was indented with 6 spaces instead of 4.
2017-10-13 01:58:44 +08:00
kennytm
ff53dc7166
Rollup merge of #45105 - camsteffen:patch-2, r=pnkfelix
Fix rustc documentation typo

I'm new to rustc but this looks like a typo.
2017-10-13 01:58:42 +08:00
kennytm
81ea49f244
Rollup merge of #45049 - alexcrichton:update-jobserver, r=sfackler
Update the `jobserver` crate

Brings in a bugfix to be compatible with the master branch of `make` where
jobserver fds are set in nonblocking mode
2017-10-13 01:58:40 +08:00
kennytm
4f83c359b8
Rollup merge of #45005 - leodasvacas:inline-eq-slice-into-eq, r=jseyfried
Inline eq_slice into str::eq

It's the only use of the function.
2017-10-13 01:58:38 +08:00
kennytm
445bbde784
Rollup merge of #44989 - QuietMisdreavus:what-is-your-quest, r=GuillaumeGomez
let rustdoc print the crate version into docs

This PR adds a new unstable flag to rustdoc, `--crate-version`, which when present will add a new entry to the sidebar of the root module, printing the given version number:

![Screenshot of a test crate, showing "Version 1.3.37" under the crate name](https://user-images.githubusercontent.com/5217170/31104096-805e3f4c-a7a0-11e7-96fc-368b6fe063d6.png)

Closes #24336

(The WIP status is because i don't want to merge this until i can get the std docs to use it, which i need help from rustbuild people to make sure i get right.)
2017-10-13 01:58:36 +08:00
bors
dcbbfb6e80 Auto merge of #45007 - undecidabot:optimize-iter, r=bluss
Optimize comparison functions of Iterator

Replaced matching on tuples which led to less performant code generation. Testing on microbenchmarks consistently showed ~1.35x improvement in performance on my machine.

Fixes #44729.
2017-10-12 17:34:21 +00:00
bors
1807f27a33 Auto merge of #45176 - michaelwoerister:fix-region-and-trans-item-order, r=nikomatsakis
incr.comp.: Fix HashStable for ty::RegionKind and trans item order

Fixes #45161 and the failing rust-icci tests.

r? @nikomatsakis
2017-10-12 11:20:16 +00:00
bors
39fd958520 Auto merge of #44967 - wesleywiser:trans_fulfill_obligation, r=nikomatsakis
Turn `trans_fulfill_obligation` into a query

Part of #44891
2017-10-12 07:48:11 +00:00
bors
d27411494a Auto merge of #44985 - zilbuz:issue-44974, r=pnkfelix
MIR borrowck: print lvalues in error messages in the same way that the AST borrowck

Fix #44974

- Print fields with `.name` rather than `.<num>`
- Autoderef values if followed by a field or an index
- Output `[..]` when borrowing inside a slice
2017-10-12 03:40:10 +00:00
bors
fbb5054fa9 Auto merge of #44969 - QuietMisdreavus:impls-for-everyone, r=steveklabnik
document trait impls when the type appears in the trait's generics

Fixes #25264

![image](https://user-images.githubusercontent.com/5217170/31062309-4fc7c594-a6ef-11e7-892e-07f95bbc7976.png)
2017-10-12 01:00:15 +00:00
bors
a47c9f870f Auto merge of #44963 - JLockerman:fix_spsc, r=alexcrichton
Improve performance of spsc_queue and stream.

This PR makes two main changes:

1. It switches the `spsc_queue` node caching strategy from keeping a shared
counter of the number of nodes in the cache to keeping a consumer only counter
of the number of node eligible to be cached.
2. It separates the consumer and producers fields of `spsc_queue` and `stream` into
a producer cache line and consumer cache line.

Overall, it speeds up `mpsc` in `spsc` mode by 2-10x.
Variance is higher than I'd like (that 2-10x speedup is on one benchmark), I believe this is due to the drop check in `send` (`fn stream::Queue::send:107`). I think this check can be combined with the sleep detection code into a version which only uses 1 shared variable, and only one atomic access per `send`, but I haven't looked through the select implementation enough to be sure.

The code currently assumes a cache line size of 64 bytes. I added a CacheAligned newtype in `mpsc` which I expect to reuse for `shared`. It doesn't really belong there, it would probably be best put in `core::sync::atomic`, but putting it in `core` would involve making it public, which I thought would require an RFC.

Benchmark runner is [here](3eca46279c/shootout), benchmarks [here](3eca46279c/queue_bench/src/lib.rs (L170-L293)).

Fixes #44512.
2017-10-11 19:32:19 +00:00
bors
cbf5d39cca Auto merge of #44888 - tirr-c:binder-hr-region, r=arielb1
Refactor fmt::Display and fmt::Debug impls in ppaux

Also fixes #44887.

There was a problem that unnamed late-bound regions are *always* named `'r` while they are displayed using `std::fmt::Display`.

---

```rust
fn main() {
    f(|_: (), _: ()| {});
}
fn f<F>(_: F) where F: Fn(&(), for<'r> fn(&'r ())) {}
```

Before (incorrectly shadows lifetime, `for<'r>` omitted for the second argument):

```
error[E0631]: type mismatch in closure arguments
 --> test.rs:2:5
  |
2 |     f(|_: (), _: ()| {});
  |     ^ ----------------- found signature of `fn((), ()) -> _`
  |     |
  |     expected signature of `for<'r> fn(&'r (), fn(&'r ())) -> _`
  |
  = note: required by `f`
```

After:

```
error[E0631]: type mismatch in closure arguments
 --> test.rs:2:5
  |
2 |     f(|_: (), _: ()| {});
  |     ^ ----------------- found signature of `fn((), ()) -> _`
  |     |
  |     expected signature of `for<'s> fn(&'s (), for<'r> fn(&'r ())) -> _`
  |
  = note: required by `f`
```

r? @nikomatsakis
2017-10-11 16:00:25 +00:00
bors
c0d40a1908 Auto merge of #45192 - steveklabnik:rollup, r=steveklabnik
Rollup of 5 pull requests

- Successful merges: #45071, #45139, #45148, #45171, #45180
- Failed merges: #45121
2017-10-11 13:26:09 +00:00
johnthagen
3cb5294966 Fix typo during merge from master 2017-10-11 07:36:43 -04:00
johnthagen
23a5fb811e Merge branch 'master' into pep8-bootstrap 2017-10-11 07:33:46 -04:00
bors
264aafe056 Auto merge of #45193 - alexcrichton:fix-travis, r=alexcrichton
ci: Fix installing the Android SDK

Apparently the https urls are broken due to some certificate validation
whatnots, and so far the least intrusive solution I've found is to just disable
that.
2017-10-11 05:18:13 +00:00
tinaun
d5ef9f9036 formatting fixes 2017-10-10 23:21:20 -04:00
Alex Crichton
d5d4494213 ci: Fix installing the Android SDK
Apparently the https urls are broken due to some certificate validation
whatnots, and so far the least intrusive solution I've found is to just disable
that.
2017-10-10 18:59:40 -07:00
QuietMisdreavus
7ea286e854 render the rust version into std/compiler/test docs 2017-10-10 20:36:09 -05:00
Steve Klabnik
4a90366464 Rollup merge of #45180 - 0xAX:fix-help-message-in-configure.py, r=Mark-Simulacrum
Fix path to x.py in bootstrap/configure.py script

We may see a help message in the end of the output of the ./configure script:

```
$ ./configure
configure: processing command line
configure:
configure: build.configure-args := []
configure:
configure: writing `config.toml` in current directory
configure:
configure: run `python ./src/bootstrap/x.py --help`
configure:
```

but the `x.py` script is actually in the rust root directory and
executing of such help string will give us error:

```
$ python ./src/bootstrap/x.py --help
python: can't open file './src/bootstrap/x.py': [Errno 2] No such file
or directory
```

This patch fixes path to the x.py script in the output of the ./configure
2017-10-10 20:22:29 -04:00
Steve Klabnik
fa70d04dc5 Rollup merge of #45171 - rust-lang:petrochenkov-patch-2, r=steveklabnik
Fix a mistake in release notes for 1.21.0

Also reorder changes to put the important one first.
2017-10-10 20:22:28 -04:00
Steve Klabnik
eac9138a79 Rollup merge of #45148 - gaurikholkar:master, r=nikomatsakis
Update let-expressions.rs with DepNode labels

As a part of #44924, the PR has tests verified for the following dependency nodes for **let-expressions**
```
- MirValidated
- MirOptimized
- TypeCheckTables
- TypeOfItem
- GenericsOfItem
- PredicatesOfItem
- FnSignature
```

As we are more concerned with the function body,  the following fingerprints do not change over compilation sessions.
```- TypeOfItem
- GenericsOfItem
- PredicatesOfItem
- FnSignature
```

r? @nikomatsakis
cc @michaelwoerister

P.S. Will add more tests as and when possible :)
2017-10-10 20:22:27 -04:00
Steve Klabnik
0a0bec7695 Rollup merge of #45139 - michaelwoerister:document-force_from_dep_node, r=nikomatsakis
incr.comp.: Add some documentation to force_from_dep_node().

r? @nikomatsakis
2017-10-10 20:22:26 -04:00
Steve Klabnik
fab96c4b12 Rollup merge of #45071 - tromey:use-gdb-lazy-string, r=michaelwoerister
Implement display_hint in gdb pretty printers

A few pretty-printers were returning a quoted string from their
to_string method.  It's preferable in gdb to return a lazy string and to
let gdb handle the display by having a "display_hint" method that
returns "string" -- it lets gdb settings (like "set print ...") work, it
handles corrupted strings a bit better, and it passes the information
along to IDEs.
2017-10-10 20:22:24 -04:00
Vadim Petrochenkov
ca61ea2c44 Shorten some test names
Paths to object files generated from them were too long and caused errors
2017-10-11 02:36:40 +03:00
Alexander Kuleshov
a84c62a7f1 Fix path to x.py in configure.py script
We may see a help message in the end of the output of the ./configure script:

$ ./configure
configure: processing command line
configure:
configure: build.configure-args := []
configure:
configure: writing `config.toml` in current directory
configure:
configure: run `python ./src/bootstrap/x.py --help`
configure:

but the x.py script is actually in the rust root directory and
executing of such help string will give us error:

$ python ./src/bootstrap/x.py --help
python: can't open file './src/bootstrap/x.py': [Errno 2] No such file
or directory

This patch fixes path to the x.py script in the output of the ./configure
2017-10-11 00:00:18 +06:00
bors
d6d711dd8f Auto merge of #45169 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

- Successful merges: #44775, #45089, #45095, #45099, #45101, #45108, #45116, #45135, #45146
- Failed merges:
2017-10-10 16:55:39 +00:00
Michael Woerister
1235836f67 incr.comp.: Fix instability in CodegenUnitExt::items_in_deterministic_order(). 2017-10-10 17:11:08 +02:00
Michael Woerister
7a016c1ca6 incr.comp.: Add missing match branch in HashStable impl for ty::RegionKind. 2017-10-10 17:08:49 +02:00
kennytm
ce0a1cfa30
Rollup merge of #45146 - petrochenkov:lessrec, r=estebank
Fix a bug in diagnostics for `x as usize < y`

Also improve diagnostics for `x as usize << y`.

Fixes https://github.com/rust-lang/rust/issues/44406
r? @estebank
2017-10-10 22:44:12 +08:00
kennytm
0ca4c4c5b3
Rollup merge of #45135 - michaelwoerister:move-incr-comp-with-macro-export, r=alexcrichton
incr.comp.: Move macro-export test case to src/test/incremental.

`compile-fail/incr_comp_with_macro_export.rs` was trying to role its own incremental compilation setup. This started to cause problems. There's no reason to not just make this a regular `src/test/incremental` test.

Fixes #45062.
2017-10-10 22:44:10 +08:00
kennytm
b7a3a14406
Rollup merge of #45116 - johnthagen:typo-fix, r=alexcrichton
Fix typos
2017-10-10 22:44:08 +08:00
kennytm
3b69c79efc
Rollup merge of #45108 - phil-opp:patch-2, r=japaric
Fix data-layout field in x86_64-unknown-linux-gnu.json test file

The current data-layout causes the following error:

> rustc: /checkout/src/llvm/lib/CodeGen/MachineFunction.cpp:151: void llvm::MachineFunction::init(): Assertion `Target.isCompatibleDataLayout(getDataLayout()) && "Can't create a MachineFunction using a Module with a " "Target-incompatible DataLayout attached\n"' failed.

The new value was generated according to [this comment by @japaric](https://github.com/rust-lang/rust/issues/31367#issuecomment-213595571).
2017-10-10 22:44:07 +08:00
kennytm
bedce1e0a6
Rollup merge of #45101 - lfairy:proc-macro-string-escape, r=jseyfried
Make the result of `Literal::string()` more readable

Closes #45076
2017-10-10 22:44:05 +08:00
kennytm
2f4dd1527e
Rollup merge of #45099 - mikeyhew:fix-astconv-self-type-comments, r=nikomatsakis
Update comments referring to old check_method_self_type

I was browsing the code base, trying to figure out how #44874 could be implemented, and noticed some comments that were out of date and a bit misleading (`check_method_self_type` has since been renamed to `check_method_receiver`). Thought it would be an easy first contribution to Rust!
2017-10-10 22:44:04 +08:00
kennytm
9effa73286
Rollup merge of #45095 - bluss:discriminant-send-sync, r=alexcrichton
Ensure std::mem::Discriminant is Send + Sync

`PhantomData<*const T>` has the implication of Send / Syncness following
the *const T type, but the discriminant should always be Send and Sync.

Use `PhantomData<fn() -> T>` which has the same variance in T, but is Send + Sync
2017-10-10 22:44:02 +08:00
kennytm
f2efa793f0
Rollup merge of #45089 - rkruppe:master, r=bluss
Fix typo in codegen test

Without the `:`, the `CHECK-NOT` is ignored by FileCheck, making the line not test anything.
2017-10-10 22:44:00 +08:00
kennytm
23a99f4e0e
Rollup merge of #44775 - MaloJaffre:debug-struct, r=sfackler
Refactor to use `debug_struct` in several Debug impls

Also use `pad` and derive `Debug` for `Edge`.

Fixes #44771.
2017-10-10 22:43:57 +08:00
bors
ec016f80cf Auto merge of #45170 - rust-lang:aphs-no-unsynchronised-llvm-err-global, r=alexcrichton
Band-aid fix to stop race conditions in llvm errors

This is a big hammer, but should be effective at completely removing a
few issues, including inconsistent error messages and segfaults when
LLVM workers race to report results

`LLVM_THREAD_LOCAL` has been present in LLVM since 8 months before 3.7
(the earliest supported LLVM version that Rust can use)

Maybe fixes #43402 (third time lucky?)

r? @alexcrichton

------

You can see that in 5f578dfad0/src/librustc_trans/back/write.rs (L75-L100) there's a small window where the static global error message (made thread local in this PR) could be altered by another thread.

Note that we can't use `thread_local` because gcc 4.7 (permitted according to the readme) does not support it.

Maybe ideally all the functions should be modified to not use a global, but this PR makes things deterministic at least. My only hesitation is whether errors are checked in different threads to where they occur, but I figure that's probably unlikely (and is less bad than racing code).

As an aside, segfault evidence before this patch when I was doing some debugging:
```
$ while grep 'No such file or directory' log2; do RUST_LOG=debug ./build/x86_64-unknown-linux-gnu/stage1/bin/rustc -o "" y.rs >log2 2>&1; done
error: could not write output to : No such file or directory
error: could not write output to : No such file or directory
error: could not write output to : No such file or directory
error: could not write output to : No such file or directory
error: could not write output to : No such file or directory
error: could not write output to : No such file or directory
error: could not write output to : No such file or directory
Segmentation fault (core dumped)
error: could not write output to : No such file or directory
error: could not write output to : No such file or directory
```
2017-10-10 14:26:13 +00:00
Oliver Schneider
1cb9f70b22 Upgrade some comments to doc comments 2017-10-10 16:12:11 +02:00
Vadim Petrochenkov
1138f853e1 Fix a mistake in release notes for 1.21.0
Also reorder changes to put the important one first.
2017-10-10 15:45:04 +03:00
Aidan Hobson Sayers
8628d51c3b Band-aid fix to stop race conditions in llvm errors
This is a big hammer, but should be effective at completely removing a
few issues, including inconsistent error messages and segfaults when
LLVM workers race to report results

LLVM_THREAD_LOCAL has been present in LLVM since 8 months before 3.7
(the earliest supported LLVM version that Rust can use)

Maybe fixes #43402 (third time lucky?)
2017-10-10 13:14:51 +01:00
bors
0217315bf2 Auto merge of #44877 - nvzqz:box-conversions, r=alexcrichton
Improve raw Box conversions

This PR has two goals:

- Reduce use of `mem::transmute` in `Box` conversions

  I understand that `mem::transmute`-ing non `#[repr(C)]` types is implementation-defined behavior.  This may not matter within the reference implementation of Rust, but I believe it's important to remain consistent. For example, I noticed that `str::from_utf8_unchecked` went from using `mem::transmute` to using pointer casts.

- Make `Box` pointer conversions more straightforward regarding `Unique`
2017-10-10 11:07:25 +00:00