Commit Graph

75006 Commits

Author SHA1 Message Date
bors
0be38e1ce3 Auto merge of #48600 - Mark-Simulacrum:rustbuild-updates-2, r=alexcrichton
Remove --host and --target arguments to configure in Dockerfiles

These arguments are passed to the relevant x.py invocation in all cases
anyway. As such, there is no need to separately configure them. x.py
will ignore the configuration when they are passed on the command line
anyway.

r? @alexcrichton
2018-03-04 01:32:57 +00:00
bors
e026b59cf4 Auto merge of #48694 - kennytm:rollup, r=kennytm
Rollup of 8 pull requests

- Successful merges: #48283, #48466, #48569, #48629, #48637, #48680, #48513, #48664
- Failed merges:
2018-03-03 19:40:21 +00:00
kennytm
ea354b6a01
Rollup merge of #48664 - Keruspe:codegen, r=alexcrichton
make codegen-backends directory name configurable

This allows to parallel-install several versions of rust system-wide
Fixes #48263
2018-03-04 02:18:25 +08:00
kennytm
6f07aaa428
Rollup merge of #48513 - alexcrichton:simd, r=JoshTriplett
std: Add `arch` and `simd` modules

This commit imports the `stdsimd` crate into the standard library,
creating an `arch` and `simd` module inside of both libcore and libstd.
Both of these modules are **unstable** and will continue to be so until
RFC 2335 is stabilized.

As a brief recap, the modules are organized as so:

* `arch` contains all current architectures with intrinsics, for example
  `std::arch::x86`, `std::arch::x86_64`, `std::arch::arm`, etc. These
  modules contain all of the intrinsics defined for the platform, like
  `_mm_set1_epi8`.
* In the standard library, the `arch` module also exports a
  `is_target_feature_detected` macro which performs runtime detection to
  determine whether a target feature is available at runtime.
* The `simd` module contains experimental versions of strongly-typed
  lane-aware SIMD primitives, to be fully fleshed out in a future RFC.

The main purpose of this commit is to start pulling in all these
intrinsics and such into the standard library on nightly and allow
testing and such. This'll help allow users to easily kick the tires and
see if intrinsics work as well as allow us to test out all the
infrastructure for moving the intrinsics into the standard library.
2018-03-04 02:17:38 +08:00
kennytm
e71c96fab9
Rollup merge of #48680 - steveklabnik:no-toc, r=nikomatsakis
Don't produce TOCs for doc markdown files

Currently, we are producing headers for markdown files,
which is generally not what we want. As such, passing this
flag causes them to render normally.

https://doc.rust-lang.org/nightly/book/ is an example page currently where this is done incorrectly.
2018-03-04 02:17:36 +08:00
bors
3b8bd530b0 Auto merge of #48583 - dotdash:jt_assume, r=alexcrichton
Backport LLVM fixes for a JumpThreading / assume intrinsic bug

This fixes the original cause of #48116 and restores the assume intrinsic that was removed as a workaround.

r? @alexcrichton
2018-03-03 14:09:56 +00:00
kennytm
fb411d86c6
Rollup merge of #48637 - segevfiner:restore-rust-mingw-download, r=alexcrichton
Restore the download of rust-mingw

The build might otherwise break due to mixing MinGW object files from rust-std and the local MinGW which might be newer/older than the version used to build rust-std.

Fixes #48272

r? @alexcrichton
2018-03-03 18:45:47 +08:00
kennytm
ad1cc0c1bc
Rollup merge of #48629 - strake:char, r=alexcrichton
impl Clone for ::std_unicode::char::{ToLowercase, ToUppercase}
2018-03-03 18:45:46 +08:00
kennytm
14b6262fde
Rollup merge of #48569 - Phlosioneer:x-py-help-optimization, r=petrochenkov
Improve --help performance for x.py

Since compiling the bootstrap command doesn't require any submodules,
we can skip updating submodules when a --help command is passed in.
On my machine, this saves 1 minute if the submodules are already
downloaded, and 10 minutes if run on a clean repo.

This commit also adds a message before compiling/downloading anything
when a --help command is passed in, to tell the user WHY --help
takes so long to complete. It also points the user to the bootstrap
README.md for faster help.

Finally, this fixes one warning message that still referenced using
make instead of x.py, even though x.py is now the standard way of
building rust.

Closes #37305
2018-03-03 18:45:45 +08:00
kennytm
ae6fe8f283
Rollup merge of #48466 - sanxiyn:no-neon, r=alexcrichton
Disable NEON on musl ARMv7

`armv7-unknown-linux-musleabihf` target diverged a bit from `armv7-unknown-linux-gnueabihf` target. This PR re-syncs them.

