Commit Graph

80894 Commits

Author SHA1 Message Date
kennytm
5dd3275237
Rollup merge of #52458 - alexcrichton:fix-suggestion, r=petrochenkov
rustc: Fix a suggestion for the `proc_macro` feature

This feature is stable, we shouldn't suggest it any more! Instead suggest the
real feature, `use_extern_macros`.
2018-07-18 22:35:00 +08:00
kennytm
d94a279538
Rollup merge of #52455 - felixrabe:patch-1, r=estebank
Fix doc comment: use `?` instead of `.unwrap()`
2018-07-18 22:34:59 +08:00
kennytm
47a1d6b183
Rollup merge of #52439 - o01eg:fix-52317, r=alexcrichton
Revert some changes from #51917 to fix custom libdir

Should fix #52317 also adds `libdir` value to output.
2018-07-18 22:34:57 +08:00
kennytm
21f7d2b674
Rollup merge of #52218 - rivertam:patch-1, r=withoutboats
Amend option.take examples

It wasn't abundantly clear to me what `.take` returned. Perhaps this is a slightly frivolous change, but I think it's an improvement. =)

Apologies if I'm not following proper procedures.
2018-07-18 22:34:56 +08:00
kennytm
2712fbed24
Rollup merge of #52116 - Pazzaz:match-str-case, r=SimonSapin
Handle array manually in str case conversion methods

Avoiding the overhead incurred from `String.extend(char.to_lowercase())` showed a notable performance improvement when I benchmarked it.

I tested on these strings:
```rust
ALL_LOWER:       "loremipsumdolorsitametduosensibusmnesarchumabcdefgh"
ALL_UPPER:       "LOREMIPSUMDOLORSITAMETDUOSENSIBUSMNESARCHUMABCDEFGH"
REALISTIC_UPPER: "LOREM IPSUM DOLOR SIT AMET, DUO SENSIBUS MNESARCHUM"
SIGMAS:          "ΣΣΣΣΣ ΣΣΣΣΣ ΣΣΣΣΣ ΣΣΣ ΣΣΣΣ, ΣΣΣ ΣΣΣΣΣΣΣΣ ΣΣΣΣΣΣΣΣΣΣ"
WORD_UPPER:      "Lorem Ipsum Dolor Sit Amet, Duo Sensibus Mnesarchum"
```
the performance improvements of `to_lowercase()` were
```
running 10 tests
test tests::all_lower           ... bench:       1,752 ns/iter (+/- 49)
test tests::all_lower_new       ... bench:       1,266 ns/iter (+/- 15)   -28%
test tests::all_upper           ... bench:       1,832 ns/iter (+/- 39)
test tests::all_upper_new       ... bench:       1,337 ns/iter (+/- 18)   -27%
test tests::realistic_upper     ... bench:       1,993 ns/iter (+/- 14)
test tests::realistic_upper_new ... bench:       1,445 ns/iter (+/- 22)   -27%
test tests::sigmas              ... bench:       1,342 ns/iter (+/- 39)
test tests::sigmas_new          ... bench:       1,226 ns/iter (+/- 16)    -9%
test tests::word_upper          ... bench:       1,899 ns/iter (+/- 12)
test tests::word_upper_new      ... bench:       1,381 ns/iter (+/- 26)   -27%
```
and of `to_uppercase()`
```
running 10 tests
test tests::all_lower           ... bench:       1,813 ns/iter (+/- 20)
test tests::all_lower_new       ... bench:       1,321 ns/iter (+/- 16)   -27%
test tests::all_upper           ... bench:       1,629 ns/iter (+/- 22)
test tests::all_upper_new       ... bench:       1,241 ns/iter (+/- 9)    -24%
test tests::realistic_upper     ... bench:       1,670 ns/iter (+/- 24)
test tests::realistic_upper_new ... bench:       1,241 ns/iter (+/- 17)   -26%
test tests::sigmas              ... bench:       2,053 ns/iter (+/- 20)
test tests::sigmas_new          ... bench:       1,753 ns/iter (+/- 23)   -15%
test tests::word_upper          ... bench:       1,873 ns/iter (+/- 30)
test tests::word_upper_new      ... bench:       1,412 ns/iter (+/- 25)   -25%
```
I gave up on the more advanced method from #52061 as it wasn't always a clear improvement and would help in even less cases if this PR was merged.
2018-07-18 22:34:54 +08:00
Oliver Schneider
442d5d83e2 Adjust run pass test to stricter existential type rules 2018-07-18 14:14:04 +02:00
ljedrz
ef2bac4f10 Remove workarounds for #24958 2018-07-18 13:58:08 +02:00
bors
29ee65411c Auto merge of #52364 - ljedrz:mir_remove_clone, r=RalfJung
Remove a clone in mir/transform/add_validation

