Commit Graph

46794 Commits

Author SHA1 Message Date
Alex Crichton 1741962271 rustc: Emit phony targets for inputs in dep-info
This helps protect against files being deleted to ensure that `make` won't emit
errors.

Closes #28735
2015-10-02 09:33:06 -07:00
Alex Crichton 8c963c07a8 rustc: Support output filenames for each emit type
Currently the compiler supports the ability to emit multiple output types as
part of one compilation (e.g. asm, LLVM IR, bytecode, link, dep-info, etc). It
does not, however, support the ability to customize the output filename for each
of these output types. The `-o` flag is ignored if multiple emit types are
specified (and the compiler emits a warning about this).

Normally this doesn't matter too much, but in the case of `dep-info` it can lead
to a number of problems (e.g. see #28716). By allowing customization of the
output filename for each emit type we're able to solve the problems in that
issue.

This commit adds support for the `--emit` option to the compiler to look like:

    rustc foo.rs --emit dep-info=.deps/foo.d,link

This indicates that the `dep-info` output type will be placed at `.deps/foo.d`
and the `link` output type will otherwise be determined via the `--out-dir` and
`-o` flags.

Closes #28716
2015-09-30 11:12:30 -07:00
bors 3e6d7243ae Auto merge of #28731 - bluss:by-ref, r=alexcrichton
Remove redundant uses of Iterator::by_ref()
2015-09-30 11:03:13 +00:00
bors 13dc6aac60 Auto merge of #28730 - apasel422:issue-21922, r=alexcrichton
Closes #21922.
2015-09-30 07:12:36 +00:00
bors c459e897bd Auto merge of #28729 - retep998:canonical-dir, r=alexcrichton
cc https://github.com/rust-lang/rust/issues/27706
2015-09-30 05:19:17 +00:00
bors 44d404804c Auto merge of #28724 - tsion:remove-double-semicolons, r=alexcrichton
Really minor code cleanup, because why not?
2015-09-30 03:24:00 +00:00
bors 15db6ec571 Auto merge of #28500 - alexcrichton:docker-travis, r=brson
Travis CI has new infrastructure using the Google Compute Engine which has both
faster CPUs and more memory, and we've been encouraged to switch as it should
help our build times! The only downside currently, however, is that IPv6 is
disabled, causing a number of standard library tests to fail.

Consequently this commit tweaks our travis config in a few ways:

* ccache is disabled as it's not working on GCE just yet
* Docker is used to run tests inside which reportedly will get IPv6 working
* A system LLVM installation is used instead of building LLVM itself. This is
  primarily done to reduce build times, but we want automation for this sort of
  behavior anyway and we can extend this in the future with building from source
  as well if needed.
* gcc-specific logic is removed as the docker image for Ubuntu gives us a
  recent-enough gcc by default.
2015-09-30 01:21:55 +00:00
Alex Crichton 27dd6dd3db Tweak Travis to use GCE
Travis CI has new infrastructure using the Google Compute Engine which has both
faster CPUs and more memory, and we've been encouraged to switch as it should
help our build times! The only downside currently, however, is that IPv6 is
disabled, causing a number of standard library tests to fail.

Consequently this commit tweaks our travis config in a few ways:

* ccache is disabled as it's not working on GCE just yet
* Docker is used to run tests inside which reportedly will get IPv6 working
* A system LLVM installation is used instead of building LLVM itself. This is
  primarily done to reduce build times, but we want automation for this sort of
  behavior anyway and we can extend this in the future with building from source
  as well if needed.
* gcc-specific logic is removed as the docker image for Ubuntu gives us a
  recent-enough gcc by default.
2015-09-29 16:56:35 -07:00
bors 65d5c08337 Auto merge of #28702 - arielb1:metadata-versioning, r=nrc
This prevents ICEs when old crates are used with a new version of
rustc. Currently, the linking of crates compiled with different
versions of rustc is completely unsupported.

Fixes #28700

r? @nrc
2015-09-29 23:26:34 +00:00
Ariel Ben-Yehuda f2d5ebeae9 sacrifice a few bytes for the euv demon 2015-09-30 00:51:12 +03:00
bors 59eb444076 Auto merge of #28715 - petrochenkov:visit, r=nrc
Some minor parts of AST and HIR were not visited by the `visit::walk_xxx` methods - some identifiers, lifetimes, loop labels, attributes of exported macros - but nothing as serious as in, for example, https://github.com/rust-lang/rust/pull/28364.
\+ Added a convenience macro for visiting lists (including Options)
\+ Removed some pre-Deref-coersions `&**` noise from visitors

r? @nrc
2015-09-29 21:32:39 +00:00
bors 19fe7b6d64 Auto merge of #28623 - llogiq:faster-fasta, r=brson
I just removed the num_cpus dependency (because we don't want that in there), using 4 threads instead.

I should add that Veedrac asked me to submit this here in his name.
2015-09-29 19:28:27 +00:00
Ariel Ben-Yehuda 9699adc508 store the rustc version in metadata and check it
This prevents ICEs when old crates are used with a new version of
rustc. Currently, the linking of crates compiled with different
versions of rustc is completely unsupported.

Fixes #28700
2015-09-29 21:27:08 +03:00
Peter Atashian 6b9b2ee878 Make fs::canonicalize work on directories on Windows
Signed-off-by: Peter Atashian <retep998@gmail.com>
2015-09-29 14:21:39 -04:00
Ulrik Sverdrup e2aa82c413 Remove redundant uses of Iterator::by_ref() 2015-09-29 19:20:18 +02:00
bors 5f06607e23 Auto merge of #27273 - tshepang:claim-not-accurate, r=steveklabnik 2015-09-29 15:04:47 +00:00
Andrew Paseltiner 61cb4d4fc8 Add test for #21922
Closes #21922.
2015-09-29 10:19:24 -04:00
Vadim Petrochenkov 4764d98223 Restore `if let`s replaced with `for`s 2015-09-29 11:33:25 +03:00
bors 9d009c0ec1 Auto merge of #28723 - carols10cents:0-or-O-or-o, r=steveklabnik
Especially when documenting the use of `0`, since zero looks very
similar to `O` in fonts not meant for displaying code.

Other literal characters, traits, etc should also use code formatting.
This change makes this documentation more internally consistent.

Before this change, circled is the character I was using this documentation to find out about and that confused me when it wasn't immediately clear what character it was:

<img width="1013" alt="screen shot 2015-09-28 at 10 13 31 pm" src="https://cloud.githubusercontent.com/assets/193874/10154708/c70815fe-6638-11e5-9acc-57c73a524203.png">

After this change:

<img width="981" alt="screen shot 2015-09-28 at 11 26 35 pm" src="https://cloud.githubusercontent.com/assets/193874/10154710/ce73eeb2-6638-11e5-98f7-902f58679316.png">

I ran `make check-docs` and didn't break anything 
2015-09-29 03:38:52 +00:00
Carol (Nichols || Goulding) a33d61a401 Use code formatting for code-relevant values in std::fmt docs
Especially when documenting the use of `0`, since zero looks very
similar to `O` in fonts not meant for displaying code.

Other literal characters, traits, etc should also use code formatting.
This change makes this documentation more internally consistent.
2015-09-28 22:56:22 -04:00
bors abfbea2649 Auto merge of #28707 - apasel422:issue-24389, r=alexcrichton
Closes #24389.
2015-09-29 01:45:33 +00:00
Scott Olson 55e48420db Minor code cleanup. 2015-09-28 19:21:18 -06:00
bors 6108e8c3e5 Auto merge of #28705 - marti1125:master, r=steveklabnik
#28701
2015-09-28 23:56:41 +00:00
Vadim Petrochenkov 4744d56846 Fill in some missing parts in the default HIR visitor 2015-09-29 00:23:54 +03:00
bors a305b0624b Auto merge of #28703 - gavinb:master, r=alexcrichton
Tests invoking a static method using a type alias.

Closes #11047
2015-09-28 21:08:40 +00:00
Vadim Petrochenkov eedb95101b Fill in some missing parts in the default AST visitor
+ Add helper macro for walking lists (including Options)
2015-09-28 23:06:43 +03:00
bors 3a71c423c7 Auto merge of #28691 - utkarshkukreti:add-path_max-to-liblibc, r=alexcrichton
PATH_MAX is defined for OSX and various BSDs but not Linux right now.

[Source for the value.](9ffecb1028/include/uapi/linux/limits.h (L12))
2015-09-28 18:40:35 +00:00
Andrew Paseltiner 47c176e9d2 Add test for #24389
Closes #24389.
2015-09-28 13:39:29 -04:00
Willy Aguirre 7f9c4aaa09 fixes #17017 (update padding:11px line 142 of rustbook.css) 2015-09-28 12:11:18 -05:00
bors 9e11845d77 Auto merge of #28668 - alexcrichton:crossing-with-jemalloc, r=nrc
This commit updates the compiler to not attempt to use jemalloc for platforms
where jemalloc is never enabled. Currently the compiler attempts to link in
jemalloc based on whether `--disable-jemalloc` was specified at build time for
the compiler itself, but this is only the right decision for the host target,
not for other targets.

This still leaves a hole open where a set of target libraries are downloaded
which were built with `--disable-jemalloc` and the compiler is unaware of that,
but this is a pretty rare case so it can always be fixed later.
2015-09-28 15:58:44 +00:00
Willy Aguirre e1acf87fe0 remove a sentence #28701 2015-09-28 10:46:50 -05:00
Gavin Baker f5b6a32230 Test case for Issue 11047
Tests invoking a static method using a type alias
2015-09-28 22:33:29 +10:00
Utkarsh Kukreti dd91f3e431 Add PATH_MAX to liblibc's Linux bindings. 2015-09-27 21:06:54 +05:30
bors 638b2608a7 Auto merge of #28689 - Manishearth:rollup, r=Manishearth
- Successful merges: #28664, #28673, #28681, #28682, #28688
- Failed merges:
2015-09-27 11:01:11 +00:00
Manish Goregaokar c34f3eaebc Rollup merge of #28688 - Manishearth:fix-primitives-search, r=eddyb
None
2015-09-27 15:05:18 +05:30
Manish Goregaokar 30b43c1b12 Rollup merge of #28682 - apasel422:features, r=steveklabnik 2015-09-27 15:05:18 +05:30
Manish Goregaokar 7e6e64b12d Rollup merge of #28681 - arielb1:destructor-fixes, r=eddyb
Fixes #28568 

r? @eddyb
2015-09-27 15:05:17 +05:30
Manish Goregaokar 5f90904e5a Rollup merge of #28673 - wthrowe:bad-archive, r=alexcrichton 2015-09-27 15:05:17 +05:30
Manish Goregaokar 8c47cfef5d Rollup merge of #28664 - apasel422:collections-debug, r=alexcrichton 2015-09-27 15:05:17 +05:30
Manish Goregaokar 9256947051 rustdoc: Remove crate name from primitives, make them turn up first in search 2015-09-27 14:48:36 +05:30
bors 219eca11b0 Auto merge of #28663 - bluss:vec-as-mut, r=alexcrichton
Implement AsMut for Vec

Fixes #28549
2015-09-27 08:26:49 +00:00
bors dde7283b80 Auto merge of #28651 - dotdash:exhaustive_match, r=eddyb
By putting an "unreachable" instruction into the default arm of a switch
instruction we can let LLVM know that the match is exhaustive, allowing
for better optimizations.

For example, this match:
```rust
pub enum Enum {
    One,
    Two,
    Three,
}

impl Enum {
    pub fn get_disc(self) -> u8 {
        match self {
            Enum::One => 0,
            Enum::Two => 1,
            Enum::Three => 2,
        }
    }
}
```

Currently compiles to this on x86_64:
```asm
  .cfi_startproc
  movzbl  %dil, %ecx
  cmpl  $1, %ecx
  setne %al
  testb %cl, %cl
  je  .LBB0_2
  incb  %al
  movb  %al, %dil
.LBB0_2:
  movb  %dil, %al
  retq
.Lfunc_end0:
```

But with this change we get:
```asm
  .cfi_startproc
  movb  %dil, %al
  retq
.Lfunc_end0:
```
2015-09-27 05:29:39 +00:00
bors 90c04d0362 Auto merge of #28685 - steveklabnik:rollup, r=steveklabnik
- Successful merges: #28666, #28674, #28677, #28678, #28679, #28680
- Failed merges: #28621
2015-09-27 01:25:00 +00:00
Steve Klabnik cc44d65c19 Rollup merge of #28680 - xaviershay:doc-readme, r=steveklabnik
This wasn't complete (you need a `./configure`), and it is already
documented well in the main README.

r? @steveklabnik
2015-09-26 18:00:39 -06:00
Steve Klabnik 3e36eecae4 Rollup merge of #28679 - xaviershay:book-unit-example, r=steveklabnik
This was non-obvious to me: with no example, I assumed `Electron {}` and
didn't know what else to try when it didn't work.  The correct form is
weird because it looks like you're assigning the struct name rather than
an instance of the struct.

r? @steveklabnik
2015-09-26 18:00:39 -06:00
Steve Klabnik 66339884df Rollup merge of #28678 - fhartwig:deref-elide, r=steveklabnik
The lifetime can be elided here, and I think eliding it makes the example slightly simpler.
2015-09-26 18:00:38 -06:00
Steve Klabnik 2ec89c7279 Rollup merge of #28677 - taboularasa:master, r=alexcrichton
the example for `find` was misleading in that it fails to mention the result is either `None` or `Some` containing only the first match. Further confusing the issue is the `println!` statement, "We got some numbers!"
2015-09-26 18:00:38 -06:00
Steve Klabnik 692d9e97b1 Rollup merge of #28674 - DenisKolodin:patch-2, r=sanxiyn 2015-09-26 18:00:38 -06:00
Steve Klabnik 9f129a9698 Rollup merge of #28666 - GuillaumeGomez:warning, r=arielb1
r? @Manishearth
2015-09-26 18:00:38 -06:00
bors 7bf4c885fc Auto merge of #28646 - vadimcn:imps, r=alexcrichton
As discussed in the referenced issues, this PR makes rustc emit `__imp_<symbol>` stubs for all public static data to ensure smooth linking in on `-windows-msvc` targets.  
Resolves #26591, cc #27438
2015-09-26 23:38:54 +00:00