Fix #47765.
2018-03-03 18:45:44 +08:00
kennytm
65f48a4edf
Rollup merge of #48283 - QuietMisdreavus:rustdoc-readme, r=@GuillaumeGomez
add readme for librustdoc

In the same vein as the other compiler-library readmes, here's one for rustdoc! It's mainly a "how does rustdoc even" blog-post-style writeup, but i wanted to have something in-repo so people could get a sense of what bits did what.
2018-03-03 18:45:42 +08:00
bors
c9b86a9178 Auto merge of #48689 - Manishearth:rollup, r=Manishearth
Rollup (unsupervised)

less risky PRs, to run overnight
2018-03-03 07:24:11 +00:00
Manish Goregaokar
40d2a98503
Rollup merge of #48641 - alexcrichton:no-hash-l-paths, r=michaelwoerister
Fixes #47311.
r? @nrc
2018-03-02 22:01:31 -08:00
Manish Goregaokar
3fa4bff31b
Rollup merge of #48635 - scottmcm:faster-zip-nth, r=kennytm
Fixes #47311.
r? @nrc
2018-03-02 22:01:29 -08:00
Manish Goregaokar
6fa14f0e5f
Rollup merge of #48628 - strake:reverse, r=sfackler
Fixes #47311.
r? @nrc
2018-03-02 22:01:27 -08:00
Manish Goregaokar
8c7c8fb212
Rollup merge of #48338 - estebank:match-missing-comma, r=petrochenkov
Fixes #47311.
r? @nrc
2018-03-02 22:01:23 -08:00
Manish Goregaokar
8bf026df5b
Rollup merge of #48328 - frewsxcv:frewsxcv-clarify-error-zero-duration, r=sfackler
Fixes #47311.
r? @nrc
2018-03-02 22:01:20 -08:00
Manish Goregaokar
65253fd2eb
Rollup merge of #48259 - tinaun:patch-1, r=alexcrichton
Fixes #47311.
r? @nrc
2018-03-02 22:01:16 -08:00
Manish Goregaokar
85a6b928aa
Rollup merge of #48477 - Manishearth:dyn-trait-fixes, r=nmatsakis
Fixes #47311.
r? @nrc
2018-03-02 22:01:04 -08:00
Manish Goregaokar
40f218f703 Remove allow(bare_trait_object) from librustc_mir 2018-03-02 21:02:37 -08:00
Manish Goregaokar
3c95814294 Perform manual fixups 2018-03-02 21:02:37 -08:00
Manish Goregaokar
8d730ed527 Run Rustfix on librustc_mir 2018-03-02 21:02:37 -08:00
Manish Goregaokar
fb7980d796 Remove allow(bare_trait_object) from librustc 2018-03-02 21:02:36 -08:00
Manish Goregaokar
f3cb962f63 Perform manual fixups 2018-03-02 21:02:36 -08:00
Manish Goregaokar
69c53ac904 Run Rustfix on librustc 2018-03-02 21:02:34 -08:00
bors
5f1f628765 Auto merge of #48666 - sgrif:sg-revert-perf-regression, r=nikomatsakis
Revert "correct subtle bug in the type variable code"

This reverts commit ccd92c2a4e.

This commit is the source of a major perf regression, and was not
intended to be included in #47861. At some point I must have
accidentally re-added the commit.

Fixes #48660.

r? @nikomatsakis
2018-03-03 04:54:28 +00:00
bors
e8af0f4c1f Auto merge of #48586 - Zoxc:atomic-rc, r=michaelwoerister
Replace Rc with Lrc for shared data

This replaces `Rc`s reachable from `TyCtxt` with `Lrc`. This has no effect unless `cfg(parallel_queries)` is set. It also contains a fix for the `Decodable` impl for `Arc`.

r? @nikomatsakis
2018-03-03 02:02:45 +00:00
tinaun
1011b8a3f1 Stabilize Unsafe Pointer Methods
also minor doc fixes.

Closes #43941
2018-03-02 19:20:36 -05:00
Alex Crichton
c72537f204 std: Add arch and simd modules
This commit imports the `stdsimd` crate into the standard library,
creating an `arch` and `simd` module inside of both libcore and libstd.
Both of these modules are **unstable** and will continue to be so until
RFC 2335 is stabilized.

As a brief recap, the modules are organized as so:

* `arch` contains all current architectures with intrinsics, for example
  `std::arch::x86`, `std::arch::x86_64`, `std::arch::arm`, etc. These
  modules contain all of the intrinsics defined for the platform, like
  `_mm_set1_epi8`.
* In the standard library, the `arch` module also exports a
  `is_target_feature_detected` macro which performs runtime detection to
  determine whether a target feature is available at runtime.