Remove a clone of `mir.local_decls`.
2018-07-18 11:49:38 +00:00
Oliver Schneider
68c93e7da0 Make async_idents allow-by-default 2018-07-18 11:45:01 +02:00
Oliver Schneider
1f4e21028d Move the const casting code into its dedicated file 2018-07-18 11:39:17 +02:00
Hideki Sekine
76300903bc Re-include thumbv6m-none-eabi to run-make target 2018-07-18 18:17:37 +09:00
Hideki Sekine
0b3b8bf15c Use dist-various-1 Dockerfile. 2018-07-18 18:14:47 +09:00
bors
38168a77d7 Auto merge of #52426 - ljedrz:#28273_cleanup, r=nikomatsakis
Enable default inlining in platform intrinsics

Since [#28273](https://github.com/rust-lang/rust/issues/28273) has been fixed for quite some time, it might be a good idea to return to default inlining in platform intrinsics.
2018-07-18 09:10:16 +00:00
Oliver Schneider
f3b4492985 Add some tests around associated types 2018-07-18 10:53:10 +02:00
Oliver Schneider
fdd719aa3d Prepare for using wfcheck on existential types 2018-07-18 10:53:10 +02:00
Oliver Schneider
feb139f53f Check lifetimes on existential types 2018-07-18 10:53:10 +02:00
Oliver Schneider
240fcdf65b Match ergonomics 2018-07-18 10:53:10 +02:00
Oliver Schneider
8c1b0d772e Simplify defining scope logic 2018-07-18 10:53:10 +02:00
Oliver Schneider
41b0315f31 More documentation 2018-07-18 10:53:09 +02:00
Oliver Schneider
0f05b4be82 Split monster tests into smaller ones 2018-07-18 10:53:09 +02:00
Oliver Schneider
35351591af Move some tests around 2018-07-18 10:53:09 +02:00
Oliver Schneider
6e09d912e5 default impls for methods can contain existential types inside 2018-07-18 10:53:09 +02:00
Oliver Schneider
160cbdaeea Don't call local_def_id twice on the same node id 2018-07-18 10:53:08 +02:00
Oliver Schneider
4e8cc76a91 Add test for using existential types in associated types 2018-07-18 10:53:08 +02:00
Oliver Schneider
2ed1aca101 Only check existential types, not the desugared impl Trait 2018-07-18 10:53:08 +02:00
Oliver Schneider
3e215a3c87 Typeck existential types properly 2018-07-18 10:53:08 +02:00
Oliver Schneider
53d2ebb0ad Implement existential types 2018-07-18 10:53:08 +02:00
Andy Russell
8f4ccac5e2
rustc: distinguish compilation failure from ICE
This commit changes the exit status of rustc to 1 in the presence of
compilation errors. In the event of an unexpected panic (ICE) the
standard panic error exit status of 101 remains.

A run-make test is added to ensure that the exit code does not regress,
and compiletest is updated to check for an exit status of 1 or 101,
depending on the mode and suite.

This is a breaking change for custom drivers.

Fixes #51971.
2018-07-18 00:24:13 -04:00
Corey Farwell
2d4011db07 Clarify short-circuiting behvaior of Iterator::zip.
Fixes https://github.com/rust-lang/rust/issues/52279.
2018-07-17 23:39:37 -04:00
bors
cd5f5a129f Auto merge of #52353 - alexcrichton:wasm-custom-section, r=eddyb
rustc: Use link_section, not wasm_custom_section

This commit transitions definitions of custom sections on the wasm target from
the unstable `#[wasm_custom_section]` attribute to the
already-stable-for-other-targets `#[link_section]` attribute. Mostly the same
restrictions apply as before, except that this now applies only to statics.

Closes #51088
2018-07-18 03:05:27 +00:00
Wesley Wiser
0223ef9011 Categorize queries for later self-profiling
Change the define_queries! macro per feedback on #51657.

Big thanks to @mark-i-m for the help getting the macro changes correct!
2018-07-17 22:32:32 -04:00
bors
f686885a14 Auto merge of #52342 - nnethercote:CanonicalVar, r=nikomatsakis
Avoid most allocations in `Canonicalizer`.

Extra allocations are a significant cost of NLL, and the most common
ones come from within `Canonicalizer`. In particular, `canonical_var()`
contains this code:

    indices
	.entry(kind)
	.or_insert_with(|| {
	    let cvar1 = variables.push(info);
	    let cvar2 = var_values.push(kind);
	    assert_eq!(cvar1, cvar2);
	    cvar1
	})
	.clone()

`variables` and `var_values` are `Vec`s. `indices` is a `HashMap` used
to track what elements have been inserted into `var_values`. If `kind`
hasn't been seen before, `indices`, `variables` and `var_values` all get
a new element. (The number of elements in each container is always the
same.) This results in lots of allocations.

In practice, most of the time these containers only end up holding a few
elements. This PR changes them to avoid heap allocations in the common
case, by changing the `Vec`s to `SmallVec`s and only using `indices`
once enough elements are present. (When the number of elements is small,
a direct linear search of `var_values` is as good or better than a
hashmap lookup.)

The changes to `variables` are straightforward and contained within
`Canonicalizer`. The changes to `indices` are more complex but also
contained within `Canonicalizer`. The changes to `var_values` are more
intrusive because they require defining a new type
`SmallCanonicalVarValues` -- which is to `CanonicalVarValues` as
`SmallVec` is to `Vec -- and passing stack-allocated values of that type
in from outside.

All this speeds up a number of NLL "check" builds, the best by 2%.

r? @nikomatsakis
2018-07-18 00:45:57 +00:00
Alex Crichton
5ecec1c58b rustc: Enable use_extern_macros in 2018 edition
This was previously enabled via `proc_macro`, but since `proc_macro` is now
stable this is no longer the case. Explicitly include it in the 2018 edition
here.
2018-07-17 14:49:53 -07:00
bors
4f3c7a472b Auto merge of #52145 - ExpHP:drop-it-like-its-eof, r=nikomatsakis
Fix macro parser quadratic complexity in small repeating groups

Observed in #51754, and more easily demonstrated with the following:

```rust
macro_rules! stress {
    ($($t:tt)+) => { };
}

fn main() {
    stress!{
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
        //    ... 65536 copies of "a" total ...
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
        a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
    }
}
```
which takes 50 seconds to compile prior to the fix and <1s after.

I hope this has a visible impact on the compile times for real code.  (I think it is most likely to affect incremental TT munchers that deal with large inputs, though it depends on how they are written)

For a fuller description of the performance issue:  https://github.com/rust-lang/rust/issues/51754#issuecomment-403242159

---

There is no test (yet) because I'm not sure how easily to measure this for regressions.
2018-07-17 19:28:23 +00:00
Alex Crichton
8adf08c437 rustc: Polish off in_external_macro
This commit polishes off this new function to compile on newer rustc as well as
update and add a suite of test cases to work with this new check for lints.
2018-07-17 12:20:38 -07:00
Ralf Jung
3e1254d956 sync::Once: Use Acquire on the hot path, and explain why we don't use it elsewhere 2018-07-17 20:51:31 +02:00
Oliver Schneider
95208044e8 Make async_idents an edition incompat lint 2018-07-17 19:56:41 +02:00
Hideki Sekine
355b99f954 Cleanup Dockerfile. 2018-07-18 01:42:53 +09:00
O01eg
3df43098a4
Allow clippy to be installed with make install
After #51122 clippy is available as a component but don't install when building from source.

This PR allows to install clippy with extended tools.
2018-07-17 19:39:54 +03:00
dylan_DPC
dd0808dd24 added function to check if lints belong to an external macro 2018-07-17 09:33:41 -07:00
Hideki Sekine
d8e64e1540 Adjust TARGETS. 2018-07-18 01:15:04 +09:00
Hideki Sekine
e15c7bd0ab Add IMAGE thumb-none to .travis.yml 2018-07-18 00:59:49 +09:00
Oliver Schneider
fb5b268aa8 Pull out a statement that all match arms are executing 2018-07-17 17:54:42 +02:00
Hideki Sekine
bbc89b2512 Fix rust issue #52163 2018-07-18 00:40:55 +09:00
bors
1c84d81873 Auto merge of #52404 - felixrabe:doc-link-ch19-04-typo, r=GuillaumeGomez
Fix doc link

Result of first searching via:

    find src -type f -exec fgrep -l dynamically-sized-types--sized {} \;

and then replacing all relevant occurrences via:

    find src/{libcore,test/ui} -type f -exec sed -i.bak \
      s/dynamically-sized-types--sized/dynamically-sized-types-and-sized/g {} \;
    find src -type f -name '*.bak' -exec rm {} \;

(Note: Commands run on macOS 10.13 (BSD).  `sed -i.bak` should work on
GNU/Linux as well, but not tested.)

EDIT: Did not compile / test Rust for this change at all.

Clickable links for comparison:
https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized (broken)
https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types-and-sized (fixed)
2018-07-17 15:39:33 +00:00
Alex Crichton
bb2398f8e9 rustc: Fix a suggestion for the proc_macro feature
This feature is stable, we shouldn't suggest it any more! Instead suggest the
real feature, `use_extern_macros`.
2018-07-17 07:14:54 -07:00
bors
4bff385fda Auto merge of #52433 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

Successful merges:

 - #52286 (Deny bare trait objects in src/librustc_errors)
 - #52306 (Reduce the number of clone()s needed in obligation_forest)
 - #52338 (update miri)
 - #52385 (Pass edition flags to compiler from rustdoc as expected)
 - #52392 (AsRef doc wording tweaks)
 - #52430 (update nomicon)
 - #52434 (Enable incremental independent of stage)
 - #52435 (Calculate the exact capacity for 2 HashMaps)
 - #52446 (Block beta if clippy breaks.)

r? @ghost
2018-07-17 13:31:35 +00:00
Felix Rabe
a65d535c5f
Fix doc comment: use ? instead of .unwrap() 2018-07-17 14:18:58 +02:00
Felix Rabe
88e9af0375 Fix doc link
The link for comparison:

-   https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized (broken)

-   https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types-and-sized (fixed)

This commit is the result of (first) searching via:

    find src -type f -print0 | xargs -0 fgrep -l dynamically-sized-types--sized

and then replacing all relevant occurrences via:

    find src/{libcore,test/ui} -type f -print0 | xargs -0 sed -i.bak \
      s/dynamically-sized-types--sized/dynamically-sized-types-and-sized/g
    find src/{libcore,test/ui} -type f -name '*.bak' -print0 | xargs -0 rm

(Note: Commands run on macOS 10.13 (BSD).  `sed -i.bak` should work on
GNU/Linux as well, but not tested.)
2018-07-17 14:10:11 +02:00
bors
025e04e1bc Auto merge of #52190 - davidtwco:issue-52028, r=nikomatsakis
html5ever in the rustc-perf repository is memory-intensive

Part of #52028. Rebased atop of #51987.

r? @nikomatsakis
2018-07-17 11:31:53 +00:00