Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 11 pull requests #64981

Merged
merged 38 commits into from
Oct 2, 2019
Merged

Rollup of 11 pull requests #64981

merged 38 commits into from
Oct 2, 2019

Conversation

tmandry
Copy link
Member

@tmandry tmandry commented Oct 2, 2019

Successful merges:

Failed merges:

r? @ghost

Mark-Simulacrum and others added 30 commits September 23, 2019 19:27
We're not quite ready to ship parallel compilers by default, but the alt
builders are not used too much (in theory), so we believe that shipping
a possibly-broken compiler there is not too problematic.
It's not necessary; cycles (which are rare) can be detected by looking
at the node stack.

This change speeds things up slightly, as well as simplifying the code a
little.
For consistency with other variables in this file.
It has a single call site, and the code is easier to read this way.
They don't help performance at all, and just complicate things.
These make the code more concise.
By collecting the done obligations (when necessary) in the main loop.
This makes the code cleaner.

The commit also changes the order in which successful obligations are
returned -- they are now returned in the registered order, rather than
reversed. Because this order doesn't actually matter, being only used by
tests, the commit uses `sort()` to make the test agnostic w.r.t. the
order.
This iterator can be hot, and chained iterators are slow. The second
half of the chain is almost always empty, so this commit changes the
code to avoid the chained iteration.

This change reduces instruction counts for the `wg-grammar` benchmark by
up to 1.5%.
This changes the default parallelism for parallel compilers to one,
instead of the previous default, which was "num cpus". This is likely
not an optimal default long-term, but it is a good default for testing
whether parallel compilers are not a significant regression over a
sequential compiler.

Notably, this in theory makes a parallel-enabled compiler behave
exactly like a sequential compiler with respect to the jobserver.
Do not ICE when encountering `enum E { A = return [0][0] }`.
removes two functions to inline by combining the check functions and extra call to try_for_each
Now the first row of each basic block is always light instead of
changing seemingly at random.
Avoid ICE on return outside of fn with literal array

Do not ICE when encountering `enum E { A = return [0][0] }`.

Fix rust-lang#64638.
…xcrichton

Make all alt builders produce parallel-enabled compilers

We're not quite ready to ship parallel compilers by default, but the alt
builders are not used too much (in theory), so we believe that shipping
a possibly-broken compiler there is not too problematic.

r? @nikomatsakis
…_paths_between_regions, r=estebank

Avoid `chain()` in `find_constraint_paths_between_regions()`.

This iterator can be hot, and chained iterators are slow. The second
half of the chain is almost always empty, so this commit specializes the
code to avoid the chained iteration.

This change reduces instruction counts for the `wg-grammar` benchmark by
up to 1.5%.
… r=nikomatsakis

Still more `ObligationForest` improvements.

Following on from rust-lang#64627, more readability improvements, but negligible effects on speed.

r? @nikomatsakis
…i-refactor, r=wesleywiser

SelfProfiler API refactoring and part one of event review

This PR refactors the `SelfProfiler` a little bit so that most profiling methods are RAII-based. The codegen backend code already had something similar, this refactoring pulls this functionality up into `SelfProfiler` itself, for general use.

The second commit of this PR is a review and update of the existing events we are already recording. Names have been made more consistent. CGU names have been removed from event names. They will be added back in when function parameter recording is implemented.

There is still some work to be done for adding new events, especially around trait resolution and the incremental system.

r? @wesleywiser
use try_fold instead of try_for_each to reduce compile time

as it was stated in rust-lang#64572 that the biggest gain was due to less code was generated I tried to reduce the number of functions to inline by using try_fold direct instead of calling try_for_each that calls try_fold.

as there is some gains with using the try_fold function this is maybe a way forward.
when I tried to compile the clap-rs benchmark I get times gains only some % from rust-lang#64572

there is more function that use eg. fold that calls try_fold that also can be changed but the question is how mush "duplication" that is tolerated in std to give faster compile times

can someone start a perf run?

cc @nnethercote @scottmcm @bluss
r? @ghost
Fix clippy warnings

* Use `match` instead of `if` chain
* Remove redundant `into_iter()`
* Use `copied()` instead of `map()`

etc.
…ra, r=petrochenkov

Fix zebra-striping in generic dataflow visualization

A small formatting improvement to rust-lang#64828.

