Commit Graph

61024 Commits

Author SHA1 Message Date
bors
eb5cb9545c Auto merge of #39424 - nikomatsakis:incr-comp-skip-typeck-3, r=mw
rewrite the predecessors code to create a reduced graph

The old code created a flat listing of "HIR -> WorkProduct" edges.
While perfectly general, this could lead to a lot of repetition if the
same HIR nodes affect many work-products. This is set to be a problem
when we start to skip typeck, since we will be adding a lot more
"work-product"-like nodes.

The newer code uses an alternative strategy: it "reduces" the graph
instead. Basically we walk the dep-graph and convert it to a DAG, where
we only keep intermediate nodes if they are used by multiple
work-products.

This DAG does not contain the same set of nodes as the original graph,
but it is guaranteed that (a) every output node is included in the graph
and (b) the set of input nodes that can reach each output node is
unchanged.

(Input nodes are basically HIR nodes and foreign metadata; output nodes
are nodes that have assocaited state which we will persist to disk in
some way. These are assumed to be disjoint sets.)

r? @michaelwoerister

Fixes #39494
2017-02-04 18:38:56 +00:00
bors
8967085617 Auto merge of #39533 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 3 pull requests

- Successful merges: #39486, #39506, #39517
- Failed merges:
2017-02-04 16:04:08 +00:00
Guillaume Gomez
e204987bdb Rollup merge of #39517 - brson:relnotes-151, r=alexcrichton
Update relnotes for 1.15.1

I already checked this into stable, but it needs to be on master/beta too.
2017-02-04 14:41:25 +01:00
Guillaume Gomez
2ce93c1cd2 Rollup merge of #39506 - GuillaumeGomez:hashmap_docs, r=frewsxcv
Add missing urls in HashMap

r? @frewsxcv
2017-02-04 14:41:24 +01:00
Guillaume Gomez
d81b440e92 Rollup merge of #39486 - phungleson:tiny-doc-wording-change, r=alexcrichton
Tiny doc wording change

Fix https://github.com/rust-lang/rust/issues/39366
2017-02-04 14:41:23 +01:00
bors
e4eea73306 Auto merge of #39434 - nikomatsakis:incr-comp-skip-typeck-2, r=eddyb
Miscellaneous refactors around how lints and typeck interact

This is preparation for making incr. comp. skip typeck. The main gist of is trying to rationalize the outputs from typeck that are not part of tables:

- one bit of output is the `used_trait_imports` set, which becomes something we track for dependencies
- the other big of output are various lints; we used to store these into a table on sess, but this work stores them into the`TypeckTables`, and then makes the lint pass consult that
    - I think it probably makes sense to handle errors similarly, eventually, but that's not necessary now

r? @eddyb

Fixes #39495
2017-02-04 12:38:13 +00:00
Niko Matsakis
b3096e25c0 pacify the mercilous tidy, improve cycle unit test 2017-02-04 06:09:19 -05:00
bors
8568fdc499 Auto merge of #39440 - F001:SpecializeCow, r=bluss
std: Add ToString trait specialization for Cow<'a, str> and String

There is a specialized version of ToString for str type in std. I think there are other types can also benefit from specialization. `Cow` and `String` are the most obvious one.

r? @bluss
2017-02-04 10:04:06 +00:00
bors
7df5c0f17b Auto merge of #39425 - jakllsch:netbsd-a, r=alexcrichton
Don't build gcc_personality_v0.c on NetBSD either
2017-02-04 07:29:28 +00:00
bors
1b5c7ac833 Auto merge of #39399 - clarcharr:iter_rfind, r=alexcrichton
Add Iterator::rfind.

I found it weird that `Iterator` has `rpostition` but not `rfind`. This adds that method.
2017-02-04 04:53:53 +00:00
Niko Matsakis
2fc15868a2 go back to the older model of coherence collect 2017-02-03 21:13:59 -05:00
bors
c781fc4a6a Auto merge of #36320 - GuillaumeGomez:rustdoc_test_info, r=alexcrichton
Add information in case of markdown block code test failure

r? @steveklabnik