* The `simd` module contains experimental versions of strongly-typed
  lane-aware SIMD primitives, to be fully fleshed out in a future RFC.

The main purpose of this commit is to start pulling in all these
intrinsics and such into the standard library on nightly and allow
testing and such. This'll help allow users to easily kick the tires and
see if intrinsics work as well as allow us to test out all the
infrastructure for moving the intrinsics into the standard library.
2018-03-02 14:34:07 -08:00
steveklabnik
900d511fdc Don't produce TOCs for doc markdown files
Currently, we are producing headers for markdown files,
which is generally not what we want. As such, passing this
flag causes them to render normally.
2018-03-02 13:52:13 -05:00
Mark Simulacrum
ab7ce1c3c4 Remove --host and --target arguments to configure
These arguments are passed to the relevant x.py invocation in all cases
anyway. As such, there is no need to separately configure them. x.py
will ignore the configuration when they are passed on the command line
anyway.
2018-03-02 11:28:29 -07:00
Sean Griffin
f5f53e9677 Revert "correct subtle bug in the type variable code"
This reverts commit ccd92c2a4e.

This commit is the source of a major perf regression, and was not
intended to be included in #47861. At some point I must have
accidentally re-added the commit.
2018-03-02 06:52:12 -07:00
Marc-Antoine Perennou
6250a47ea6 make codegen-backends directory name configurable
This allows to parallel-install several versions of rust system-wide
Fixes #48263

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2018-03-02 13:51:02 +01:00
John Kåre Alsaker
fce7201612 Impl !Send and !Sync for SourceFile 2018-03-02 10:48:52 +01:00
John Kåre Alsaker
b74e97cf42 Replace Rc with Lrc for shared data 2018-03-02 10:48:52 +01:00
John Kåre Alsaker
878f5b0514 Fix Decodable impl for Arc 2018-03-02 10:45:32 +01:00
Phlosioneer
2269ff521f Remove print_what_bootstrap_means
It was an existing solution to tell the user why a --help command
takes a long time to process. However, it would only print if the
stage0 rust compiler needed to be downloaded, it came after
update_submodules (which took a long time), and it was immediately
followed by download messages and loading bars, meaning users could
easily gloss over the message.

This commit also moves the help message out of main(), and instead
puts it at the top of bootstrap(). main() is intended to be minimal,
only handling error messages.
2018-03-02 03:29:35 -05:00
bors
9cb18a92ad Auto merge of #48653 - Manishearth:rollup2, r=Manishearth
Another rollup

None
2018-03-02 06:08:15 +00:00
bors
ddfbf2b0f4 Auto merge of #47861 - sgrif:sg-rebase-chalkify-universe-refactorings, r=nikomatsakis
Rebased refactorings for Chalk

The code is Niko's, I just handled the rebase.

r? @nikomatsakis
2018-03-01 21:14:35 +00:00
Alex Crichton
2e9d9d48d5 rustc: More stable hashes of command line arguments
Currently rustc isn't always the best at producing deterministic builds of a
crate when the source directory of a crate is changed. This is happening due to
what appears two different sources:

* First the `-L` paths passed to rustc are hashed into the crate hash. These
  paths through Cargo are typically absolute paths that can vary if the build
  directory changes.

* Next the paths passed to `--extern` are also hashed which like `-L` can change
  if the build directory changes.

