Commit Graph

59409 Commits

Author SHA1 Message Date
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
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
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
bors
a274617044 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
2016-12-13 21:31:43 +00:00
bors
2ac7121672 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...
2016-12-13 18:29:22 +00:00
Alex Crichton
194c3fb154 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.
2016-12-13 09:21:42 -08:00
Alex Crichton
bbf2b70893 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.
2016-12-13 09:17:33 -08:00
Alex Crichton
a1f5001998 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.
2016-12-13 09:17:28 -08:00
bors
7f78b420b0 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)

e69c459a6e
2016-12-13 15:27:19 +00:00
bors
0d1b9f4614 Auto merge of #38309 - sfackler:rfc-1725, r=alexcrichton
Implement RFC #1725 (read_unaligned, write_unaligned)

cc #37955

r? @alexcrichton
2016-12-13 12:28:14 +00:00
bors
ace092f569 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
2016-12-13 09:30:25 +00:00
Alex Crichton
5e991e0afb 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-13 00:13:14 -08:00
bors
b1a2ab86db 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.
2016-12-13 06:29:25 +00:00
Steven Fackler
75fe727b78 Implement RFC #1725
cc #37955
2016-12-12 21:44:09 -08:00
bors
5a2b50b33d Auto merge of #38325 - frewsxcv:rollup, r=frewsxcv
Rollup of 7 pull requests

- Successful merges: #37052, #37941, #38067, #38164, #38202, #38264, #38299
- Failed merges:
2016-12-13 02:28:23 +00:00
bors
1336742a1a 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.
2016-12-12 22:14:05 +00:00
Alex Crichton
6cb8bbc3ff 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.
2016-12-12 12:28:22 -08:00
Corey Farwell
cba1304313 Rollup merge of #38299 - achanda:ctrl-c, r=brson
Handle Ctrl+C in the build script
2016-12-12 14:10:33 -05:00
Corey Farwell
e3363f2772 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.
2016-12-12 14:10:33 -05:00
Corey Farwell
a9dcfd0936 Rollup merge of #38202 - michaelwoerister:closure-ich-test, r=nikomatsakis
Some incr. comp. hash tests

r? @nikomatsakis
2016-12-12 14:10:33 -05:00
Corey Farwell
5e425b7b4b 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?
2016-12-12 14:10:33 -05:00
Corey Farwell
3bd2c80382 Rollup merge of #38067 - GuillaumeGomez:udp-doc, r=frewsxcv,nagisa
Add more examples to UpdSocket

r? @frewsxcv
2016-12-12 14:10:32 -05:00
Corey Farwell
8c3c9c2979 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
2016-12-12 14:10:32 -05:00
Corey Farwell
dc1a094b40 Rollup merge of #37052 - srinivasreddy:hair_cx, r=pnkfelix
Run rustfmt on librustc_mir/hair/cx
2016-12-12 14:10:32 -05:00
Alex Crichton
5f07d3dea9 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.
2016-12-12 11:05:29 -08:00
Vadzim Dambrouski
9d764fc3c1 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
2016-12-12 21:56:52 +03:00
bors
6483bdd860 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
2016-12-12 17:31:48 +00:00
Alex Crichton
48bda31ab9 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.
2016-12-12 09:27:14 -08:00
Michael Woerister
271fb22924 incr.comp.: Avoid creating an edge to DepNode::Krate when generating debuginfo namespaces. 2016-12-12 12:18:04 -05:00
Alex Crichton
6f62fae926 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.
2016-12-12 09:03:35 -08:00
Michael Zapata
430d39da9d
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.
2016-12-12 15:26:28 +01:00
Jake Goulding
5bce12c95f [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)

e69c459a6e
2016-12-12 09:00:04 -05:00