Commit Graph

57169 Commits

Author SHA1 Message Date
Jorge Aparicio
e6da837e99 it's libcompiler-rt.lib on windows 2016-09-12 21:22:15 -07:00
Jorge Aparicio
3fd5fdd8d3 crate-ify compiler-rt into compiler-builtins
libcompiler-rt.a is dead, long live libcompiler-builtins.rlib

This commit moves the logic that used to build libcompiler-rt.a into a
compiler-builtins crate on top of the core crate and below the std crate.
This new crate still compiles the compiler-rt instrinsics using gcc-rs
but produces an .rlib instead of a static library.

Also, with this commit rustc no longer passes -lcompiler-rt to the
linker. This effectively makes the "no-compiler-rt" field of target
specifications a no-op. Users of `no_std` will have to explicitly add
the compiler-builtins crate to their crate dependency graph *if* they
need the compiler-rt intrinsics. Users of the `std` have to do nothing
extra as the std crate depends on compiler-builtins.

Finally, this a step towards lazy compilation of std with Cargo as the
compiler-rt intrinsics can now be built by Cargo instead of having to
be supplied by the user by some other method.

closes #34400
2016-09-12 21:22:15 -07:00
bors
09905b1177 Auto merge of #36019 - frewsxcv:take-into-inner, r=alexcrichton
Introduce `into_inner` method on `std::io::Take`.

https://github.com/rust-lang/rust/issues/23755
2016-09-12 20:33:47 -07:00
Alex Burka
0a62676c73 fix "X is not a member of trait Y" span labels
The span labels for associated types and consts were hardcoded to `Foo`
rather than substituting the name of the trait.

This also normalizes the wording for associated methods', traits', and
consts' span labels.

Fixes #36428.
2016-09-13 03:13:13 +00:00
knight42
ebda77072a Add tests for str::replacen 2016-09-13 10:16:31 +08:00
knight42
be2fa70c16 Implement std::str::replacen 2016-09-13 10:16:31 +08:00
bors
fa9d8cc8ac Auto merge of #35960 - nikomatsakis:incr-comp-krate-edges, r=michaelwoerister
fix a few errant `Krate` edges

Exploring the effect of small changes on `syntex` reuse, I discovered the following sources of unnecessary edges from `Krate`

r? @michaelwoerister
2016-09-12 17:15:26 -07:00
Steven Fackler
7bd25a3048 Remove stray attribute 2016-09-12 15:55:02 -07:00
Niko Matsakis
9ca578687b check stack discipline of tasks 2016-09-12 17:43:44 -04:00
bors
5531c314a2 Auto merge of #36354 - mikhail-m1:master, r=jonathandturner
fix span for errors E0537, E0535 & E0536

fix #36182 as part of #35233
2016-09-12 14:05:41 -07:00
bors
f81f4964d2 Auto merge of #36204 - c4rlo:patch-3, r=GuillaumeGomez
README.md: fix a "\" in table heading to be "/"
2016-09-12 10:54:08 -07:00
bors
888970370a Auto merge of #36414 - nnethercote:char_lit, r=jseyfried
Improve char_lit's readability and speed

This is my first contribution to rustc. Please let me know if I've done anything wrong. (I ran `make tidy` before making the pull request.)
2016-09-12 07:43:57 -07:00
bors
85592fbe60 Auto merge of #36406 - arielb1:constant-padding, r=eddyb
use `adt::trans_const` when translating constant closures and tuples

The previous way dropped padding on the floor.

Fixes #36401

r? @eddyb
2016-09-12 04:38:55 -07:00
bors
00ce2c0ffa Auto merge of #36360 - orbea:docdir, r=alexcrichton
Allow setting --docdir

This will allow setting `--docdir` during configure, this is useful because not all linux distributions install documentation to `/usr/share/doc`.  For example in Slackware documentation is installed to `/usr/doc/$PRGNAM-$VERSION` and `/usr/share/doc` is a symlink to `/usr/doc`.

To use this `./configure --docdir=/usr/doc/$PRGNAM-$VERSION` can be used.
2016-09-12 01:33:40 -07:00
Nicholas Nethercote
826f673664 Lazily construct panic messages in char_lit().
This reduces the time taken to run
`rustc -Zparse-only rustc-benchmarks/issue-32278-big-array-of-strings`
from 0.18s to 0.15s on my machine, and reduces the number of
instructions (as measured by Cachegrind) from 1.34B to 1.01B.