cc @jonathandturner
2017-02-04 01:32:21 +00:00
Brian Anderson
d650cf5c38 Update relnotes for 1.15.1
I already checked this into stable, but it needs to be on master/beta too.
2017-02-04 01:12:39 +00:00
bors
0648517faf Auto merge of #39463 - alexcrichton:update-bootstrap, r=alexcrichton
Bump version, upgrade bootstrap

This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 22:55:28 +00:00
Guillaume Gomez
2a8ee8c804 Add missing urls in HashMap 2017-02-03 22:38:44 +01:00
Alex Crichton
626e754473 Bump version, upgrade bootstrap
This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 13:25:46 -08:00
bors
86d9ed6c82 Auto merge of #39356 - krdln:format-with-capacity, r=aturon
Use `String::with_capacity` in `format!`

Add an `Arguments::estimated_capacity` to estimate the length of formatted text and use it in `std::fmt::format` as the initial capacity of the buffer.

The capacity is calculated based on the literal parts of format string, see the details in the implementation.

Some benches:
```rust
empty:       format!("{}", black_box(""))
literal:     format!("Literal")
long:        format!("Hello Hello Hello Hello, {}!", black_box("world"))
long_rev:    format!("{}, hello hello hello hello!", black_box("world"))
long_rev_2:  format!("{}{}, hello hello hello hello!", 1, black_box("world"))
short:       format!("Hello, {}!", black_box("world"))
short_rev:   format!("{}, hello!", black_box("world"))
short_rev_2: format!("{}{}, hello!", 1, black_box("world"))
surround:    format!("aaaaa{}ccccc{}eeeee", black_box("bbbbb"), black_box("eeeee"))
two_spaced:  format!("{} {}", black_box("bbbbb"), black_box("eeeee"))
worst_case:  format!("{} a long piece...", black_box("and even longer argument. not sure why it has to be so long"))
```
```
 empty        25            28                      3   12.00%
 literal      35            29                     -6  -17.14%
 long         80            46                    -34  -42.50%
 long_rev     79            45                    -34  -43.04%
 long_rev_2   111           66                    -45  -40.54%
 short        73            46                    -27  -36.99%
 short_rev    74            76                      2    2.70%
 short_rev_2  107           108                     1    0.93%
 surround     142           65                    -77  -54.23%
 two_spaced   111           115                     4    3.60%
 worst_case   89            101                    12   13.48%
```
2017-02-03 20:09:36 +00:00
Niko Matsakis
7abab8aee0 add a comment about optimality that somehow got removed 2017-02-03 12:42:18 -05:00
Michał Krasnoborski
0267529681 Merge remote-tracking branch 'upstream/master' into format-with-capacity 2017-02-03 17:48:07 +01:00
Son
3c020df3e9 tiny doc wording change 2017-02-04 00:16:56 +11:00
Guillaume Gomez
b7f1d7a4bd Update to last cargo version 2017-02-03 13:55:18 +01:00
bors
aed6410a7b Auto merge of #39418 - redox-os:redox_fs_ext, r=brson
Add dev and ino to MetadataExt

This adds .dev() and .ino() to MetadataExt on Redox
2017-02-03 11:42:32 +00:00
Niko Matsakis
afbf6c8246 s/in_index/input_index/ 2017-02-03 06:09:47 -05:00
Niko Matsakis
ef9ae8581f make dirty process O(dirty)
The old algorithm was O(graph)
2017-02-03 06:08:27 -05:00
Guillaume Gomez
723eed3228 Update cargo version to last master 2017-02-03 11:08:20 +01:00
Guillaume Gomez
7c4b79c80a Update run-make/issue-22131 to new rustdoc --test format 2017-02-03 11:08:20 +01:00
Guillaume Gomez
f144795058 Set correct hoedown submodule branch 2017-02-03 11:08:20 +01:00
Guillaume Gomez
6756b72a1d Create new flag to test rustdoc --test 2017-02-03 11:08:20 +01:00
Guillaume Gomez
44b59be0f2 Move test from bootstrap to compiletest 2017-02-03 11:08:20 +01:00
Guillaume Gomez
aea6f3234a Put rustdoc --test ui check at the end of docs check 2017-02-03 11:08:20 +01:00
Guillaume Gomez
d97226c132 Add new rustdoc ui tests 2017-02-03 11:08:20 +01:00
Guillaume Gomez
62fb7fc54a Switch logic to Span instead of HashMap 2017-02-03 11:08:20 +01:00
Guillaume Gomez
409e8ba34e Move to my own hoedown repository 2017-02-03 11:08:19 +01:00
Guillaume Gomez
a0ad4adf59 Change thread name 2017-02-03 11:08:19 +01:00
Guillaume Gomez
5fe3915a05 Rework rustdoc test output a bit 2017-02-03 11:08:19 +01:00
Guillaume Gomez
59ac401b39 Truncate output example to 10 lines 2017-02-03 11:08:19 +01:00
Guillaume Gomez
902460d218 Add line number and filename in error message 2017-02-03 11:08:19 +01:00
ggomez
230234f3a8 Add information in case of markdown block code test failure 2017-02-03 11:08:19 +01:00
bors
f45992b300 Auto merge of #39415 - alexcrichton:fix-upload-dirs, r=brson
travis: Really delete the `doc` folder