This commit fixes these two sources of nondeterminism by ensuring that avoiding
tracking the hashes of these arguments on the command line. For `-L` paths
they're either related to loading crates (whose hashes are tracked elsewhere) or
native librarise used in the linking phase (which isn't incremental). The
`--extern` paths are similar in that they're related to crate resolution which
is already tracked independently of the command line arguments.

Closes #48019
2018-03-01 12:05:53 -08:00
kennytm
2b3c815ddf Rollup merge of #48570 - Amanieu:aarch64_features, r=alexcrichton
Add AArch64 features to whitelist
2018-03-01 09:29:43 -08:00
Manish Goregaokar
a080d7b2b2 Rollup merge of #48626 - teiesti:fix-readme, r=frewsxcv
Fix link to rustc guide in README.md

This is a follow-up to #48479 and fixes a minor bug with the link to the rustc guide in the README.

r? @nikomatsakis

cc @mark-i-m
2018-03-01 09:29:42 -08:00
Manish Goregaokar
cf0638cfde Rollup merge of #48610 - ishitatsuyuki:ishitatsuyuki-patch-1, r=nikomatsakis
Add regression test for #48551

[Issue link](https://github.com/rust-lang/rust/issues/48551)
2018-03-01 09:29:42 -08:00
Manish Goregaokar
b812b77094 Rollup merge of #48585 - stjepang:stabilize-localkey-try_with, r=alexcrichton
Stabilize LocalKey::try_with

The `LocalKey::try_with` method is now stabilized.

`LocalKey::state` and `LocalKeyState` marked as deprecated. Although, is there any reason to keep them - should we perhaps remove them completely?

Closes #27716

r? @alexcrichton
2018-03-01 09:29:41 -08:00
Manish Goregaokar
8025e1555c Rollup merge of #48572 - alexcrichton:noexcept-msvc2, r=eddyb
rustc: Tweak funclet cleanups of ffi functions

This commit is targeted at addressing #48251 by specifically fixing a case where
a longjmp over Rust frames on MSVC runs cleanups, accidentally running the
"abort the program" cleanup as well. Added in #46833 `extern` ABI functions in
Rust will abort the process if Rust panics, and currently this is modeled as a
normal cleanup like all other destructors.

Unfortunately it turns out that `longjmp` on MSVC is implemented with SEH, the
same mechanism used to implement panics in Rust. This means that `longjmp` over
Rust frames will run Rust cleanups (even though we don't necessarily want it
to). Notably this means that if you `longjmp` over a Rust stack frame then that
probably means you'll abort the program because one of the cleanups will abort
the process.

After some discussion on IRC it turns out that `longjmp` doesn't run cleanups
for *caught* exceptions, it only runs cleanups for cleanup pads. Using this
information this commit tweaks the codegen for an `extern` function to
a catch-all clause for exceptions instead of a cleanup block. This catch-all is
equivalent to the C++ code:

    try {
        foo();
    } catch (...) {
        bar();
    }

and in fact our codegen here is designed to match exactly what clang emits for
that C++ code!

With this tweak a longjmp over Rust code will no longer abort the process. A
longjmp will continue to "accidentally" run Rust cleanups (destructors) on MSVC.
Other non-MSVC platforms will not rust destructors with a longjmp, so we'll
probably still recommend "don't have destructors on the stack", but in any case
this is a more surgical fix than #48567 and should help us stick to standard
personality functions a bit longer.
2018-03-01 09:29:40 -08:00
Manish Goregaokar
75b8c10391 Rollup merge of #48522 - etaoins:fix-find-width-of-character-at-span-bounds-check, r=estebank
Fix find_width_of_character_at_span bounds check

Commit 0bd96671f0 added bounds checking of our current target byte position to prevent infinite loops. Unfortunately it was comparing the file-relative `target` versus the global `file_start_pos` and `file_end_pos`.

The result is failing to detect multibyte characters unless their file-relative offset fit within their global offset. This causes other parts of the compiler to generate spans pointing to the middle of a
multibyte character which will ultimately panic in `bytepos_to_file_charpos`.

Fix by comparing the `target` to the total file size when moving forward and doing checked subtraction when moving backwards. This should preserve the intent of the bounds check while removing the offset confusion.

cc @davidtwco

Fixes #48508
2018-03-01 09:29:40 -08:00
Manish Goregaokar
38f4d557d0 Rollup merge of #48500 - petrochenkov:parpat, r=nikomatsakis
Support parentheses in patterns under feature gate

This is a prerequisite for any other extensions to pattern syntax - `|` with multiple patterns, type ascription, `..PAT` in slice patterns.

Closes https://github.com/rust-lang/rfcs/issues/554
2018-03-01 09:29:39 -08:00
Manish Goregaokar
39d5e1cba6 Rollup merge of #48446 - mark-i-m:e0245, r=mark-i-m
Remove E0245; improve E0404

Fix #36337

Somehow this is currently breaking --explain, but I don't understand how.

r? @estebank
2018-03-01 09:29:38 -08:00
Manish Goregaokar
eadea4ab1a Rollup merge of #48405 - kennytm:autotoolstate-follow-up, r=Mark-Simulacrum
Auto-toolstate management follow-up.

Tracking comment: https://github.com/rust-lang/rust/issues/45861#issuecomment-367302777

* Fixed rust-lang-nursery/rust-toolstate#1, a proper link to the PR will be included.
* Fixed rust-lang-nursery/rust-toolstate#2, a comment will be posted to the PR if the toolstate changed
* Toolstate regression will be rejected at the last week of the 6-week cycle (currently entirely date-based).
* Implemented https://internals.rust-lang.org/t/the-current-submodule-setup-is-not-tenable/6593, moved doc tests of Nomicon, Reference, Rust-by-Example and The Book to the "tools" job and thus allowed to fail like other external tools.
2018-03-01 09:29:37 -08:00
Segev Finer
5332d9a8e8 Document why we download rust-mingw 2018-03-01 18:33:14 +02:00