With the change applied, the time to fully compile that benchmark is
1.96s, so this is a 1.5% improvement.
2016-09-12 17:33:02 +10:00
Nicholas Nethercote
4c274b6aea Avoid an unnecessary intermediate value in char_lit().
This makes the function more concise and easier to understand.
2016-09-12 16:15:52 +10:00
bors
4d9132357f Auto merge of #36355 - bluss:vec-extend-from-slice-aliasing-workaround, r=alexcrichton
Work around pointer aliasing issue in Vec::extend_from_slice, extend_with_element

Due to missing noalias annotations for &mut T in general (issue #31681),
in larger programs extend_from_slice and extend_with_element may both
compile very poorly. What is observed is that the .set_len() calls are
not lifted out of the loop, even for `Vec<u8>`.

Use a local length variable for the Vec length instead, and use a scope
guard to write this value back to self.len when the scope ends or on
panic. Then the alias analysis is easy.

This affects extend_from_slice, extend_with_element, the vec![x; n]
macro, Write impls for Vec<u8>, BufWriter, etc (but may / may not
have triggered since inlining can be enough for the compiler to get it right).

Fixes #32155
Fixes #33518
Closes #17844
2016-09-11 22:28:24 -07:00
dangcheng
5b59c14143 change error message 2016-09-12 12:02:35 +08:00
bors
0f5f325f9a Auto merge of #36344 - sanxiyn:llvm-components, r=alexcrichton
Use LLVM_COMPONENTS to run tests just for supported targets

This is already done for simd-ffi test, but not for atomic-lock-free test.

Fix #35023.
2016-09-11 19:06:35 -07:00
Ahmed Charles
694d601dbc Use question_mark feature in librustc_metadata. 2016-09-11 16:02:44 -07:00
Ahmed Charles
509aa235ba Use question_mark feature in librustc_const_eval. 2016-09-11 16:02:44 -07:00
Ahmed Charles
0dbf77e722 Use question_mark feature in librustc_back. 2016-09-11 16:02:44 -07:00
Ahmed Charles
637f1492e7 Use question_mark feature in libstd. 2016-09-11 16:02:44 -07:00
Ahmed Charles
d73e374ddb Use question_mark feature in libserialize. 2016-09-11 16:02:43 -07:00
Ahmed Charles
14d3937e65 Use question_mark feature in librustc. 2016-09-11 16:02:43 -07:00
Ahmed Charles
e10e0bcf2d Use question_mark feature in librustc_mir. 2016-09-11 16:02:43 -07:00
Ahmed Charles
8a9e52a8e7 Use question_mark feature in librustc_incremental. 2016-09-11 16:02:41 -07:00
Ahmed Charles
8391760bd8 Use question_mark feature in librustc_errors. 2016-09-11 16:00:50 -07:00
Ahmed Charles
bfd123d1e9 Use question_mark feature in libcore. 2016-09-11 16:00:50 -07:00
Ahmed Charles
6d88ab57b3 Fix typo in bootstrap/lib.rs. 2016-09-11 16:00:50 -07:00
Ahmed Charles
f0a414e74e Use question_mark feature in compiletest. 2016-09-11 16:00:50 -07:00
Ahmed Charles
f1c6cad963 Use question_mark feature in linkchecker. 2016-09-11 16:00:50 -07:00
Ariel Ben-Yehuda
f1bd907789 use adt::trans_const when translating constant closures and tuples
Fixes #36401
2016-09-12 01:53:43 +03:00
Scott Olson
6b99e01162 Delete stray ` character in error message. 2016-09-11 16:45:49 -06:00
bors
0be88eb794 Auto merge of #36308 - dtolnay:inputitem, r=alexcrichton
Point macros 1.1 errors to the input item

Moved from https://github.com/alexcrichton/rust/pull/6 to continue discussion. Fixes #36218.

Before:

```rust
error[E0106]: missing lifetime specifier
  --> src/main.rs:10:10
   |
10 | #[derive(Serialize, Deserialize)]
   |          ^ expected lifetime parameter

error[E0038]: the trait `T` cannot be made into an object
  --> src/main.rs:15:15
   |
15 | #[derive(Serialize, Deserialize)]
   |          ^^^^^^^^^^ the trait `T` cannot be made into an object
```

After:

```rust
error[E0106]: missing lifetime specifier
  --> src/main.rs:11:1
   |
11 | struct A {
   | ^ expected lifetime parameter

error[E0038]: the trait `T` cannot be made into an object
  --> src/main.rs:16:1
   |
16 | struct B<'a> {
   | ^ the trait `T` cannot be made into an object
```
2016-09-11 15:12:27 -07:00
Keegan McAllister
54c680cdb1 Tweak array docs
Fixes #29331.
2016-09-11 12:36:24 -07:00
bors
4812cf392f Auto merge of #36369 - uweigand:s390x, r=alexcrichton
Add s390x support

This adds support for building the Rust compiler and standard
library for s390x-linux, allowing a full cross-bootstrap sequence
to complete.  This includes:

- Makefile/configure changes to allow native s390x builds
- Full Rust compiler support for the s390x C ABI
  (only the non-vector ABI is supported at this point)
- Port of the standard library to s390x
- Update the liblibc submodule to a version including s390x support
- Testsuite fixes to allow clean "make check" on s390x

Caveats:

- Resets base cpu to "z10" to bring support in sync with the default
  behaviour of other compilers on the platforms.  (Usually, upstream
  supports all older processors; a distribution build may then chose
  to require a more recent base version.)  (Also, using zEC12 causes
  failures in the valgrind tests since valgrind doesn't fully support
  this CPU yet.)

- z13 vector ABI is not yet supported.  To ensure compatible code
  generation, the -vector feature is passed to LLVM.  Note that this
  means that even when compiling for z13, no vector instructions
  will be used.  In the future, support for the vector ABI should be
  added (this will require common code support for different ABIs
  that need different data_layout strings on the same platform).

- Two test cases are (temporarily) ignored on s390x to allow passing
  the test suite.  The underlying issues still need to be fixed:
  * debuginfo/simd.rs fails because of incorrect debug information.
    This seems to be a LLVM bug (also seen with C code).
  * run-pass/union/union-basic.rs simply seems to be incorrect for
    all big-endian platforms.

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2016-09-11 10:53:24 -07:00
athulappadan
41881e85bd Documentation for default types modified 2016-09-11 22:58:01 +05:30
Richard Janis Goldschmidt
c8b656bea5 Remove unnecessary cmp::min from BufWriter::write
The first branch of the if statement already checks if `buf.len() >= self.buf.capacity()`, which makes the `cmp::min(buf.len(), self.buf.capacity())` redundant: the result will always be `buf.len()`. Therefore, we can pass the `buf` slice directly into `Write::write`.
2016-09-11 16:48:04 +02:00
athulappadan
49e77dbf25 Documentation of what does for each type 2016-09-11 17:00:09 +05:30
ggomez
e3153cfd88 Improve Result doc 2016-09-11 11:58:20 +02:00
ggomez
57a6037951 Improve Option doc 2016-09-11 11:58:20 +02:00
ggomez
48dc0ba307 Improve Copy trait doc 2016-09-11 11:58:20 +02:00
ggomez
3d289278ee Improve Clone doc 2016-09-11 11:58:17 +02:00
John Firebaugh
f647db4c8a Update E0297 to new error format 2016-09-10 13:22:19 -07:00
bors
1fca1ab0e7 Auto merge of #36351 - pnkfelix:fix-36278-size-miscalc, r=eddyb
When sizing DST, don't double-count nested struct prefixes.

When computing size of `struct P<T>(Q<T>)`, don't double-count prefix added by `Q`

Fix #36278. Fix #36294.
2016-09-10 13:10:29 -07:00
Vadim Petrochenkov
62cb7510ac Improve Eq deriving 2016-09-10 22:37:06 +03:00
Keegan McAllister
72e103fe90 Tweak std::mem docs
Fixes #29362.
2016-09-10 10:48:01 -07:00
Steven Fackler
63fecad2e7 Inherit overflow checks for sum and product 2016-09-10 10:06:33 -07:00
Vadim Petrochenkov
2a2c9d38c7 Improve shallow Clone deriving 2016-09-10 18:43:27 +03:00