Commit Graph

68730 Commits

Author SHA1 Message Date
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
Alex Crichton
6cae080516 rustc: Handle #[linkage] anywhere in a crate
This commit updates the reachability pass of the compiler to seed the local
worklist with `#[linkage]`-like items anywhere in a crate, not just those
reachable from public items.

Closes #45165
2017-10-12 09:14:28 -07:00
Alex Crichton
e6da40c669 rustbuild: Prevent spurious rebuilds of the RLS
The RLS currently is rebuilt every time you test it because the `OPENSSL_DIR`
env var is changing, which is in turn caused by an accidental omission of
`prepare_tool_cargo` when testing the RLS.
2017-10-12 08:04:07 -07:00
Jimmy Brisson
d0cb4d09cd Explain why ensure of a red node == the query 2017-10-12 08:54:42 -05:00
Jimmy Brisson
f03af1b8f1 Remove query profiling from ensure 2017-10-12 08:48:49 -05: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
Marco A L Barbosa
7199feea9d Revert "Test x86_64-unknown-linux-gnux32" 2017-10-12 06:59:14 -03: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
Jimmy Brisson
bbdc61313d Ensure typeck_tables_of from typck_item_bodies
This should make TypeckTables lazier.
2017-10-11 22:08:29 -05:00
Jimmy Brisson
67b3e7cc43 Implement query ensure
`$query::ensure()` guarantees that one of two things is true after it returns:
  - The query has all green inputs.
  - The query has been executed.
 and counts as a read from the source query
2017-10-11 22:08:22 -05:00
Marco A L Barbosa
1a2ce7d51a Add gcc-multilib to cross2 2017-10-11 23:17:50 -03: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
Marco A L Barbosa
986a7c2df9 Test x86_64-unknown-linux-gnux32 2017-10-11 21:39:42 -03:00
Marco A L Barbosa
0f427036c7 Add builder for x86_64-unknown-linux-gnux32 in cross2 2017-10-11 21:36:37 -03:00
Marco A L Barbosa
03419c846a Bump cc to 1.01 to include x86_64-unknown-linux-gnux32 support 2017-10-11 21:35:53 -03:00
Alex Crichton
5d415e8d08 rustc: Handle #[inline(always)] at -O0
This commit updates the handling of `#[inline(always)]` functions at -O0 to
ensure that it's always inlined regardless of the number of codegen units used.

Closes #45201
2017-10-11 17:12:29 -07:00
Paul Faria
97fe353ce6 Split lines longer than 100 columns 2017-10-11 20:06:24 -04:00
Paul Faria
9423bee6d3 Move const qualifier from brackets to constant values and remove comma from after identifier 2017-10-11 20:01:55 -04:00
Federico Mena Quintero
5fb8e3d829 ffi/mod.rs: Use only one space after a period ending a sentence 2017-10-11 17:57:56 -05:00
Esteban Küber
fab6a10c00 Point at immutable outer variable
When attempting to mutate an immutable outer variable from a closure,
point at the outer variable and suggest making it mutable.
2017-10-11 15:56:22 -07:00
Federico Mena Quintero
c8e232dfe8 ffi/mod.rs: Keep the one-sentence summary at the beginning of the module 2017-10-11 17:55:01 -05:00
Federico Mena Quintero
026451093d ffi/c_str.rs: Use only one space after a period ending a sentence 2017-10-11 17:53:13 -05:00
Federico Mena Quintero
a9a4ce6dcc ffi/c_str.rs: Fix method/function confusion
Per https://github.com/rust-lang/rust/pull/44855#discussion_r144049179
2017-10-11 17:52:39 -05:00
Federico Mena Quintero
d5bdfbced6 ffi/c_str.rs: Make all descriptions have a single-sentence summary at the beginning
Per https://github.com/rust-lang/rust/pull/44855#discussion_r144048837
and subsequent ones.
2017-10-11 17:51:37 -05:00
Felix S. Klock II
d6caf737b3 Added revisions: ast mir template to tests that this PR sync'ed ast+mir borrowcks.
(There are other tests that this PR also improves, but were not
completely synchronized. I chose to wait until later to pull those
into the `revisions: ast mir` testing pattern; later being either when
they *are* synchronized, or in some PR where we migrate all borrowck
tests, regardless of whether MIR-borrowck is "finished" for them or
not.)
2017-10-11 22:42:29 +02:00
Felix S. Klock II
b62b67a732 Test case illustrating some variants of the issue pointed out by ariel.
Expanded to cover partial-initialization ideas.
2017-10-11 22:42:29 +02:00
Felix S. Klock II
ae5fc76dce Test against accesses to uninitialized fields. 2017-10-11 22:42:29 +02:00
Felix S. Klock II
dcada26f5b MIR-borrowck: Big fix to fn check_if_path_is_moved.
Fix #44833 (a very specific instance of a very broad bug).

In `check_if_path_is_moved(L)`, check nearest prefix of L with
MovePath, and suffixes of L with MovePaths.

Over the course of review, ariel pointed out a number of issues that
led to this version of the commit:

1. Looking solely at supporting prefixes does not suffice: it
   overlooks checking if the path was ever actually initialized in the
   first place. So you need to be willing to consider non-supporting
   prefixes.  Once you are looking at all prefixes, you *could* just
   look at the local that forms the base of the projection, but to
   handle partial initialization (which still needs to be formally
   specified), this code instead looks at the nearest prefix of L that
   has an associated MovePath (which, in the limit, will end up being
   a local).

2. You also need to consider the suffixes of the given Lvalue, due to
   how dataflow is representing partial moves of individual fields out
   of struct values.

3. (There was originally a third search, but ariel pointed out that
   the first and third could be folded into one.)

Also includes some drive-by refactorings to simplify some method
signatures and prefer `for _ in _` over `loop { }` (at least when it
comes semi-naturally).
2017-10-11 22:35:02 +02: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
Marco A L Barbosa
a6cfdd2b98 Add x86_64-unknown-linux-gnux32 target 2017-10-11 16:26:37 -03:00
kennytm
90d58a362a
rustbuild: Make openssl download more reliable.
1. Add -f flag to curl, so when the server returns 403 or 500 it will fail
   immediately.
2. Moved the checksum part into the retry loop, assuming checksum failure
   is due to broken download that can be fixed by downloading again.
2017-10-12 01:20:55 +08:00
Alex Crichton
a2aba791f1 rustc: Update LLVM with a ThinLTO fix
This commit updates LLVM with a patch that's landed upstream to fix an assertion
that was tripping when ThinLTO was activated. Unfortunately I wasn't able to get
a reduced test case, but I've tested manually on the affected crates and the
assertion is indeed fixed.

Closes #45131
2017-10-11 09:10:59 -07:00
Alex Crichton
24cc38e3b0 rustc: Add LLVM nounwind with -C panic=abort
This informs LLVM that functions can't unwind, which while it should typically
have already been inferred when necessary or otherwise not impact codegen is
apparently needed on targets like ARM to avoid references to unnecessary
symbols.

Closes #44992
2017-10-11 09:05:38 -07: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
Your Name
8a28c676c8 MIR-borrowck: add false edges to match arms 2017-10-11 17:39:45 +03: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
Jean Lourenço
db91b00065 output compiler message updated
output message is shown in another 'help:' block

line with +100 columns formatted

test adjusted
2017-10-10 23:52:45 -03: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
Badel2
72cfd20941 Add error for comma after base struct field
`let x = { ..default(), } // This comma is an error`
2017-10-11 03:13:25 +02: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