]> git.lizzy.rs Git - rust.git/log
rust.git
7 years agoDisconnect ar from cc on OpenBSD
Sébastien Marie [Sat, 17 Dec 2016 10:22:41 +0000 (11:22 +0100)]
Disconnect ar from cc on OpenBSD

OpenBSD usually use an alternative compiler (`egcc') from ports. But the
`ar' is unprefixed as it comes from base.

7 years agoAuto merge of #38359 - alexcrichton:sccache, r=brson
bors [Fri, 16 Dec 2016 07:26:41 +0000 (07:26 +0000)]
Auto merge of #38359 - alexcrichton:sccache, r=brson

rustbuild: Add sccache support

This commit adds support for sccache, a ccache-like compiler which works on MSVC
and stores results into an S3 bucket. This also switches over all Travis and
AppVeyor automation to using sccache to ensure a shared and unified cache over
time which can be shared across builders.

The support for sccache manifests as a new `--enable-sccache` option which
instructs us to configure LLVM differently to use a 'sccache' binary instead of
a 'ccache' binary. All docker images for Travis builds are updated to download
Mozilla's tooltool builds of sccache onto various containers and systems.
Additionally a new `rust-lang-ci-sccache` bucket is configured to hold all of
our ccache goodies.

---

Note that this does not currently change Windows [due to previously written up issues](https://github.com/rust-lang/rust/issues/38119#issuecomment-266631585). Despite that, however, I was curious to get timings for the builds on Travis to see what ranges we're working with. As a result, this is a WIP PR I'm using to gauge build times and such.

7 years agoAuto merge of #38357 - arielb1:deterministic-hash, r=michaelwoerister
bors [Fri, 16 Dec 2016 03:56:47 +0000 (03:56 +0000)]
Auto merge of #38357 - arielb1:deterministic-hash, r=michaelwoerister

make deterministic_hash host-architecture-independent

`DefPath::deterministic_hash` used to call `std::hash::Hash`, which depends on the current architecture in several ways, which would prevent metadata written on one host architecture from being successfully read on another one.

Use a hasher we control instead.

Fixes #38177.

r? @michaelwoerister

7 years agoAuto merge of #38352 - bluss:unaligned-metadata, r=eddyb
bors [Fri, 16 Dec 2016 00:52:35 +0000 (00:52 +0000)]
Auto merge of #38352 - bluss:unaligned-metadata, r=eddyb

Fix unaligned loads in librustc_metadata

Creating a `&[u32]` from an `&[u8]` is not necessarily valid, and crashes
on certain platforms if the data is not well aligned.

7 years agoAuto merge of #38394 - alexcrichton:fix-nightlies, r=brson
bors [Thu, 15 Dec 2016 19:43:28 +0000 (19:43 +0000)]
Auto merge of #38394 - alexcrichton:fix-nightlies, r=brson

rustbuild: Package rust-mingw by default

This fixes the `make dist` step on MinGW to package the `rust-mingw` component
by default. This should hopefully be the last step in fixing nightlies.

7 years agoUse StableHasher everywhere
Ariel Ben-Yehuda [Tue, 13 Dec 2016 23:45:03 +0000 (01:45 +0200)]
Use StableHasher everywhere

The standard implementations of Hasher have architecture-dependent
results when hashing integers. This causes problems when the hashes are
stored within metadata - metadata written by one host architecture can't
be read by another.

To fix that, implement an architecture-independent StableHasher and use
it in all places an architecture-independent hasher is needed.

Fixes #38177.

7 years agorustbuild: Package rust-mingw by default
Alex Crichton [Thu, 15 Dec 2016 18:05:41 +0000 (10:05 -0800)]
rustbuild: Package rust-mingw by default

This fixes the `make dist` step on MinGW to package the `rust-mingw` component
by default. This should hopefully be the last step in fixing nightlies.

7 years agoAuto merge of #38331 - bluss:assume-stage, r=alexcrichton
bors [Thu, 15 Dec 2016 14:01:55 +0000 (14:01 +0000)]
Auto merge of #38331 - bluss:assume-stage, r=alexcrichton

rustbuild: Add cli option --keep-stage

This option is intended to be used like:

./x.py build --stage 1 --keep-stage 0

Which skips all stage 0 steps, so that stage 1 can be recompiled
directly (even if for example libcore has changes).

This is useful when working on `cfg(not(stage0))` parts of the
libraries or when re-running stage 1 tests in libraries in general.

Fixes #38326

7 years agoAuto merge of #38185 - jsgf:test-list, r=alexcrichton
bors [Thu, 15 Dec 2016 09:26:25 +0000 (09:26 +0000)]
Auto merge of #38185 - jsgf:test-list, r=alexcrichton

libtest: add --list option to list tests and benchmarks

This option lists all the tests and benchmarks a binary provides without running any of them.
By default the listing is sent to stdout (intended for human consumption), but if `--logfile` is also specified, it is also written there in an easily parsable form.

If filters are specified, they're applied before the output is emitted. The human output will also include a summary unless `-q` is specified.

7 years agoAuto merge of #37702 - redox-os:redox, r=brson
bors [Thu, 15 Dec 2016 06:23:11 +0000 (06:23 +0000)]
Auto merge of #37702 - redox-os:redox, r=brson

Redox Support Preview

# Important - This is only a preview of a working `sys::redox`.

Compiling the Redox default distribution with this `libstd` results in a fully functioning distribution. As such, all further changes would be cosmetic or implementing features that have not been used by the default distribution (of which there are only a small number).

I do not expect this to be merged, but would like to discuss how it may be improved and get feedback.

There are a few `unimplemented!()` - `cloexec` for example. I have documented them below. These would be resolved before desiring a merge.

There are also issues with how the Redox syscall library is called - currently I am using a re-export in `libc` but that probably would not be desired.

7 years agoAuto merge of #38375 - petrochenkov:prim, r=eddyb
bors [Thu, 15 Dec 2016 02:39:34 +0000 (02:39 +0000)]
Auto merge of #38375 - petrochenkov:prim, r=eddyb

Fix regression in resolution of primitive types

Fix often encountered ICE.
Extracted from https://github.com/rust-lang/rust/pull/38154
Fixes https://github.com/rust-lang/rust/issues/38155, fixes https://github.com/rust-lang/rust/issues/38188, fixes https://github.com/rust-lang/rust/issues/38277, fixes https://github.com/rust-lang/rust/issues/38280, fixes https://github.com/rust-lang/rust/issues/38292, fixes https://github.com/rust-lang/rust/issues/38311, fixes https://github.com/rust-lang/rust/issues/38344, fixes https://github.com/rust-lang/rust/issues/38363, fixes https://github.com/rust-lang/rust/issues/38372 (duplicates)

r? @jseyfried or @eddyb or @nrc

7 years agorustbuild: Add small description of --keep-stage
Ulrik Sverdrup [Thu, 15 Dec 2016 00:10:44 +0000 (01:10 +0100)]
rustbuild: Add small description of --keep-stage

7 years agorustbuild: Add sccache support
Alex Crichton [Mon, 12 Dec 2016 19:36:52 +0000 (11:36 -0800)]
rustbuild: Add sccache support

This commit adds support for sccache, a ccache-like compiler which works on MSVC
and stores results into an S3 bucket. This also switches over all Travis and
AppVeyor automation to using sccache to ensure a shared and unified cache over
time which can be shared across builders.

The support for sccache manifests as a new `--enable-sccache` option which
instructs us to configure LLVM differently to use a 'sccache' binary instead of
a 'ccache' binary. All docker images for Travis builds are updated to download
Mozilla's tooltool builds of sccache onto various containers and systems.
Additionally a new `rust-lang-ci-sccache` bucket is configured to hold all of
our ccache goodies.

7 years agoAuto merge of #38374 - alexcrichton:makefile-fix, r=brson
bors [Wed, 14 Dec 2016 23:37:21 +0000 (23:37 +0000)]
Auto merge of #38374 - alexcrichton:makefile-fix, r=brson

mk: Fix `make check`

When the rustc-unicode crate was renamed to std-unicode we just need to continue
to filter it out of the crates being tested.

7 years agoFix regression in resolution of primitive types
Vadim Petrochenkov [Wed, 14 Dec 2016 23:12:08 +0000 (02:12 +0300)]
Fix regression in resolution of primitive types

7 years agomk: Fix `make check`
Alex Crichton [Wed, 14 Dec 2016 23:05:20 +0000 (15:05 -0800)]
mk: Fix `make check`

When the rustc-unicode crate was renamed to std-unicode we just need to continue
to filter it out of the crates being tested.

7 years agoAuto merge of #38367 - alexcrichton:fix-nightiles, r=brson
bors [Wed, 14 Dec 2016 20:35:10 +0000 (20:35 +0000)]
Auto merge of #38367 - alexcrichton:fix-nightiles, r=brson

rustbuild: Run `dist` on a `distcheck`

This is what the nightly bots expect, so let's be sure to do that.

7 years agorustbuild: Run `dist` on a `distcheck`
Alex Crichton [Wed, 14 Dec 2016 18:59:17 +0000 (10:59 -0800)]
rustbuild: Run `dist` on a `distcheck`

This is what the nightly bots expect, so let's be sure to do that.

7 years agolibtest: add --list option to list tests and benchmarks
Jeremy Fitzhardinge [Mon, 5 Dec 2016 22:54:28 +0000 (14:54 -0800)]
libtest: add --list option to list tests and benchmarks

This option lists all the tests and benchmarks a binary provides. By default the listing
is sent to stdout, but if --logfile is also specified, it is written there.

If filters are specified, they're applied before the output is emitted.

7 years agoAuto merge of #38295 - dylanmckay:llvm-4.0-di-globalvar, r=michaelwoerister
bors [Wed, 14 Dec 2016 17:36:01 +0000 (17:36 +0000)]
Auto merge of #38295 - dylanmckay:llvm-4.0-di-globalvar, r=michaelwoerister

[LLVM 4.0] Update LLVM global variable debug info API for 4.0

This teaches Rust about an LLVM 4.0 API change for creating debug info
for global variables.

This change was made in upstream LLVM patch https://reviews.llvm.org/D20147

This is almost a 1:1 copy of how clang did it in http://reviews.llvm.org/D20415

7 years agoMerge branch 'master' into redox
Jeremy Soller [Wed, 14 Dec 2016 17:20:12 +0000 (10:20 -0700)]
Merge branch 'master' into redox

7 years agoAuto merge of #38351 - sanxiyn:doc-test-args, r=alexcrichton
bors [Wed, 14 Dec 2016 14:35:42 +0000 (14:35 +0000)]
Auto merge of #38351 - sanxiyn:doc-test-args, r=alexcrichton

Document --test-args for rustbuild

There are three changes:

* Replace --filter with --test-args
* Delete `./x.py test src/test/run-pass/assert-*` example, which doesn't work
* As driveby, update Buildbot URLs to https

Fix #38275.

r? @alexcrichton

7 years agoAuto merge of #38340 - alexcrichton:fix-travis, r=alexcrichton
bors [Wed, 14 Dec 2016 09:56:38 +0000 (09:56 +0000)]
Auto merge of #38340 - alexcrichton:fix-travis, r=alexcrichton

Fix travis builds

After reading some articles [1] [2] yesterday about Docker and the "init"
process I got to thinking about the problems that we've been seeing on Travis.
The basic problem is that a Linux system may need an "init" process to work
properly when processes become zombies. Docker by default doesn't handle this
and the root process typically isn't an init process, so this can occasionally
cause quite a few problems.

We've been seeing spurious errors on Travis inside containers which look like
OOM and such, but my guess is that zombie processes were being reparented to the
top-level shell. The shell didn't expect the zombies and then behaved very
strangely.

This commit fixes these problems by using Yelp's "dumb-init" program [2] as the
init process in all of our containers. This ensures that there's a valid init
ready to reap children when they're reparented, which our test suite apparently
generates a bunch of throughout the tests and such.

[1]: https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/
[2]: https://engineeringblog.yelp.com/2016/01/dumb-init-an-init-for-docker.html

7 years agoUpdate LLVM global variable debug info API for 4.0
Dylan McKay [Sun, 11 Dec 2016 09:08:20 +0000 (22:08 +1300)]
Update LLVM global variable debug info API for 4.0

This teaches Rust about an LLVM 4.0 API change for creating debug info
for global variables.

This change was made in upstream LLVM patch https://reviews.llvm.org/D20147

This is almost 1:1 copy of how clang did it in http://reviews.llvm.org/D20415

7 years agoAuto merge of #38332 - bluss:copy-prop-arguments, r=eddyb
bors [Wed, 14 Dec 2016 06:26:21 +0000 (06:26 +0000)]
Auto merge of #38332 - bluss:copy-prop-arguments, r=eddyb

Allow copy-propagation of function arguments

Allow propagating function argument locals in copy propagation.

7 years agoAuto merge of #38181 - jsgf:test-filter-exact, r=alexcrichton
bors [Wed, 14 Dec 2016 00:31:48 +0000 (00:31 +0000)]
Auto merge of #38181 - jsgf:test-filter-exact, r=alexcrichton

libtest: add --exact to make filter matching exact

Filter matching is by substring by default. This makes it impossible
to run a single test if its name is a substring of some other test.
For example, its not possible to run just `mymod::test` with these
tests:

```
  mymod::test
  mymod::test1
  mymod::test_module::moretests
```

You could declare by convention that no test has a name that's a
substring of another test, but that's not really practical.

This PR adds the `--exact` flag, to make filter matching exactly
match the complete name.

7 years agorustc_metadata: Fix unaligned loads
Ulrik Sverdrup [Tue, 13 Dec 2016 16:34:40 +0000 (17:34 +0100)]
rustc_metadata: Fix unaligned loads

Creating a `&[u32]` from a `&[u8]` was not valid; the data is not
necessarily well aligned.

7 years agoAuto merge of #38278 - jseyfried:improve_proc_macro_def_ids, r=michaelwoerister
bors [Tue, 13 Dec 2016 21:31:43 +0000 (21:31 +0000)]
Auto merge of #38278 - jseyfried:improve_proc_macro_def_ids, r=michaelwoerister

Improve proc-macro def ids

Support `cstore.relative_def_path(id)` and `cstore.def_key(id)` with proc-macro def ids.
Fixes #38207.
r? @nikomatsakis

7 years agoAuto merge of #38353 - alexcrichton:fix-nightiles, r=alexcrichton
bors [Tue, 13 Dec 2016 18:29:22 +0000 (18:29 +0000)]
Auto merge of #38353 - alexcrichton:fix-nightiles, r=alexcrichton

Another round of nightly fixes

Another three separate errors happened last night:

* Race condition in save analysis failed the OX build
* Packaging docs that don't exist failed the Android build
* Packaging save-analysis that doesn't exist failed the cross host builds

It just never ends...

7 years agorustbuild: Don't dist docs if disabled
Alex Crichton [Tue, 13 Dec 2016 17:21:42 +0000 (09:21 -0800)]
rustbuild: Don't dist docs if disabled

This commit skips the `docs` dist step if the `--disable-docs` flag is passed,
fixing a compile error seen on nightly.

7 years agorustbuild: Skip some more non-relevant dist steps
Alex Crichton [Tue, 13 Dec 2016 17:17:33 +0000 (09:17 -0800)]
rustbuild: Skip some more non-relevant dist steps

This commit skips a few more dist tragets during compilation which shouldn't be
necessary.

* First, when packaging std we only take action when the host target is the
  build target. Otherwise we package the same artifacts a number of times, which
  shouldn't be necessary.
* Next, we apply the same logic to the save-analysis build. This is actually
  required for correctness as the build compiler is the only one which actually
  has save analysis information. This should fix an error seen on nightlies.

7 years agorustc: Use `create_dir_racy` in save analysis
Alex Crichton [Tue, 13 Dec 2016 17:12:39 +0000 (09:12 -0800)]
rustc: Use `create_dir_racy` in save analysis

The OSX bots failed last night due a race condition in save analysis where
concurrent calls to `fs::create_dir_all` conflicted with one another. This
replaces the relevant function call with `fs::create_dir_racy` which is defined
internally to the compiler.

7 years agoDocument --test-args for rustbuild
Seo Sanghyeon [Tue, 13 Dec 2016 16:31:48 +0000 (01:31 +0900)]
Document --test-args for rustbuild

7 years agoAuto merge of #38317 - shepmaster:llvm-4.0-debuginfo-alignment, r=eddyb
bors [Tue, 13 Dec 2016 15:27:19 +0000 (15:27 +0000)]
Auto merge of #38317 - shepmaster:llvm-4.0-debuginfo-alignment, r=eddyb

[LLVM 4.0] Move debuginfo alignment argument

Alignment was removed from createBasicType and moved to

- createGlobalVariable
- createAutoVariable
- createStaticMemberType (unused in Rust)
- createTempGlobalVariableFwdDecl (unused in Rust)

https://github.com/llvm-mirror/llvm/commit/e69c459a6e9756ca1ff3acb1dcfc434843aee80f

7 years agoAuto merge of #38309 - sfackler:rfc-1725, r=alexcrichton
bors [Tue, 13 Dec 2016 12:28:14 +0000 (12:28 +0000)]
Auto merge of #38309 - sfackler:rfc-1725, r=alexcrichton

Implement RFC #1725 (read_unaligned, write_unaligned)

cc #37955

r? @alexcrichton

7 years agoAuto merge of #38286 - pftbest:msp430_at_symbol, r=michaelwoerister
bors [Tue, 13 Dec 2016 09:30:25 +0000 (09:30 +0000)]
Auto merge of #38286 - pftbest:msp430_at_symbol, r=michaelwoerister

[MSP430] Do not generate '@' character in symbol names.

MSP430 assembler does not like '@' character in symbol names, so we need
to replace it with some other character.

Fixes #38116

7 years agoFix travis builds
Alex Crichton [Tue, 13 Dec 2016 04:01:13 +0000 (20:01 -0800)]
Fix travis builds

After reading some articles [1] [2] yesterday about Docker and the "init"
process I got to thinking about the problems that we've been seeing on Travis.
The basic problem is that a Linux system may need an "init" process to work
properly when processes become zombies. Docker by default doesn't handle this
and the root process typically isn't an init process, so this can occasionally
cause quite a few problems.

We've been seeing spurious errors on Travis inside containers which look like
OOM and such, but my guess is that zombie processes were being reparented to the
top-level shell. The shell didn't expect the zombies and then behaved very
strangely.

This commit fixes these problems by using Yelp's "dumb-init" program [2] as the
init process in all of our containers. This ensures that there's a valid init
ready to reap children when they're reparented, which our test suite apparently
generates a bunch of throughout the tests and such.

[1]: https://blog.phusion.nl/2015/01/20/docker-and-the-pid-1-zombie-reaping-problem/
[2]: https://engineeringblog.yelp.com/2016/01/dumb-init-an-init-for-docker.html

7 years agoAuto merge of #38179 - michael-zapata:rf/harmonise_rustdoc_errors, r=GuillaumeGomez
bors [Tue, 13 Dec 2016 06:29:25 +0000 (06:29 +0000)]
Auto merge of #38179 - michael-zapata:rf/harmonise_rustdoc_errors, r=GuillaumeGomez

feat(rustdoc): harmonise error messages

Based on unix tools wording, it follows a standard format: `program_name: context: error message`, potentially prompting the user to use the `--help` option.

This is clearly meant to trigger some discussion on #38084, as messages still use `stdout` and `stderr` somewhat arbitrarily, and there are a few `error!()` calls as well.

7 years agoImplement RFC #1725
Steven Fackler [Mon, 12 Dec 2016 02:51:22 +0000 (18:51 -0800)]
Implement RFC #1725

cc #37955

7 years agoAuto merge of #38325 - frewsxcv:rollup, r=frewsxcv
bors [Tue, 13 Dec 2016 02:28:23 +0000 (02:28 +0000)]
Auto merge of #38325 - frewsxcv:rollup, r=frewsxcv

Rollup of 7 pull requests

- Successful merges: #37052, #37941, #38067, #38164, #38202, #38264, #38299
- Failed merges:

7 years agorustbuild: Add cli option --keep-stage
Ulrik Sverdrup [Mon, 12 Dec 2016 22:21:42 +0000 (23:21 +0100)]
rustbuild: Add cli option --keep-stage

This option is intended to be used like:

./x.py build --stage 1 --keep-stage 0

Which skips all stage 0 steps, so that stage 1 can be recompiled
directly (even if for example libcore has changes).

This is useful when working on `cfg(not(stage0))` parts of the
libraries, or when re-running stage 1 tests in libraries in general.

7 years agoFix tidy checks
Jeremy Soller [Mon, 12 Dec 2016 22:57:19 +0000 (15:57 -0700)]
Fix tidy checks

7 years agoAuto merge of #38324 - alexcrichton:fix-nightlies, r=alexcrichton
bors [Mon, 12 Dec 2016 22:14:05 +0000 (22:14 +0000)]
Auto merge of #38324 - alexcrichton:fix-nightlies, r=alexcrichton

First attempt at fixing nightlies

Looks like we've got a whole slew of bugs on our hands, let's try to fix them all at once.

7 years agoMerge branch 'master' into redox
Jeremy Soller [Mon, 12 Dec 2016 21:55:09 +0000 (14:55 -0700)]
Merge branch 'master' into redox

7 years agoFix accidental removal of import
Jeremy Soller [Mon, 12 Dec 2016 21:30:41 +0000 (14:30 -0700)]
Fix accidental removal of import

7 years agoRollback prefix
Jeremy Soller [Mon, 12 Dec 2016 21:21:44 +0000 (14:21 -0700)]
Rollback prefix

7 years agorustbuild: Fix dist of save-analysis info
Alex Crichton [Mon, 12 Dec 2016 19:04:26 +0000 (11:04 -0800)]
rustbuild: Fix dist of save-analysis info

We don't need an extra bare tarball, the save-analysis info is already produced
with a version/target in the filename.

7 years agoRollup merge of #38299 - achanda:ctrl-c, r=brson
Corey Farwell [Mon, 12 Dec 2016 19:10:33 +0000 (14:10 -0500)]
Rollup merge of #38299 - achanda:ctrl-c, r=brson

Handle Ctrl+C in the build script

7 years agoRollup merge of #38264 - ollie27:rustdoc_src_macro, r=brson
Corey Farwell [Mon, 12 Dec 2016 19:10:33 +0000 (14:10 -0500)]
Rollup merge of #38264 - ollie27:rustdoc_src_macro, r=brson

rustdoc: Remove broken src links from reexported items from macros

When an item is defined in an external macro it doesn't get a real
filename so we need to filter out these when generating src links for
reexported items.

7 years agoRollup merge of #38202 - michaelwoerister:closure-ich-test, r=nikomatsakis
Corey Farwell [Mon, 12 Dec 2016 19:10:33 +0000 (14:10 -0500)]
Rollup merge of #38202 - michaelwoerister:closure-ich-test, r=nikomatsakis

Some incr. comp. hash tests

r? @nikomatsakis

7 years agoRollup merge of #38164 - sourcefrog:fonts, r=GuillaumeGomez
Corey Farwell [Mon, 12 Dec 2016 19:10:33 +0000 (14:10 -0500)]
Rollup merge of #38164 - sourcefrog:fonts, r=GuillaumeGomez

Avoid using locally installed Source Code Pro font (fixes #24355).

In some versions of this font the ampersands are drawn badly.

A doc tree built with this change is at https://storage.googleapis.com/mbp-rust-builds/fonts/doc/std/index.html

I'm not seeing this problem locally so I'm not sure this fixes it, but based on the diagnosis in the bug it should.

I've made this a minimal change by only removing the one problematic font but maybe for consistency every font should be read from the Rust docs tree?

7 years agoRollup merge of #38067 - GuillaumeGomez:udp-doc, r=frewsxcv,nagisa
Corey Farwell [Mon, 12 Dec 2016 19:10:32 +0000 (14:10 -0500)]
Rollup merge of #38067 - GuillaumeGomez:udp-doc, r=frewsxcv,nagisa

Add more examples to UpdSocket

r? @frewsxcv

7 years agoRollup merge of #37941 - Cobrand:docfix-issue-37915, r=GuillaumeGomez
Corey Farwell [Mon, 12 Dec 2016 19:10:32 +0000 (14:10 -0500)]
Rollup merge of #37941 - Cobrand:docfix-issue-37915, r=GuillaumeGomez

Improve and fix mpsc documentation

Closes #37915

This commit enhances documentation with several links and
fixes an error in the `sync_channel` documentation as well:
`send` doesn't panic when the senders are all disconnected

r? @steveklabnik

7 years agoRollup merge of #37052 - srinivasreddy:hair_cx, r=pnkfelix
Corey Farwell [Mon, 12 Dec 2016 19:10:32 +0000 (14:10 -0500)]
Rollup merge of #37052 - srinivasreddy:hair_cx, r=pnkfelix

Run rustfmt on librustc_mir/hair/cx

7 years agorustbuild: Check for .git as a dir
Alex Crichton [Mon, 12 Dec 2016 17:28:13 +0000 (09:28 -0800)]
rustbuild: Check for .git as a dir

Git worktrees have this as a file and typically won't work inside docker
containers, but that's ok, so instead of just checking for existence check for a
directory to see if the git commands will succeed.

7 years agoDo not generate '@' character in symbol names.
Vadzim Dambrouski [Mon, 12 Dec 2016 18:56:52 +0000 (21:56 +0300)]
Do not generate '@' character in symbol names.

MSP430 assembler does not like '@' character in symbol names, so we should
only use alphanumerics when we generate a new name.

Fixes #38116

7 years agoAuto merge of #38243 - michaelwoerister:fix-debuginfo-namespace-edge, r=nikomatsakis
bors [Mon, 12 Dec 2016 17:31:48 +0000 (17:31 +0000)]
Auto merge of #38243 - michaelwoerister:fix-debuginfo-namespace-edge, r=nikomatsakis

incr.comp.: Avoid creating an edge to DepNode::Krate when generating debuginfo namespaces.

r? @nikomatsakis

Fixes #38222

7 years agorustbuild: Update gcc-rs to 0.3.40
Alex Crichton [Mon, 12 Dec 2016 17:27:14 +0000 (09:27 -0800)]
rustbuild: Update gcc-rs to 0.3.40

This commit updates the gcc-rs dependency to 0.3.40 to pick up a fix for i686
musl where we needed to pass an extra linker flag to get autoconf's detection of
executables working correctly.

7 years agoincr.comp.: Avoid creating an edge to DepNode::Krate when generating debuginfo namesp...
Michael Woerister [Thu, 8 Dec 2016 17:47:35 +0000 (12:47 -0500)]
incr.comp.: Avoid creating an edge to DepNode::Krate when generating debuginfo namespaces.

7 years agorustbuild: Enable unstable features in rustdoc
Alex Crichton [Mon, 12 Dec 2016 17:03:35 +0000 (09:03 -0800)]
rustbuild: Enable unstable features in rustdoc

This ensures that stable releases produced by rustbuild will succeed in testing
as some of the rustdoc tests use unstable features.

7 years agofeat(rustdoc): harmonise error messages
Michael Zapata [Mon, 5 Dec 2016 02:21:08 +0000 (03:21 +0100)]
feat(rustdoc): harmonise error messages

Based on unix tools wording, it follows a standard format:
`program_name: context: error message` on stderr, prompting the user
to use the `--help` option in case of misuse.

7 years ago[LLVM 4.0] Move debuginfo alignment argument
Jake Goulding [Fri, 18 Nov 2016 16:11:18 +0000 (11:11 -0500)]
[LLVM 4.0] Move debuginfo alignment argument

Alignment was removed from createBasicType and moved to

- createGlobalVariable
- createAutoVariable
- createStaticMemberType (unused in Rust)
- createTempGlobalVariableFwdDecl (unused in Rust)

https://github.com/llvm-mirror/llvm/commit/e69c459a6e9756ca1ff3acb1dcfc434843aee80f

7 years agoAuto merge of #38049 - frewsxcv:libunicode, r=alexcrichton
bors [Mon, 12 Dec 2016 13:19:33 +0000 (13:19 +0000)]
Auto merge of #38049 - frewsxcv:libunicode, r=alexcrichton

Rename 'librustc_unicode' crate to 'libstd_unicode'.

Fixes https://github.com/rust-lang/rust/issues/26554.

7 years agoAuto merge of #38307 - bluss:mir-opt-level, r=eddyb
bors [Mon, 12 Dec 2016 10:19:14 +0000 (10:19 +0000)]
Auto merge of #38307 - bluss:mir-opt-level, r=eddyb

Simplify use of mir_opt_level

Remove the unused top level option by the same name, and retain the
debug option.

Use -Zmir-opt-level=1 as default.

One pass is enabled by default but wants to be optional:

- Instcombine requires mir_opt_level > 0

Copy propagation is not used by default, but used to be activated by
explicit -Zmir-opt-level=1. It must move one higher to be off by
default:

- CopyPropagation requires mir_opt_level > 1

Deaggregate is not used by default, and used to be on a different level
than CopyPropagation:

- Deaggreate requires mir_opt_level > 2

7 years agoAuto merge of #38296 - dylanmckay:llvm-4.0-errortype, r=alexcrichton
bors [Mon, 12 Dec 2016 07:19:35 +0000 (07:19 +0000)]
Auto merge of #38296 - dylanmckay:llvm-4.0-errortype, r=alexcrichton

[LLVM 4.0] Explicitly call constructor of 'llvm::Error'

The implicit constructor has been deleted. We should use
Error::success() instead.

The constructor in the LLVM headers mentions that "success" should be
used instead of the deleted constructor for clarity.

7 years agoAuto merge of #38291 - brson:licenseck, r=alexcrichton
bors [Mon, 12 Dec 2016 03:40:15 +0000 (03:40 +0000)]
Auto merge of #38291 - brson:licenseck, r=alexcrichton

Check the license of vendored deps

r? @alexcrichton

7 years agoAuto merge of #38057 - KiChjang:display-formal-type-param, r=nikomatsakis
bors [Mon, 12 Dec 2016 00:22:30 +0000 (00:22 +0000)]
Auto merge of #38057 - KiChjang:display-formal-type-param, r=nikomatsakis

Display better error messages for E0282

Fixes #36554.

7 years agoAuto merge of #38265 - bluss:mir-deaggregator-loop, r=nagisa
bors [Sun, 11 Dec 2016 21:19:34 +0000 (21:19 +0000)]
Auto merge of #38265 - bluss:mir-deaggregator-loop, r=nagisa

Reinstate while loop in deaggregator pass

A previous commit must have removed the `while let` loop here by
mistake; for each basic block, it should find and deaggregate multiple
statements in their index order, and the `curr` index tracks the
progress through the block.

This fixes both the case of deaggregating statements in separate
basic blocks (preserving `curr` could prevent that) as well
as multiple times in the same block (missing loop prevented that).

The loop was lost in commit bda46c21fe30377b9587b584c64ffe99da6c14ce.

7 years agomir: Allow copy-propagation of function arguments
Ulrik Sverdrup [Sun, 11 Dec 2016 20:54:54 +0000 (21:54 +0100)]
mir: Allow copy-propagation of function arguments

7 years agoSimplify use of mir_opt_level
Ulrik Sverdrup [Sun, 11 Dec 2016 20:16:01 +0000 (21:16 +0100)]
Simplify use of mir_opt_level

Remove the unused top level option by the same name, and retain the
debug option.

Use -Zmir-opt-level=1 as default.

One pass is enabled by default but wants to be optional:

- Instcombine requires mir_opt_level > 0

Copy propagation is not used by default, but used to be activated by
explicit -Zmir-opt-level=1. It must move one higher to be off by
default:

- CopyPropagation requires mir_opt_level > 1

Deaggregate is not used by default, and used to be on a different level
than CopyPropagation:

- Deaggreate requires mir_opt_level > 2

7 years agoAuto merge of #38272 - michaelwoerister:incr-symbol-visibility, r=nikomatsakis
bors [Sun, 11 Dec 2016 18:20:52 +0000 (18:20 +0000)]
Auto merge of #38272 - michaelwoerister:incr-symbol-visibility, r=nikomatsakis

incr.comp.: Take symbol visibility into account for CGU hashes

r? @nikomatsakis

7 years agoHandle Ctrl+C in the build script
Abhishek Chanda [Sun, 11 Dec 2016 15:25:31 +0000 (15:25 +0000)]
Handle Ctrl+C in the build script

7 years agoAuto merge of #38252 - pnkfelix:mildly-robustify-configure-msg, r=alexcrichton
bors [Sun, 11 Dec 2016 12:33:12 +0000 (12:33 +0000)]
Auto merge of #38252 - pnkfelix:mildly-robustify-configure-msg, r=alexcrichton

Make configure message re x.py not assume build dir == src dir

Fix #38251 but perhaps not BEST fix for it.

As driveby, fix copyright year in `Makefile.in`

7 years ago[LLVM 4.0] Explicitly call constructor of 'llvm::Error'
Dylan McKay [Sun, 11 Dec 2016 09:42:32 +0000 (22:42 +1300)]
[LLVM 4.0] Explicitly call constructor of 'llvm::Error'

The implicit constructor has been deleted. We should use
Error::success() instead.

The constructor in the LLVM headers mentions that "success" should be
used instead of the deleted constructor for clarity.

7 years agoAuto merge of #38249 - arielb1:special-substs, r=nikomatsakis
bors [Sun, 11 Dec 2016 09:33:05 +0000 (09:33 +0000)]
Auto merge of #38249 - arielb1:special-substs, r=nikomatsakis

erase lifetimes when translating specialized substs

Projections can generate lifetime variables with equality constraints,
that will not be resolved by `resolve_type_vars_if_possible`, so substs
need to be lifetime-erased after that.

Fixes #36848.

7 years agoAuto merge of #38250 - michaelwoerister:trait-methods-in-reachable, r=alexcrichton
bors [Sun, 11 Dec 2016 06:37:19 +0000 (06:37 +0000)]
Auto merge of #38250 - michaelwoerister:trait-methods-in-reachable, r=alexcrichton

Consider provided trait methods in middle::reachable

Fixes https://github.com/rust-lang/rust/issues/38226 by also considering trait methods with default implementation instead of just methods provided in an impl.

r? @alexcrichton
cc @panicbit

7 years agoAuto merge of #38240 - pftbest:update_llvm, r=japaric
bors [Sun, 11 Dec 2016 01:06:20 +0000 (01:06 +0000)]
Auto merge of #38240 - pftbest:update_llvm, r=japaric

LLVM: Update submodule to include patches for MSP430.

Fixes #37829

7 years agoCheck the license of vendored deps
Brian Anderson [Sat, 10 Dec 2016 23:27:42 +0000 (23:27 +0000)]
Check the license of vendored deps

7 years agoAuto merge of #38231 - vadimcn:errormode, r=alexcrichton
bors [Sat, 10 Dec 2016 22:08:20 +0000 (22:08 +0000)]
Auto merge of #38231 - vadimcn:errormode, r=alexcrichton

Prevent Windows from displaying UI on errors.

Otherwise tests like run-pass/out-of-stack get wedged on Windows error reporting dialog (unless error reporting has been disabled, of course).

7 years agoAuto merge of #38239 - jseyfried:fix_doc_tests_on_macros, r=eddyb
bors [Sat, 10 Dec 2016 19:12:54 +0000 (19:12 +0000)]
Auto merge of #38239 - jseyfried:fix_doc_tests_on_macros, r=eddyb

Fix doc-tests on exported `macro_rules!`

Fixes #38219.
r? @eddyb

7 years agoAuto merge of #37780 - GuillaumeGomez:E0571, r=nikomatsakis
bors [Sat, 10 Dec 2016 16:18:07 +0000 (16:18 +0000)]
Auto merge of #37780 - GuillaumeGomez:E0571, r=nikomatsakis

Add checkup for return statement outside of a function

Fixes #37778.

r? @eddyb (don't know who is in charge. Don't hesitate to set another one)

cc @jonathandturner

7 years agoAuto merge of #38233 - alexcrichton:more-errors, r=japaric
bors [Sat, 10 Dec 2016 13:00:25 +0000 (13:00 +0000)]
Auto merge of #38233 - alexcrichton:more-errors, r=japaric

rustbuild: Print out failing commands

Just ensure that we always print out the command line which should aid in
debugging.

Closes #38228

7 years agoAuto merge of #38217 - oli-obk:mir-for-all-and-all-for-mir, r=eddyb
bors [Sat, 10 Dec 2016 03:49:38 +0000 (03:49 +0000)]
Auto merge of #38217 - oli-obk:mir-for-all-and-all-for-mir, r=eddyb

add a -Z flag to guarantee that MIR is generated for all functions

r? @eddyb

cc @solson

7 years agoAdd UI test for missing type parameter
Keith Yeung [Fri, 9 Dec 2016 21:28:16 +0000 (13:28 -0800)]
Add UI test for missing type parameter

7 years agoImprove proc-macro def ids.
Jeffrey Seyfried [Sat, 10 Dec 2016 02:17:40 +0000 (02:17 +0000)]
Improve proc-macro def ids.

7 years agoAuto merge of #38223 - rkruppe:llvm-stringref-fixes, r=alexcrichton
bors [Sat, 10 Dec 2016 00:34:13 +0000 (00:34 +0000)]
Auto merge of #38223 - rkruppe:llvm-stringref-fixes, r=alexcrichton

printf type correctness

The `%.*s` format specifier requires an int for the maximum size, but StringRef::size is a size_t

cc @shepmaster

7 years agoincr.comp.: Add test case for symbol visibility changes
Michael Woerister [Fri, 9 Dec 2016 22:46:31 +0000 (17:46 -0500)]
incr.comp.: Add test case for symbol visibility changes

7 years agoincr.comp.: Take symbol visibility into account for CGU hashes.
Michael Woerister [Fri, 9 Dec 2016 22:13:13 +0000 (17:13 -0500)]
incr.comp.: Take symbol visibility into account for CGU hashes.

7 years agoAuto merge of #38102 - nrc:save-bots, r=brson
bors [Fri, 9 Dec 2016 21:37:21 +0000 (21:37 +0000)]
Auto merge of #38102 - nrc:save-bots, r=brson

Create tar balls of save-analysis-api metadata for the standard libra…

…ries as part of `make dist`.

r? @alexcrichton

7 years agoAuto merge of #38203 - nrc:save-wr, r=eddyb
bors [Fri, 9 Dec 2016 18:43:33 +0000 (18:43 +0000)]
Auto merge of #38203 - nrc:save-wr, r=eddyb

save-analysis: fix a few generated code errors

7 years agoCreate tar balls of save-analysis-api metadata for the standard libraries as part...
Nick Cameron [Wed, 26 Oct 2016 22:41:56 +0000 (11:41 +1300)]
Create tar balls of save-analysis-api metadata for the standard libraries as part of `make dist`.

7 years agomir: Reinstate while loop in deaggregator pass
Ulrik Sverdrup [Fri, 9 Dec 2016 15:28:54 +0000 (16:28 +0100)]
mir: Reinstate while loop in deaggregator pass

A previous commit must have removed the `while let` loop here by
mistake; for each basic block, it should find and deaggregate multiple
statements in their index order, and the `curr` index tracks the
progress through the block.

This fixes both the case of deaggregating statements in separate
basic blocks (preserving `curr` could prevent that) as well
as multiple times in the same block (missing loop prevented that).

7 years agomove the check for instantiation from metadata encoding to the actual decision site
Oliver Schneider [Fri, 9 Dec 2016 16:29:01 +0000 (17:29 +0100)]
move the check for instantiation from metadata encoding to the actual decision site

before it was assumed that anything that had a MIR was fair game for local instatiation

7 years agoAuto merge of #38197 - mneumann:dragonfly-fixes-2016-12-06, r=alexcrichton
bors [Fri, 9 Dec 2016 15:45:41 +0000 (15:45 +0000)]
Auto merge of #38197 - mneumann:dragonfly-fixes-2016-12-06, r=alexcrichton

Fix current_exe() on DragonFly (again)

This is a follow up on [this pull request][1].

Since DragonFly 4.6.1 ([this commit][2]), the ```kern.proc.pathname```
sysctl works correctly, i.e. it does not return paths including a ```:```
(see [here][3]). Use it and don't try to fix old versions of DragonFly!
There are not many DragonFly installations out there that we can't
control and no one is compiling Rust from source. If someone wants to
run Rust on a pre-4.6.1 DragonFly system, the ports system should
provide a patch.

[1]: https://github.com/rust-lang/rust/pull/35494
[2]: https://gitweb.dragonflybsd.org/dragonfly.git/commit/726f7ca07e193db73635e9c4e24e40c96087d6d9
[3]: https://gist.github.com/mneumann/a2f6b6a0a03935b561d6185872a4b222

7 years agoenable checking for const fn without needing to go through `entry`
Oliver Schneider [Fri, 9 Dec 2016 15:31:53 +0000 (16:31 +0100)]
enable checking for const fn without needing to go through `entry`

7 years agorustdoc: Remove broken src links from reexported items from macros
Oliver Middleton [Fri, 9 Dec 2016 14:56:55 +0000 (14:56 +0000)]
rustdoc: Remove broken src links from reexported items from macros

When an item is defined in an external macro it doesn't get a real
filename so we need to filter out these when generating src links for
reexported items.

7 years agoAuto merge of #38196 - rkruppe:llvm-archivewrapper-fwdcompat, r=alexcrichton
bors [Fri, 9 Dec 2016 12:52:42 +0000 (12:52 +0000)]
Auto merge of #38196 - rkruppe:llvm-archivewrapper-fwdcompat, r=alexcrichton

[LLVM 4.0] rustllvm archive support

Error handling is being transitioned from ErrorOr<T> to Expected<T> which has a different API and requires explicitly handling all errors

cc #37609

7 years agoremove double negation in comment
Oliver Schneider [Fri, 9 Dec 2016 10:27:45 +0000 (11:27 +0100)]
remove double negation in comment

7 years agoAuto merge of #38192 - stjepang:faster-sort-algorithm, r=bluss
bors [Fri, 9 Dec 2016 10:00:25 +0000 (10:00 +0000)]
Auto merge of #38192 - stjepang:faster-sort-algorithm, r=bluss

Implement a faster sort algorithm

Hi everyone, this is my first PR.

I've made some changes to the standard sort algorithm, starting out with a few tweaks here and there, but in the end this endeavour became a complete rewrite of it.

#### Summary

Changes:

* Improved performance, especially on partially sorted inputs.
* Performs less comparisons on both random and partially sorted inputs.
* Decreased the size of temporary memory: the new sort allocates 4x less.

Benchmark:

```
 name                                        out1 ns/iter          out2 ns/iter          diff ns/iter   diff %
 slice::bench::sort_large_ascending          85,323 (937 MB/s)     8,970 (8918 MB/s)          -76,353  -89.49%
 slice::bench::sort_large_big_ascending      2,135,297 (599 MB/s)  355,955 (3595 MB/s)     -1,779,342  -83.33%
 slice::bench::sort_large_big_descending     2,266,402 (564 MB/s)  416,479 (3073 MB/s)     -1,849,923  -81.62%
 slice::bench::sort_large_big_random         3,053,031 (419 MB/s)  1,921,389 (666 MB/s)    -1,131,642  -37.07%
 slice::bench::sort_large_descending         313,181 (255 MB/s)    14,725 (5432 MB/s)        -298,456  -95.30%
 slice::bench::sort_large_mostly_ascending   287,706 (278 MB/s)    243,204 (328 MB/s)         -44,502  -15.47%
 slice::bench::sort_large_mostly_descending  415,078 (192 MB/s)    271,028 (295 MB/s)        -144,050  -34.70%
 slice::bench::sort_large_random             545,872 (146 MB/s)    521,559 (153 MB/s)         -24,313   -4.45%
 slice::bench::sort_large_random_expensive   30,321,770 (2 MB/s)   23,533,735 (3 MB/s)     -6,788,035  -22.39%
 slice::bench::sort_medium_ascending         616 (1298 MB/s)       155 (5161 MB/s)               -461  -74.84%
 slice::bench::sort_medium_descending        1,952 (409 MB/s)      202 (3960 MB/s)             -1,750  -89.65%
 slice::bench::sort_medium_random            3,646 (219 MB/s)      3,421 (233 MB/s)              -225   -6.17%
 slice::bench::sort_small_ascending          39 (2051 MB/s)        34 (2352 MB/s)                  -5  -12.82%
 slice::bench::sort_small_big_ascending      96 (13333 MB/s)       96 (13333 MB/s)                  0    0.00%
 slice::bench::sort_small_big_descending     248 (5161 MB/s)       243 (5267 MB/s)                 -5   -2.02%
 slice::bench::sort_small_big_random         501 (2554 MB/s)       490 (2612 MB/s)                -11   -2.20%
 slice::bench::sort_small_descending         95 (842 MB/s)         63 (1269 MB/s)                 -32  -33.68%
 slice::bench::sort_small_random             372 (215 MB/s)        354 (225 MB/s)                 -18   -4.84%
```

#### Background

First, let me just do a quick brain dump to discuss what I learned along the way.

The official documentation says that the standard sort in Rust is a stable sort. This constraint is thus set in stone and immediately rules out many popular sorting algorithms. Essentially, the only algorithms we might even take into consideration are:

1. [Merge sort](https://en.wikipedia.org/wiki/Merge_sort)
2. [Block sort](https://en.wikipedia.org/wiki/Block_sort) (famous implementations are [WikiSort](https://github.com/BonzaiThePenguin/WikiSort) and [GrailSort](https://github.com/Mrrl/GrailSort))
3. [TimSort](https://en.wikipedia.org/wiki/Timsort)

Actually, all of those are just merge sort flavors. :) The current standard sort in Rust is a simple iterative merge sort. It has three problems. First, it's slow on partially sorted inputs (even though #29675 helped quite a bit). Second, it always makes around `log(n)` iterations copying the entire array between buffers, no matter what. Third, it allocates huge amounts of temporary memory (a buffer of size `2*n`, where `n` is the size of input).

The problem of auxilliary memory allocation is a tough one. Ideally, it would be best for our sort to allocate `O(1)` additional memory. This is what block sort (and it's variants) does. However, it's often very complicated (look at [this](https://github.com/BonzaiThePenguin/WikiSort/blob/master/WikiSort.cpp)) and even then performs rather poorly. The author of WikiSort claims good performance, but that must be taken with a grain of salt. It performs well in comparison to `std::stable_sort` in C++. It can even beat `std::sort` on partially sorted inputs, but on random inputs it's always far worse. My rule of thumb is: high performance, low memory overhead, stability - choose two.

TimSort is another option. It allocates a buffer of size `n/2`, which is not great, but acceptable. Performs extremelly well on partially sorted inputs. However, it seems pretty much all implementations suck on random inputs. I benchmarked implementations in [Rust](https://github.com/notriddle/rust-timsort), [C++](https://github.com/gfx/cpp-TimSort), and [D](https://github.com/dlang/phobos/blob/fd518eb310a9494cccf28c54892542b052c49669/std/algorithm/sorting.d#L2062). The results were a bit disappointing. It seems bad performance is due to complex galloping procedures in hot loops. Galloping noticeably improves performance on partially sorted inputs, but worsens it on random ones.

#### The new algorithm

Choosing the best algorithm is not easy. Plain merge sort is bad on partially sorted inputs. TimSort is bad on random inputs and block sort is even worse. However, if we take the main ideas from TimSort (intelligent merging strategy of sorted runs) and drop galloping, then we'll have great performance on random inputs and it won't be bad on partially sorted inputs either.

That is exactly what this new algorithm does. I can't call it TimSort, since it steals just a few of it's ideas. Complete TimSort would be a much more complex and elaborate implementation. In case we in the future figure out how to incorporate more of it's ideas into this implementation without crippling performance on random inputs, it's going to be very easy to extend. I also did several other minor improvements, like reworked insertion sort to make it faster.

There are also new, more thorough benchmarks and panic safety tests.

The final code is not terribly complex and has less unsafe code than I anticipated, but there's still plenty of it that should be carefully reviewed. I did my best at documenting non-obvious code.

I'd like to notify several people of this PR, since they might be interested and have useful insights:

1. @huonw because he wrote the [original merge sort](https://github.com/rust-lang/rust/pull/11064).
2. @alexcrichton because he was involved in multiple discussions of it.
3. @veddan because he wrote [introsort](https://github.com/veddan/rust-introsort) in Rust.
4. @notriddle because he wrote [TimSort](https://github.com/notriddle/rust-timsort) in Rust.
5. @bluss because he had an attempt at writing WikiSort in Rust.
6. @gnzlbg, @rkruppe, and @mark-i-m because they were involved in discussion #36318.

**P.S.** [quickersort](https://github.com/notriddle/quickersort) describes itself as being universally [faster](https://github.com/notriddle/quickersort/blob/master/perf.txt) than the standard sort, which is true. However, if this PR gets merged, things might [change](https://gist.github.com/stjepang/b9f0c3eaa0e1f1280b61b963dae19a30) a bit. ;)

7 years agoAuto merge of #38256 - alexcrichton:distcheck, r=brson
bors [Fri, 9 Dec 2016 07:08:29 +0000 (07:08 +0000)]
Auto merge of #38256 - alexcrichton:distcheck, r=brson

rustbuild: Implement distcheck

This commit implements the `distcheck` target for rustbuild which is only ever
run on our nightly bots. This essentially just creates a tarball, un-tars it,
and then runs a full build, validating that the release tarballs do indeed have
everything they need to build Rust.