Commit Graph

59793 Commits

Author SHA1 Message Date
bors
cfa668f3bf 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.
2016-12-15 06:23:11 +00:00
Jeffrey Seyfried
cfabce2230 Demote most backwards incompatible ambiguity errors from RFC 1560 to warnings. 2016-12-15 06:02:49 +00:00
Jeffrey Seyfried
16052546f7 Require #[proc_macro_derive] functions to be pub. 2016-12-15 03:02:32 +00:00
bors
7ad7232422 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
2016-12-15 02:39:34 +00:00
Esteban Küber
868fb030cc When cast needs a dereference point at full cast
After the fix of #37453 in PR #37369, instead of pointing at only the
cast type, point at the full cast span when a cast needs a dereference:

```
error: casting `&{float}` as `f32` is invalid
  --> ../../../src/test/ui/mismatched_types/cast-rfc0401.rs:81:30
   |
81 |     vec![0.0].iter().map(|s| s as f32).collect::<Vec<f32>>();
   |                              ^^^^^^^^ cannot cast `&{float}` as `f32`
   |
help: did you mean `*s`?
  --> ../../../src/test/ui/mismatched_types/cast-rfc0401.rs:81:30
   |
81 |     vec![0.0].iter().map(|s| s as f32).collect::<Vec<f32>>();
   |                              ^
```

instead of