Prior to this, the background color of the first row of the table for each basic block changed seemingly at random. You can see this in [basic block rust-lang#5](rust-lang#64828 (comment)) under "New table". Now it is always light.

This also updates the example table to match the current output.
…lly_clear_inner_handler, r=Mark-Simulacrum

Fully clear `HandlerInner` in `Handler::reset_err_count`

Address [`FIXME`](https://github.com/rust-lang/rust/blob/702b45e409495a41afcccbe87a251a692b0cefab/src/librustc_errors/lib.rs#L472) for `Handler::reset_err_count` in the way suggested by @Mark-Simulacrum, i. e. clear all the fields of `HandlerInner`.

cc @estebank
Update books

## reference

3 commits in fa5dfb8..320d232
2019-09-16 20:42:56 +0200 to 2019-10-01 17:05:35 +0200
- Update async/await keywords to real keywords. (rust-lang/reference#687)
- Remove the warning that appears on every page. (rust-lang/reference#685)
- Eschew fp lit pattern (rust-lang/reference#683)

## book

9 commits in 871416b85c1a73717d65d6f4a9ea29e5aef3db0e..04806c80be0f54b1290287e3f85e84bdfc0b6ec7
2019-09-16 09:46:20 -0400 to 2019-10-01 20:20:22 -0400
- Fix tidy error. (rust-lang/book#2104)
- Fancy quotes
- Commit autogenerated cargo content
- Move all scripts into tools
- We can start lines with numbers without creating ordered lists
- ci: validate that all used references are defined (rust-lang/book#2032)
- Remove the check for unstable features
- Specify the rustc version we're using in a rust-toolchain file
- Fix broken link to Chapter 13-01 in Chapter 12-04 (rust-lang/book#2025)

## rust-by-example

9 commits in 67cfbf31df880728dcf7cb35b15b028ec92caf31..a6288e7407a6c4c19ea29de6d43f40c803883f21
2019-09-18 09:36:40 -0300 to 2019-10-01 10:09:14 -0300
- Add reference to lifetime in structs (rust-lang/rust-by-example#1274)
- Rectangle ambiguity (rust-lang/rust-by-example#1270)
- Make Parsing a String code editable (rust-lang/rust-by-example#1268)
- Fix match range pattern usage (rust-lang/rust-by-example#1269)
- Added type alias enum variant rfc (rust-lang/rust-by-example#1267)
- Chapter 9.2.5: impl FnOnce() works in 1.35 (rust-lang/rust-by-example#1266)
- Move chapters from folder "traits" to "trait" (rust-lang/rust-by-example#1263)
- Capturing changes (rust-lang/rust-by-example#1265)
- Fix rust-lang/rust-by-example#1261: document Iterator::position (rust-lang/rust-by-example#1262)

r? @ghost
@tmandry
Copy link
Member Author

tmandry commented Oct 2, 2019

@bors r+ p=11 rollup=never

@bors
Copy link
Contributor

bors commented Oct 2, 2019

📌 Commit 0878ca5 has been approved by tmandry

@bors bors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Oct 2, 2019
@bors
Copy link
Contributor

bors commented Oct 2, 2019

⌛ Testing commit 0878ca5 with merge f2023ac...

bors added a commit that referenced this pull request Oct 2, 2019
Rollup of 11 pull requests

Successful merges:

 - #64649 (Avoid ICE on return outside of fn with literal array)
 - #64722 (Make all alt builders produce parallel-enabled compilers)
 - #64801 (Avoid `chain()` in `find_constraint_paths_between_regions()`.)
 - #64805 (Still more `ObligationForest` improvements.)
 - #64840 (SelfProfiler API refactoring and part one of event review)
 - #64885 (use try_fold instead of try_for_each to reduce compile time)
 - #64942 (Fix clippy warnings)
 - #64952 (Update cargo.)
 - #64974 (Fix zebra-striping in generic dataflow visualization)
 - #64978 (Fully clear `HandlerInner` in `Handler::reset_err_count`)
 - #64979 (Update books)

Failed merges:

 - #64959 (syntax: improve parameter without type suggestions)

r? @ghost
@bors
Copy link
Contributor

bors commented Oct 2, 2019

☀️ Test successful - checks-azure
Approved by: tmandry
Pushing f2023ac to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Oct 2, 2019
@bors bors merged commit 0878ca5 into rust-lang:master Oct 2, 2019
@Centril Centril added the rollup A PR which is a rollup label Oct 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet