Commit Graph

82914 Commits

Author SHA1 Message Date
Pietro Albini
11fab7db1d
Rollup merge of #53756 - dmerejkowsky:fix-comment, r=KodrAus
Fix typo in comment
2018-08-30 20:15:43 +02:00
Pietro Albini
ad9a0016a4
Rollup merge of #53753 - RalfJung:keep-stage, r=nikomatsakis
expand keep-stage --help text
2018-08-30 20:15:42 +02:00
Pietro Albini
2e2980b722
Rollup merge of #53747 - GuillaumeGomez:rustdoc-fixes, r=QuietMisdreavus
Rustdoc fixes

Fixes rustdoc not scrolling to given lines and invalid unstable display:

<img width="1440" alt="screen shot 2018-08-27 at 23 28 47" src="https://user-images.githubusercontent.com/3050060/44687252-06535e80-aa51-11e8-8512-d7d34d1cb963.png">

r? @QuietMisdreavus
2018-08-30 20:15:40 +02:00
Pietro Albini
eaca5f8649
Rollup merge of #53743 - oconnor663:target_env, r=kennytm
fix a typo: taget_env -> target_env

This typo was introduced in https://github.com/rust-lang/rust/pull/47334. A couple tests bitrotted as a result, so we fix those too, and move them to a more sensible place.

Is there some lint we could turn on that would've caught this? It's a drag that cfg typos can silently pass through the compiler.
2018-08-30 20:15:39 +02:00
Pietro Albini
d52fea8796
Rollup merge of #53740 - japaric:readobj, r=alexcrichton
add llvm-readobj to llvm-tools-preview

Similar to readelf but supports more object formats (it seems). Particularly useful to inspect in detail sections (e.g. their flags) and symbols (e.g. their types).

r? @alexcrichton
cc @dvc94ch
2018-08-30 20:15:38 +02:00
Pietro Albini
ed07680028
Rollup merge of #53732 - emilio:foreign-fn, r=nrc
save-analysis: Differentiate foreign functions and statics.
2018-08-30 20:15:37 +02:00
Pietro Albini
0334ce4488
Rollup merge of #53727 - estebank:incorrect-deref-suggestion, r=nikomatsakis
Do not suggest dereferencing in macro

Fix #52783.
2018-08-30 20:15:35 +02:00
Pietro Albini
3ee762870f
Rollup merge of #53702 - jkozlowski:correct_version_for_macro_vis_matcher, r=cramertj
Fix stabilisation version for macro_vis_matcher.

r? @cramertj
2018-08-30 20:15:34 +02:00
Pietro Albini
1535075b58
Rollup merge of #53655 - jcpst:with_applicability, r=estebank
set applicability

Update a few more calls as described in #50723

r? @estebank
2018-08-30 20:15:33 +02:00
Pietro Albini
1c36e76751
Rollup merge of #53513 - nnethercote:inline-shallow_resolve, r=varkor
Force-inline `shallow_resolve` at its hottest call site.

It's a ~1% win on `keccak` and `inflate`.
2018-08-30 20:15:31 +02:00
Pietro Albini
a245d9bbca
Rollup merge of #53476 - GuillaumeGomez:try-from-int-error-partial-eq, r=KodrAus
Add partialeq implementation for TryFromIntError type

Fixes #53458.
2018-08-30 20:15:30 +02:00
Pietro Albini
ba832707cf
Rollup merge of #53472 - eddyb:fx-pls, r=pnkfelix
Use FxHash{Map,Set} instead of the default Hash{Map,Set} everywhere in rustc.

Most of the compiler uses the `Fx` hasher but some places ended up with the default one.
2018-08-30 20:15:29 +02:00
Pietro Albini
0c8b8e8b42
Rollup merge of #53389 - RalfJung:thread-join, r=sfackler
document effect of join on memory ordering

Fixes https://github.com/rust-lang/rust/issues/45467
2018-08-30 20:15:27 +02:00
Pietro Albini
8505270077
Rollup merge of #53129 - nikomatsakis:issue-51172-tweak-test, r=pnkfelix
remove `let x = baz` which was obscuring the real error