```
error: casting `&{float}` as `f32` is invalid
  --> ../../../src/test/ui/mismatched_types/cast-rfc0401.rs:81:35
   |
81 |     vec![0.0].iter().map(|s| s as f32).collect::<Vec<f32>>();
   |                              -    ^^^
   |                              |
   |                              |
   |                              did you mean `*s`?
   |                              cannot cast `&{float}` as `f32`
```
2016-12-14 17:33:03 -08:00
Ulrik Sverdrup
0e01427bba rustbuild: Add small description of --keep-stage 2016-12-15 01:19:17 +01:00
Alex Crichton
96a5fc76dc 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.
2016-12-14 15:40:18 -08:00
bors
52e024f2d1 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.
2016-12-14 23:37:21 +00:00
Vadim Petrochenkov
0157e6c058 Fix regression in resolution of primitive types 2016-12-15 02:12:08 +03:00
Alex Crichton
769c5579c9 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.
2016-12-14 15:05:20 -08:00
Esteban Küber
5c130411e9 review comments 2016-12-14 13:46:13 -08:00
Corey Farwell
cf56c1f744 Indicate BTreeSet in docs is code-like. 2016-12-14 16:42:46 -05:00
bors
0d558d012a 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.
2016-12-14 20:35:10 +00:00
Alex Crichton
c7f4cdcabc rustbuild: Run dist on a distcheck
This is what the nightly bots expect, so let's be sure to do that.
2016-12-14 11:03:22 -08:00
Jeremy Fitzhardinge
516d105c0b 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.
2016-12-14 10:15:36 -08:00
bors
b197e4a45f 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
2016-12-14 17:36:01 +00:00
Austin Hicks
79c35bbd8c Add a case to type-sizes to explicitly verify that field reordering triggers. 2016-12-14 12:28:26 -05:00
Austin Hicks
9966bbd1b1 Fix computation of enum names based off the discrfield in the case of the null pointer optimization. This functionality is needed by pretty printers for gdb and lldb. 2016-12-14 12:28:26 -05:00
Austin Hicks
a65cc1ea54 Fix error introduced during last rebase 2016-12-14 12:28:25 -05:00
Austin Hicks
cfe1a776ee Fix -Z print-type-sizes and tests.
This was done by sorting the fields by increasing offset; as a consequence, the order of -Z print-type-sizes matches memory order not source order.
2016-12-14 12:28:25 -05:00
Austin Hicks
025456e8a4 Incorporate review comments 2016-12-14 12:28:25 -05:00
Austin Hicks
e9580e262b Some small fixes to how structs/enums are optimized 2016-12-14 12:28:24 -05:00
Austin Hicks
052e59cc12 Make tidy 2016-12-14 12:28:24 -05:00
Austin Hicks
c8c3579bff Fix closure arguments which are immediate because of field reordering.
While building immediates goes through type_of::type_of, extracting them must account for field reorderings.
2016-12-14 12:28:24 -05:00
Austin Hicks
cf5f80c68d Fix having multiple reprs on the same type.
This bug has applied to master for an indefinite period of time and is orthogonal to univariant layout optimization.
2016-12-14 12:28:24 -05:00
Austin Hicks
74f5c61d28 Change how type-sizes works slightly: we want to ensure that [i16; 0] introduces padding 2016-12-14 12:28:23 -05:00
Austin Hicks
5adf6943a7 Make tidy 2016-12-14 12:28:23 -05:00
Austin Hicks
487ef589d3 Fix type-sizes test 2016-12-14 12:28:23 -05:00
Austin Hicks
b3c285fa25 Fix checking to see if the last field of a struct can be unsized. 2016-12-14 12:28:22 -05:00
Austin Hicks
cb21cc5607 Don't optimize pairs 2016-12-14 12:28:22 -05:00
Austin Hicks
1af8e146f1 First attempt at detecting if structs can ever be unsized 2016-12-14 12:28:22 -05:00
Austin Hicks
e7c3540706 Use an enum to differentiate between kinds of structs. 2016-12-14 12:28:22 -05:00
Austin Hicks
adae9bc25e Make tidy 2016-12-14 12:28:21 -05:00
Austin Hicks
3d23dc7956 Modify debuginfo to deal with the difference between source and memory order
Fix gdb enum tests to ignore garbage variants, as we no longer actually know what the garbage is.
2016-12-14 12:28:21 -05:00
Austin Hicks
8e852e9902 Struct::new takes a vec, avoiding double allocation in some cases 2016-12-14 12:28:20 -05:00
Austin Hicks
0e61c0e231 Incorporate a bunch of review comments. 2016-12-14 12:28:20 -05:00
Austin Hicks
c7ec0dfcb6 Add yet more missing #[repr(C)] to tests 2016-12-14 12:28:20 -05:00
Austin Hicks
d754778083 Fix tuple and closure literals. 2016-12-14 12:28:19 -05:00
Austin Hicks
27469037d7 Fix extern-pass-empty test, which needed repr(C) 2016-12-14 12:28:19 -05:00
Austin Hicks
1969aeb3d7 Make constant field access account for field reordering. 2016-12-14 12:28:19 -05:00
Austin Hicks
8cfbffea3b Fix bugs to optimizing enums:
- The discriminant must be first in all variants.
- The loop responsible for patching enum variants when the discriminant is enlarged was nonfunctional.
2016-12-14 12:28:19 -05:00
Austin Hicks
cae94e8ec0 Optimize anything using a layout::Struct by introducing a mapping from source code field order to in-memory field order and sorting by alignment. 2016-12-14 12:28:18 -05:00
Jeremy Soller
3e15dc108c Merge branch 'master' into redox 2016-12-14 10:20:12 -07:00
bors
4cda3b6a65 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
2016-12-14 14:35:42 +00:00
Guillaume Gomez
60fbe7a5e3 Add missing Duration examples 2016-12-14 11:05:45 +01:00
bors
01d53df82e 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
2016-12-14 09:56:38 +00:00
Dylan McKay
e080804f72 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
2016-12-14 21:39:13 +13:00
bors
5d3ec6b0a0 Auto merge of #38332 - bluss:copy-prop-arguments, r=eddyb
Allow copy-propagation of function arguments

Allow propagating function argument locals in copy propagation.
2016-12-14 06:26:21 +00:00
bors
aa7a2e9e61 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.
2016-12-14 00:31:48 +00:00
Ulrik Sverdrup
7bc10545d6 rustc_metadata: Fix unaligned loads
Creating a `&[u32]` from a `&[u8]` was not valid; the data is not
necessarily well aligned.
2016-12-14 00:59:59 +01:00