Got two location to look at, be sure to delete them both.
2017-02-03 09:13:06 +00:00
bors
57ecd7aa4b Auto merge of #39329 - petrochenkov:rb2, r=alexcrichton
rustbuild: Build jemalloc and libbacktrace only once (take 2)

This is a rebase of https://github.com/rust-lang/rust/pull/38583 without any additions, but with implemented @alexcrichton's suggestions.
~~This includes `exists(Makefile)` => `cfg(stage0)` suggestion... but it will break cross-compilation, no? Are `libstd/liballoc_jemalloc` cross-compiled for `target != host` built during `stage0`?~~

r? @alexcrichton
2017-02-03 05:58:09 +00:00
Clar Charr
3cf485c963 Move rfind to DoubleEndedIterator, add tracking issue. 2017-02-03 00:01:52 -05:00
bors
5de2a24b2e Auto merge of #39287 - wesleywiser:move_cell, r=aturon
Extend Cell to work with non-Copy types

I'm not sure that I did this right but all of the tests pass.

I also had to move the `new()` function so that `Cell`s with non-`Copy` `T`s could be created. That wasn't in the RFC but I assume it needed to be done?
2017-02-03 03:23:35 +00:00
Niko Matsakis
4b5613cb1d prevent multiple writes to a single entry in a DepTrackingMap 2017-02-02 20:49:21 -05:00
Niko Matsakis
78f7ac561c rejigger how we handle used trait imports
The previous way was not friendly to incremental compilation. The new
plan is to compute, for each body, a set of trait imports used in that
body (slightly subtle: for a closure, we assign the trait imports to the
enclosing fn). Then we walk all bodies and union these sets. The reason
we do this is that we can save the individual sets in the incremental
state, and then recompute only those sets that are needed. Before we
were planning to save only the final union, but in that case if some
components are invalidated we have to recompute *all* of them since we
don't have enough information to "partly" invalidate a result.

In truth, this set probably ought to be part of the `TypeckTables`;
however, I opted not to do that because I don't want to have to
save/restore the entire tables in the incremental state yet (since it
contains a lot of `NodeId` references, and removing those is a
significant refactoring).
2017-02-02 20:48:49 -05:00
Niko Matsakis
fdd7e3c744 remove some of the ways to mutate a DepTrackingMap
It is pretty suspect to insert an entry twice.
2017-02-02 20:38:35 -05:00
Niko Matsakis
d9aaca71cc store typeck lints in the TypeckTables
Otherwise they are a "hidden output"
2017-02-02 20:38:16 -05:00
Niko Matsakis
65b93ebcb8 introduce LintTable 2017-02-02 20:37:13 -05:00
Niko Matsakis
93e0bc6520 change the used_trait_imports map to be a DefIdSet 2017-02-02 20:35:41 -05:00
Niko Matsakis
5a6019429f don't use a mutable field where parameter passing will do 2017-02-02 20:35:41 -05:00
bors
7f294e4c18 Auto merge of #39466 - alexcrichton:fix, r=Manishearth
std: Fix IntoIter::as_mut_slice's signature

This was intended to require `&mut self`, not `&self`, otherwise it's unsound!

Closes #39465
2017-02-03 00:47:58 +00:00