fixes #51172
2018-08-30 20:15:26 +02:00
Pietro Albini
2531d43f19
Rollup merge of #53113 - kpp:more_docs_for_cow, r=GuillaumeGomez
Add example for Cow

Add one more example that shows how to keep `Cow` in a struct.

Link to playground: https://play.rust-lang.org/?gist=a9256bdd034b44bc3cdd0044bbcdbb7c&version=stable&mode=debug&edition=2015

Users ask this question in [ruRust](https://gitter.im/ruRust/general) chat time to time and it is not obvious to add `ToOwned<Owned=Target>` to requirements of generic params.
2018-08-30 20:15:25 +02:00
Pietro Albini
b7e74a5614
Rollup merge of #51760 - GuillaumeGomez:add-another-partialeq-example, r=QuietMisdreavus
Add another PartialEq example

r? @steveklabnik
2018-08-30 20:15:23 +02:00
bors
685fb54317 Auto merge of #53535 - TheDarkula:master, r=oli-obk
Made std::intrinsics::transmute() const fn.

r? @oli-obk

tracking issue: #53605
2018-08-30 14:18:22 +00:00
thedarkula
c5cae7935b Made std::intrinsics::transmute() const fn. 2018-08-30 13:06:20 +01:00
bors
0e98621e69 Auto merge of #53757 - oli-obk:validation, r=RalfJung
Use partial but correct vtable layout

r? @RalfJung who suggested to also do this change for nightly, not just beta
2018-08-30 10:41:41 +00:00
bors
03fe4c79f7 Auto merge of #53733 - nnethercote:avoid-unroll_place, r=nikomatsakis
Avoid calling `unroll_place()` in a common case.

This reduces the execution time for `ucd-check` by 25%.

r? @nikomatsakis
2018-08-30 08:20:20 +00:00
bors
f1a5373a1b Auto merge of #53685 - alexcrichton:more-keywords, r=varkor
Generalize `async_idents` to all new keywords

This commit generalizes the existing `async_idents` lint to easily encompass
other identifiers that will be keywords in future editions. The new lint is
called `keyword_idents` and the old `async_idents` lint is registered as renamed
to this new lint.

As a proof of concept the `try` keyword was added to this list as it looks to be
listed as a keyword in the 2018 edition only. The `await` keyword was not added
as it's not listed as a keyword yet.

Closes #53077
2018-08-30 03:30:23 +00:00
bors
6244625cb4 Auto merge of #53479 - joshtriplett:underscore-means-unused, r=eddyb
Don't emit "unused extern crate" warnings for `extern crate foo as _;`

When importing a crate and renaming it to an underscore-prefixed name,
suppress "unused extern crate" warnings (but not idiom lints).
2018-08-30 00:07:15 +00:00
bors
02cb8f2a4f Auto merge of #53564 - MaloJaffre:vecdeque, r=gnzlbg
Reoptimize VecDeque::append

~Unfortunately, I don't know if these changes fix the unsoundness mentioned in #53529, so it is stil a WIP.
This is also completely untested.
The VecDeque code contains other unsound code: one example : [reading unitialized memory](https://play.rust-lang.org/?gist=6ff47551769af61fd8adc45c44010887&version=nightly&mode=release&edition=2015) (detected by MIRI), so I think this code will need a bigger refactor to make it clearer and safer.~

Note: this is based on #53571.
r? @SimonSapin
Cc: #53529 #52553 @YorickPeterse @jonas-schievink @Pazzaz @shepmaster.
2018-08-29 20:08:16 +00:00
Alex Crichton
003cab25d7 Generalize async_idents to all new keywords
This commit generalizes the existing `async_idents` lint to easily encompass
other identifiers that will be keywords in future editions. The new lint is
called `keyword_idents` and the old `async_idents` lint is registered as renamed
to this new lint.

As a proof of concept the `try` keyword was added to this list as it looks to be
listed as a keyword in the 2018 edition only. The `await` keyword was not added
as it's not listed as a keyword yet.

Closes #53077
2018-08-29 09:34:53 -07:00
Josh Triplett
7cec516ef9 Don't emit "unused extern crate" warnings for extern crate foo as _;
When importing a crate and renaming it to an underscore-prefixed name,
suppress "unused extern crate" warnings (but not idiom lints).
2018-08-29 08:53:54 -07:00
bors
e6b35b0e11 Auto merge of #53758 - oli-obk:clippy, r=kennytm
Update clippy submodule

r? @Manishearth @nrc @kennytm
2018-08-29 13:35:25 +00:00
MaloJaffre
21d2a6c986 Add another assert 2018-08-29 13:42:48 +02:00
Oliver Schneider
b96fef6080 Add more features to the workspace so that all tools pick up on it 2018-08-29 13:17:48 +02:00
Oliver Schneider
5983479a4d Update clippy submodule 2018-08-29 13:15:55 +02:00
bors
ba48850409 Auto merge of #53245 - michaelwoerister:thinlto-rust-llvm, r=alexcrichton
[experimental]: Build LLVM with ThinLTO enabled (2nd attempt)

This is https://github.com/rust-lang/rust/pull/51207 revived. This time, I'd like to run actual performance tests to see if it improves compile times.
2018-08-29 10:55:27 +00:00
Michael Woerister
3cf6f0db1a bootstrap: Link LLVM tools dynamically in order to save time in ThinLTO builds. 2018-08-29 12:27:20 +02:00
bors
ca0de63898 Auto merge of #53711 - arielb1:macro-table, r=michaelwoerister
create a valid DefIdTable for proc macro crates

At least the incremental compilation code, and a few other places in the
compiler, require the CrateMetadata for a loaded target crate to contain a
valid DefIdTable for the DefIds in the target.

Previously, the CrateMetadata for a proc macro contained the crate's
"host" DefIdTable, which is of course incompatible with the "target"
DefIdTable, causing ICEs. This creates a DefIdTable that properly refers
to the "proc macro" DefIds.

Fixes #49482.

r? @michaelwoerister

Should we beta-nominate this?
2018-08-29 08:42:20 +00:00
bors
f4e981cfe4 Auto merge of #53684 - alexcrichton:suggest-remove, r=oli-obk
rustc: Suggest removing `extern crate` in 2018

This commit updates the `unused_extern_crates` lint to make automatic
suggestions about removing `extern crate` annotations in the 2018 edition. This
ended up being a little easier than originally though due to what's likely been
fixed issues in the resolver!

Closes #52829
2018-08-29 06:24:30 +00:00
bors
29e6aabceb Auto merge of #53659 - nnethercote:rm-AccumulateVec, r=Mark-Simulacrum
Remove `AccumulateVec` and its uses.

It's basically just a less capable version of `SmallVec`.

FWIW, the only use of `ArrayVec` is now within `HybridIdxSet`.

r? @Mark-Simulacrum
2018-08-29 04:20:01 +00:00
bors
9d69e81e9b Auto merge of #53642 - alexcrichton:fix-target-cpu-native, r=arielb1
Fix warnings about the `native` target-cpu

This fixes a regression from #53031 where specifying `-C target-cpu=native` is
printing a lot of warnings from LLVM about `native` being an unknown CPU. It
turns out that `native` is indeed an unknown CPU and we have to perform a
mapping to an actual CPU name, but this mapping is only performed in one
location rather than all locations we inform LLVM about the target CPU.

This commit centralizes the mapping of `native` to LLVM's value of the native
CPU, ensuring that all locations we inform LLVM about the `target-cpu` it's
never `native`.

Closes #53322
2018-08-29 02:08:02 +00:00
bors
f1d02c3073 Auto merge of #53671 - RalfJung:miri-refactor, r=oli-obk
Miri engine cleanup

* Unify the two maps in memory to store the allocation and its kind together.
* Share the handling of statics between CTFE and miri: The miri engine always
      uses "lazy" `AllocType::Static` when encountering a static.  Acessing that
      static invokes CTFE (no matter the machine).  The machine only has any
      influence when writing to a static, which CTFE outright rejects (but miri
      makes a copy-on-write).
* Add an `AllocId` to by-ref consts so miri can use them as operands without
      making copies.
* Move responsibilities around for the `eval_fn_call` machine hook: The hook
      just has to find the MIR (or entirely take care of everything); pushing the
      new stack frame is taken care of by the miri engine.
* Expose the intrinsics and lang items implemented by CTFE so miri does not
      have to reimplement them.
* Allow Machine to hook into foreign statics (used by miri to get rid of some other hacks).
* Clean up function calling.
* Switch const sanity check to work on operands, not mplaces.
* Move const_eval out of rustc_mir::interpret, to make sure that it does not access private implementation details.

In particular, we can finally make `eval_operand` take `&self`. :-)

Should be merged after https://github.com/rust-lang/rust/pull/53609, across which I will rebase.
2018-08-29 00:02:37 +00:00
Nicholas Nethercote
8cecfa62e8 Remove AccumulateVec and its uses.
It's basically just a less capable version of `SmallVec`.
2018-08-29 08:32:11 +10:00
Alex Crichton
1fd45a13de Fix warnings about the native target-cpu
This fixes a regression from #53031 where specifying `-C target-cpu=native` is
printing a lot of warnings from LLVM about `native` being an unknown CPU. It
turns out that `native` is indeed an unknown CPU and we have to perform a
mapping to an actual CPU name, but this mapping is only performed in one
location rather than all locations we inform LLVM about the target CPU.

This commit centralizes the mapping of `native` to LLVM's value of the native
CPU, ensuring that all locations we inform LLVM about the `target-cpu` it's
never `native`.

Closes #53322
2018-08-28 13:32:11 -07:00
Guillaume Gomez
da4febd51e Add partialeq implementation for TryFromIntError type 2018-08-28 20:40:14 +02:00
Ralf Jung
c9b5fac7da first test const-ness, then hook fn call 2018-08-28 19:57:05 +02:00
Ralf Jung
506dd7058c fix const_prop detecting unary neg underflows 2018-08-28 19:57:05 +02:00
Ralf Jung
e6a5a9418a restructure unary_op to also dispatch on type first; fix promotion with unary '-' overflowing 2018-08-28 19:57:05 +02:00
Ralf Jung
066d2eea25 fix unsized extern types 2018-08-28 19:57:05 +02:00
Ralf Jung
f96208ca5b address nits 2018-08-28 19:57:05 +02:00
bors
7061b27757 Auto merge of #53679 - japaric:cortex-r, r=alexcrichton
add more Cortex-R targets

This expands on PR #53663 to complete the set of Cortex-R targets and builds
rust-std components for them.

r? @alexcrichton

each extra rust-std component (there's 4 of them) takes about 3 minutes to build
on my local machine. In terms of stability (LLVM codegen bugs) these new targets
should be as stable as the Cortex-M ones (e.g. `thumbv7m-none-eabi`).

If the extra build time is too much we can leave the rust-std components out for
now

closes #53663
cc @paoloteti
2018-08-28 16:23:27 +00:00
Eduard-Mihai Burtescu
93f3f5b155 Use FxHash{Map,Set} instead of the default Hash{Map,Set} everywhere in rustc. 2018-08-28 17:04:04 +03:00
MaloJaffre
1908892d3f Fix tidy 2018-08-28 15:59:21 +02:00
MaloJaffre
1a1a7f6167 Add docs and debug asserts 2018-08-28 15:38:56 +02:00
bors
ec4a752202 Auto merge of #53493 - matthewjasper:hair-spans, r=nikomatsakis
Use smaller span for adjustments on block expressions

When returning a mutable reference don't use the entire body of the function as the span for the adjustments at the end.

The error [in this case](https://github.com/rust-lang/rust/compare/master...matthewjasper:hair-spans?expand=1#diff-ecef8b1f15622fb48a803c9b61605c78) is worse, but neither error message is really what we want. I have some ideas on how to get a better error message that will have to wait for a future PR.
2018-08-28 13:12:16 +00:00
Jorge Aparicio
84796cbc01 sort 2018-08-28 14:58:52 +02:00