Commit Graph

80525 Commits

Author SHA1 Message Date
kennytm
ea9b8dd4bd
Rollup merge of #52350 - pietroalbini:bump-bootstrap, r=Mark-Simulacrum
Bump bootstrap compiler to 1.28.0-beta.10

r? @Mark-Simulacrum
2018-07-14 02:56:58 +08:00
kennytm
fe1b41016c
Rollup merge of #52346 - rkruppe:patch-1, r=cramertj
Fix typo in improper_ctypes suggestion

closes #52345
2018-07-14 02:56:57 +08:00
kennytm
3d6840234c
Rollup merge of #52333 - kennytm:linux-core-dump, r=alexcrichton
CI: Enable core dump on Linux, and print their stack trace on segfault.
2018-07-14 02:56:56 +08:00
kennytm
fe64419102
Rollup merge of #52330 - jethrogb:jb/target-link-args, r=varkor
Don't silently ignore invalid data in target spec

This is technically a breaking change, but only because invalid data was previously silently being ignored.
2018-07-14 02:56:55 +08:00
kennytm
383d50f667
Rollup merge of #52322 - varkor:llvm-7-rebuild-trigger, r=alexcrichton
Update llvm-rebuild-trigger in light of LLVM 7 upgrade

Not triggering a LLVM rebuild [since the LLVM 7 upgrade](https://github.com/rust-lang/rust/pull/51966#issuecomment-404624633) causes builds of rustc to fail.

r? @alexcrichton
2018-07-14 02:56:53 +08:00
kennytm
591accf7b2
Rollup merge of #52316 - seanmonstar:waker-unsafety, r=cramertj
task: remove wrong comments about non-existent LocalWake trait

~~A `LocalWaker` is specifically `!Send `, and the unsafety comment around
`LocalWaker::new` only specifies that it be safe to call `wake_local`.
One could then accidentally promote a `LocalWaker` into a `Waker`, which
is universally `Send`, simply via `Waker::from(local_waker)`. A
`LocalWaker` the was built expecting to not be `Send`, such as using
`Rc`, could be sent to other threads safely.~~

~~Separately, though somewhat related, `Context` holds a `&LocalWaker`
internally, and exposes a `waker() -> &Waker` method. This simply
transmutes the `&LocalWaker` to `&Waker`, which would be unsound, except
that you can't "send" a `&Waker`, you'd need to clone it first. Since
`UnsafeWake::clone_raw` requires that it return a `Waker`, the transmute
is not unsound. The transmuted `LocalWaker` will be promoted to a
`Waker` correctly.~~

~~That would mean that if `UnsafeWake::clone_raw` were to be changed, such
as returning `Self` instead of `Waker`, this would no longer be sound.
Thus, this also adds a comment to `clone_raw` to remember this.~~

r? @cramertj
2018-07-14 02:56:52 +08:00
kennytm
2fa00da26f
Rollup merge of #52315 - ljedrz:FIXME_#27942, r=petrochenkov
Resolve FIXME(#27942)

[related issue](https://github.com/rust-lang/rust/issues/27942)

cc [#44366](https://github.com/rust-lang/rust/issues/44366)
2018-07-14 02:56:51 +08:00
kennytm
443150f0ee
Rollup merge of #52310 - Mark-Simulacrum:release-notes-backport-from-stable, r=pietroalbini
Backport 1.27.1 release notes to master

r? @pietroalbini
2018-07-14 02:56:50 +08:00
kennytm
1d035f7bcc
Rollup merge of #52302 - ljedrz:dyn_futureproofing, r=cramertj
Deny bare trait objects in the rest of rust

Add `#![deny(bare_trait_objects)]` to all the modules not covered before (those did not require code changes) that I consider applicable (I left out shims) in order to futureproof them.
2018-07-14 02:56:49 +08:00
kennytm
700f19ad09
Rollup merge of #52300 - ljedrz:dyn_target_test, r=Mark-Simulacrum
Deny bare trait objects in librustc_target and libtest

Enforce `#![deny(bare_trait_objects)]` in `src/librustc_target` and `src/libtest`.
2018-07-14 02:56:47 +08:00
kennytm
a6dc16e075
Rollup merge of #52299 - ljedrz:dyn_libserialize, r=cramertj
Deny bare trait objects in src/libserialize

Enforce `#![deny(bare_trait_objects)]` in `src/libserialize`.
2018-07-14 02:56:46 +08:00
kennytm
d711c5cd7c
Rollup merge of #52293 - ljedrz:dyn_librustc_typeck, r=estebank
Deny bare trait objects in librustc_typeck

Enforce `#![deny(bare_trait_objects)]` in `src/librustc_typeck`.
2018-07-14 02:56:45 +08:00
kennytm
e1452fa71f
Rollup merge of #52290 - ljedrz:dyn_librustc_save_analysis, r=cramertj
Deny bare trait objects in src/librustc_save_analysis

Enforce `#![deny(bare_trait_objects)]` in `src/librustc_save_analysis`.
2018-07-14 02:56:44 +08:00
kennytm
9f79e915ff
Rollup merge of #52280 - japaric:llvm-tools-preview, r=kennytm
llvm-tools-preview: fix build-manifest

r? @alexcrichton
2018-07-14 02:56:42 +08:00
kennytm
dad4efb961
Rollup merge of #52156 - zajlerke:update-deprecation-notice, r=Kimundi
Update std::ascii::ASCIIExt deprecation notes

Fixes #52085
2018-07-14 02:56:41 +08:00
kennytm
a2c3713ea6
Rollup merge of #52003 - Kerollmops:option-replace, r=Kimundi
Implement `Option::replace` in the core library

Here is the implementation of the `Option::replace` method. The first step of [the tracking issue #51998](https://github.com/rust-lang/rust/issues/51998).
2018-07-14 02:56:40 +08:00
kennytm
d8b8402784
Rollup merge of #51962 - crlf0710:patch-2, r=alexcrichton
Provide llvm-strip in llvm-tools component

Shipping this tool gives people reliable way to reduce the generated executable size.

I'm not sure if this strip tool is available from the llvm version current rust is built on. But let's take a look. @japaric
2018-07-14 02:56:37 +08:00
Pietro Albini
04d31df71d
Bump bootstrap compiler to 1.28.0-beta.10 2018-07-13 19:33:48 +02:00
Jethro Beekman
488472d754 Don't silently ignore invalid data in target spec 2018-07-13 10:14:16 -07:00
Robin Kruppe
e20f1d159e Fix typo in improper_ctypes suggestion
closes #52345
2018-07-13 17:09:09 +02:00
kennytm
1e1b800c2e
Enabled core dump on Linux, and print stack trace on failure. 2018-07-13 22:11:02 +08:00
bors
bce32b532d Auto merge of #51987 - nikomatsakis:nll-region-infer-scc, r=pnkfelix
nll experiment: compute SCCs instead of iterative region solving

This is an attempt to speed up region solving by replacing the current iterative dataflow with a SCC computation. The idea is to detect cycles (SCCs) amongst region constraints and then compute just one value per cycle. The graph with all cycles removed is of course a DAG, so we can then solve constraints "bottom up" once the liveness values are known.

I kinda ran out of time this morning so the last commit is a bit sloppy but I wanted to get this posted, let travis run on it, and maybe do a perf run, before I clean it up.
2018-07-13 13:28:55 +00:00
bors
c0955a34bc Auto merge of #51622 - kennytm:three-field-range-inclusive, r=SimonSapin
Change RangeInclusive to a three-field struct.

Fix #45222.

This PR also reverts #48012 (i.e. removed the `try_fold`/`try_rfold` specialization for `RangeInclusive`) because LLVM no longer has trouble recognizing a RangeInclusive loop.
2018-07-13 10:18:38 +00:00
bors
8b48b247dc Auto merge of #52281 - cramertj:fast-tls, r=alexcrichton
Use fast TLS on Fuchsia

I'm not sure why Fuchsia was separated here, but we provide these symbols, and tests are passing in QEMU with this change. cc @raphlinus.

r? @alexcrichton
2018-07-13 08:00:16 +00:00
Niko Matsakis
6918c17048 nit: fix typo 2018-07-13 01:29:10 -04:00
Niko Matsakis
eed2c09a64 nit: fix all_sccs comment 2018-07-13 01:29:10 -04:00
Niko Matsakis
0472da3ed6 nit: tweak comment order 2018-07-13 01:29:10 -04:00
Niko Matsakis
114cdd0816 nit: improve SCC comments 2018-07-13 01:29:10 -04:00
Niko Matsakis
9d2999461f nit: clarify "keep it around" comment 2018-07-13 01:29:10 -04:00
Niko Matsakis
666c365db3 nit: s/successor/successors/ 2018-07-13 01:29:10 -04:00
Niko Matsakis
48c414027d nit: use graph::{self, ..} 2018-07-13 01:29:10 -04:00
Niko Matsakis
3f90bbc556 dump scc graphviz too 2018-07-13 01:29:10 -04:00
Niko Matsakis
d5e77a3c75 impl graphviz trait for a newtype of regioncx 2018-07-13 01:29:10 -04:00
Niko Matsakis
ed36698031 compute region values using SCCs not iterative flow
The strategy is this:

- we compute SCCs once all outlives constraints are known
- we allocate a set of values **per region** for storing liveness
- we allocate a set of values **per SCC** for storing the final values
- when we add a liveness constraint to the region R, we also add it
  to the final value of the SCC to which R belongs
- then we can apply the constraints by just walking the DAG for the
  SCCs and union'ing the children (which have their liveness
  constraints within)

There are a few intermediate refactorings that I really ought to have
broken out into their own commits:

- reverse the constraint graph so that `R1: R2` means `R1 -> R2` and
  not `R2 -> R1`. This fits better with the SCC computation and new
  style of inference (`->` now means "take value from" and not "push
  value into")
  - this does affect some of the UI tests, since they traverse the
    graph, but mostly the artificial ones and they don't necessarily
    seem worse
- put some things (constraint set, etc) into `Rc`. This lets us root
  them to permit mutation and iteration. It also guarantees they don't
  change, which is critical to the correctness of the algorithm.
- Generalize various helpers that previously operated only on points
  to work on any sort of region element.
2018-07-13 01:29:10 -04:00
kennytm
6093128ef3
Changed implementation of the third field to make LLVM optimize it better. 2018-07-13 13:26:07 +08:00
bors
68c39b9fec Auto merge of #52275 - alexcrichton:no-macro-use, r=nrc
rustc: Lint against `#[macro_use]` in 2018 idioms

This commit adds a lint to the compiler to warn against the `#[macro_use]`
directive as part of the `rust_2018_idioms` lint. This lint is turned off by
default and is only enabled when the `use_extern_macros` feature is also
enabled.

The lint here isn't fully fleshed out as it's just a simple warning rather than
suggestions of how to actually import the macro, but hopefully it's a good base
to start from!

cc #52043
2018-07-13 03:40:33 +00:00
kennytm
6e0dd9ec03
Include is_empty() in PartialEq and Hash.
When the index is not PartialOrd, always treat the range as empty.
2018-07-13 09:53:37 +08:00
kennytm
b6ea93e464
Upgrade implementation of StepBy<RangeInclusive<_>>. 2018-07-13 09:53:37 +08:00
kennytm
d299f03e28
Fix some RangeInclusive test cases. 2018-07-13 09:53:37 +08:00
kennytm
0d7e9933d3
Change RangeInclusive to a three-field struct.
Fix #45222.
2018-07-13 09:53:36 +08:00
bors
e92e9ce0d8 Auto merge of #52046 - cramertj:fix-generator-mir, r=eddyb
Ensure StorageDead is created even if variable initialization fails

Rebase and slight cleanup of https://github.com/rust-lang/rust/pull/51109
Fixes https://github.com/rust-lang/rust/issues/49232

r? @eddyb
2018-07-13 00:38:17 +00:00
Sean McArthur
4f4e91a69d task: remove wrong comments about non-existent LocalWake trait 2018-07-12 15:43:57 -07:00
Alex Crichton
0b969a9d68 rustc: Lint against #[macro_use] in 2018 idioms
This commit adds a lint to the compiler to warn against the `#[macro_use]`
directive as part of the `rust_2018_idioms` lint. This lint is turned off by
default and is only enabled when the `use_extern_macros` feature is also
enabled.

The lint here isn't fully fleshed out as it's just a simple warning rather than
suggestions of how to actually import the macro, but hopefully it's a good base
to start from!

cc #52043
2018-07-12 14:10:39 -07:00
bors
64f7de9216 Auto merge of #51339 - sdroege:exact-chunks-remainder, r=alexcrichton
Add ExactChunks::remainder and ExactChunks::into_remainder

These allow to get the leftover items of the slice that are not being
iterated as part of the iterator due to not filling a complete chunk.

The mutable version consumes the slice because otherwise we would either
a) have to borrow the iterator instead of taking the lifetime of
the underlying slice, which is not what *any* of the other iterator
functions is doing, or
b) would allow returning multiple mutable references to the same data

The current behaviour of consuming the iterator is consistent with
IterMut::into_slice for the normal iterator.

----

This is related to https://github.com/rust-lang/rust/issues/47115#issuecomment-392685177 and the following comments.

While there the discussion was first about a way to get the "tail" of the iterator (everything from the slice that is still not iterated yet), this gives kind of unintuitive behaviour and is inconsistent with how the other slice iterators work.

Unintuitive because the `next_back` would have no effect on the tail (or otherwise the tail could not include the remainder items), inconsistent because a) generally the idea of the slice iterators seems to be to only ever return items that were not iterated yet (and don't provide a way to access the same item twice) and b) we would return a "flat" `&[T]` slice but the iterator's shape is `&[[T]]` instead, c) the mutable variant would have to borrow from the iterator instead of the underlying slice (all other iterator functions borrow from the underlying slice!)

As such, I've only implemented functions to get the remainder. This also allows the implementation to be completely safe still (and around slices instead of raw pointers), while getting the tail would either be inefficient or would have to be implemented around raw pointers.

CC @kerollmops
2018-07-12 19:39:04 +00:00
varkor
9ead0d82e1 Update llvm-rebuild-trigger in light of LLVM 7 upgrade 2018-07-12 12:32:35 -07:00
Taylor Cramer
9c15a6606e Ensure StorageDead is created even if variable initialization fails 2018-07-12 10:13:41 -07:00
ljedrz
72f096b628 Resolve FIXME(#27942) 2018-07-12 18:59:56 +02:00
Mark Rousskov
4c340a28ad Backport 1.27.1 release notes to master 2018-07-12 10:42:00 -06:00
bors
6cc42a4488 Auto merge of #52256 - tinco:issue_52255, r=sanxiyn
make pretty source comparison check be fatal (fixes #52255)

This is not ready for merging because it reveals (at least) two regressions in the pretty suite. Should I attempt to fix those in this PR also?
2018-07-12 15:12:37 +00:00
bors
7db82ccd76 Auto merge of #52303 - kennytm:rollup, r=kennytm
Rollup of 9 pull requests

Successful merges:

 - #51816 (bootstrap: write texts to a .tmp file first for atomicity)
 - #51912 (impl Clone for Box<CStr>, Box<OsStr>, Box<Path>)
 - #52164 (use proper footnote syntax for references)
 - #52220 (Deny bare trait objects in `src/bootstrap`)
 - #52276 (rustc: Verify #[proc_macro] is only a word)
 - #52277 (Uncapitalize "If")
 - #52287 (Deny bare trait objects in src/librustc_resolve)
 - #52295 (Deny bare trait objects in src/libsyntax_ext)
 - #52298 (make reference to dirs crate clickable in terminals)

Failed merges:

r? @ghost
2018-07-12 12:50:13 +00:00