Commit Graph

61576 Commits

Author SHA1 Message Date
Andrew Cann e0a5b9d746 Change test for being on nixos again 2017-02-11 16:17:54 +08:00
bors bae454edc5 Auto merge of #39736 - frewsxcv:rollup, r=frewsxcv
Rollup of 9 pull requests

- Successful merges: #39174, #39660, #39676, #39692, #39701, #39710, #39721, #39724, #39725
- Failed merges:
2017-02-11 07:18:21 +00:00
Simonas Kazlauskas b663d9d5e8 Rebase fallout
Because certain somebody sucks at resolving big conflicts
2017-02-11 08:10:41 +02:00
Charlie Fan a5e8bbf32b Add `swap` method for `Cell` 2017-02-11 13:08:13 +08:00
Andrew Cann 6e2631a014 Change test for being on NixOS 2017-02-11 13:01:37 +08:00
Corey Farwell 56275f82a8 Rollup merge of #39725 - Aaronepower:master, r=steveklabnik
Updated nightly book with installing nightly instructions
2017-02-10 23:41:40 -05:00
Corey Farwell 0e6b370929 Rollup merge of #39724 - malbarbo:android, r=alexcrichton
Allow rustc data structures compile to android

flock structure is defined in asm*/fcntl.h. This file on android is
generated from the linux kernel source, so they are the same.
2017-02-10 23:41:39 -05:00
Corey Farwell 6866df669c Rollup merge of #39721 - whataloadofwhat:catch-unwind-bang, r=alexcrichton
Change std::panicking::try::Data into a union

No longer potentially call `mem::uninitialized::<!>()`

Fixes #39432
2017-02-10 23:41:38 -05:00
Corey Farwell 0fd89adcaa Rollup merge of #39710 - brson:151notes, r=alexcrichton
Update 1.15.1 relnotes

Matching what is on stable.
2017-02-10 23:41:37 -05:00
Corey Farwell 15bec3dd63 Rollup merge of #39701 - sgrif:sg-vec-reserve-docs, r=alexcrichton
Explicitly mention that `Vec::reserve` is based on len not capacity

I spent a good chunk of time tracking down a buffer overrun bug that
resulted from me mistakenly thinking that `reserve` was based on the
current capacity not the current length. It would be helpful if this
were called out explicitly in the docs.
2017-02-10 23:41:36 -05:00
Corey Farwell 92cf7aecb4 Rollup merge of #39692 - oli-obk:patch-2, r=aturon
remove wrong packed struct test

This UB was found by running the test under [Miri](https://github.com/solson/miri) which rejects these unsafe unaligned loads. 😄
2017-02-10 23:41:35 -05:00
Corey Farwell 4269e5207e Rollup merge of #39676 - alexcrichton:fix-again, r=brson
Actually fix manifest generation

The previous fix contained an error where `toml::encode` returned a runtime
error, so this version just constructs a literal `toml::Value`.
2017-02-10 23:41:34 -05:00
Corey Farwell bf750890c9 Rollup merge of #39660 - alexcrichton:shasum-dirs, r=brson
Don't include directory names in shasums

Right now we just run `shasum` on an absolute path but right now the shasum
files only include filenames, so let's use `current_dir` and just the file name
to only have the file name emitted.
2017-02-10 23:41:33 -05:00
Corey Farwell 17dcc51438 Rollup merge of #39174 - rspeer:iter-nth-doc-fix, r=alexcrichton
Fix a misleading statement in `Iterator.nth()`

The `Iterator.nth()` documentation says "Note that all preceding elements will be consumed". I assumed from that that the preceding elements would be the *only* ones that were consumed, but in fact the returned element is consumed as well.

The way I read the documentation, I assumed that `nth(0)` would not discard anything (there are 0 preceding elements, and maybe it just peeks at the start of the iterator somehow), so I added a sentence clarifying that it does. I also rephrased it to avoid the stunted "i.e." phrasing.
2017-02-10 23:41:32 -05:00
bors f140a6c6ef Auto merge of #39642 - stjepang:specialize-slice-partialord, r=alexcrichton
Specialize `PartialOrd<A> for [A] where A: Ord`

This way we can call `cmp` instead of `partial_cmp` in the loop, removing some burden of optimizing `Option`s away from the compiler.

PR #39538 introduced a regression where sorting slices suddenly became slower, since `slice1.lt(slice2)` was much slower than `slice1.cmp(slice2) == Less`. This problem is now fixed.

To verify, I benchmarked this simple program:
```rust
fn main() {
    let mut v = (0..2_000_000).map(|x| x * x * x * 18913515181).map(|x| vec![x, x ^ 3137831591]).collect::<Vec<_>>();
    v.sort();
}
```

Before this PR, it would take 0.95 sec, and now it takes 0.58 sec.
I also tried changing the `is_less` lambda to use `cmp` and `partial_cmp`. Now all three versions (`lt`, `cmp`, `partial_cmp`) are equally performant for sorting slices - all of them take 0.58 sec on the
benchmark.

Tangentially, as soon as we get `default impl`, it might be a good idea to implement a blanket default impl for `lt`, `gt`, `le`, `ge` in terms of `cmp` whenever possible. Today, those four functions by default are only implemented in terms of `partial_cmp`.

r? @alexcrichton
2017-02-11 04:37:27 +00:00
Jeffrey Seyfried b3d73995da Fix ICE on certain sequence repetitions. 2017-02-10 23:58:18 +00:00
bors 064a0ee131 Auto merge of #39490 - RReverser:em-linker, r=alexcrichton
Add Emscripten-specific linker

Emscripten claims to accept most GNU linker options, but in fact most of `-Wl,...` are useless for it and instead it requires some additional special options which are easier to handle in a separate trait.

Currently added:
 - `export_symbols`: works on executables as special Emscripten case since staticlibs/dylibs aren't compiled to JS, while exports are required to be accessible from JS.
Fixes #39171.
 - `optimize` - translates Rust's optimization level to Emscripten optimization level (whether passed via `-C opt-level=...` or `-O...`).
Fixes #36899.
 - `debuginfo` - translates debug info; Emscripten has 5 debug levels while Rust has 3, so chose to translate `-C debuginfo=1` to `-g3` (preserves whitespace, variable and function names for easy debugging).
Fixes #36901.
 - `no_default_libraries` - tells Emscripten to exclude `memcpy` and co.

TODO (in future PR): dynamic linking via `SIDE_MODULE` / `MAIN_MODULE` mechanism.
2017-02-10 23:50:46 +00:00
bors 2425b22774 Auto merge of #39438 - clarcharr:box_from, r=alexcrichton
Conversions between slices and boxes

This allows conversion for `Copy` slices, `str`, and `CStr` into their boxed counterparts.

This also adds the method `CString::into_boxed_c_str`.

I would like to add similar implementations for `OsStr` as well, but I have not figured out how.
2017-02-10 21:11:29 +00:00
whataloadofwhat ca92c51682 Change std::panicking::try::Data into a union
No longer potentially call `mem::uninitialized::<!>()`

Fixes #39432
2017-02-10 19:20:28 +00:00
Aaron Power 5c295110fd Updated installing nightly instructions 2017-02-10 18:44:32 +00:00
Marco A L Barbosa a8364acafb Allow rustc data structures compile to android
flock structure is defined in asm*/fcntl.h. This file on android is
generated from the linux kernel source, so they are the same.
2017-02-10 16:34:10 -02:00
Simonas Kazlauskas f3bd723101 Fix intcast, use it where appropriate 2017-02-10 19:47:09 +02:00
Simonas Kazlauskas 7d1f36a482 Inline open_drop_for_variant & clean matches::test 2017-02-10 19:47:09 +02:00
Simonas Kazlauskas 49ccc106da Rebase fixups 2017-02-10 19:47:09 +02:00
Simonas Kazlauskas 1949bdf531 Fix tests 2017-02-10 19:47:08 +02:00
Simonas Kazlauskas 6c19104c43 Fix build
Additionally, revert unnecessary changes to ty::layout
2017-02-10 19:47:06 +02:00
Simonas Kazlauskas eb727a8faa Add TerminatorKind::if_ convenience constructor
Constructs a TerminatorKind::SwitchInt for an equivalent conditional true-false branch.
2017-02-10 19:45:55 +02:00
Simonas Kazlauskas a8b7b62185 Revert use of layout code in typeck::collect 2017-02-10 19:45:53 +02:00
Simonas Kazlauskas 362eb7ea07 Inspect now does not force on-stack Lvalue 2017-02-10 19:44:00 +02:00
Simonas Kazlauskas 76d9a4e646 Fix codegen test 2017-02-10 19:44:00 +02:00
Simonas Kazlauskas 8e00d28ff4 Prefer switching on false for boolean switches
This ends up not really mattering because we generate a plain conditional branch in LLVM either
way.
2017-02-10 19:44:00 +02:00
Simonas Kazlauskas 4be18488a7 Fix SwitchInt building in ElaborateDrops pass
Previously it used to build a switch in a way that didn’t preserve the invariat of SwitchInt. Now
it builds it in an optimal way too, where otherwise branch becomes all the branches which did not
have partial variant drops.
2017-02-10 19:44:00 +02:00
Simonas Kazlauskas c9939863ca Fix the IntTypeExt::to_ty() lifetime bounds 2017-02-10 19:43:57 +02:00
Simonas Kazlauskas 64182a587c Reimplement simplify_cfg for SwitchInt
First example of optimisation that applies to many more cases than originally.
2017-02-10 19:42:41 +02:00
Simonas Kazlauskas 92c56f607b Fix build on further stages 2017-02-10 19:42:41 +02:00
Simonas Kazlauskas a00a0adc79 Only SwitchInt over integers, not all consts
Also use a Cow to avoid full Vec for all SwitchInts
2017-02-10 19:42:41 +02:00
Simonas Kazlauskas aac82d9b13 SwitchInt over Switch
This removes another special case of Switch by replacing it with the more general SwitchInt. While
this is more clunky currently, there’s no reason we can’t make it nice (and efficient) to use.
2017-02-10 19:42:41 +02:00
Simonas Kazlauskas 5d70a7fbe4 AdtDef now contains discr_ty same as layouted 2017-02-10 19:42:39 +02:00
Simonas Kazlauskas 24c93efbb5 Move type of discriminant to AdtDef
Previously AdtDef variants contained ConstInt for each discriminant, which did not really reflect
the actual type of the discriminants. Moving the type into AdtDef allows to easily put the type
into metadata and also saves bytes from ConstVal overhead for each discriminant.

Also arguably the code is cleaner now :)
2017-02-10 19:38:36 +02:00
Ingvar Stepanyan f35b598bbf Disable memory init file until further notice
It's support is currently too buggy in both Rust tests and Cargo.
2017-02-10 17:34:05 +00:00
Simonas Kazlauskas 98d1db7fe3 If is now always a SwitchInt in MIR 2017-02-10 19:31:37 +02:00
Simonas Kazlauskas 779c6b6cb8 Add Rvalue::Discriminant to retrieve discriminant 2017-02-10 19:31:37 +02:00
Ingvar Stepanyan 84c2a67160 Reenable exception catching in Emscripten even on optimized targets 2017-02-10 17:31:04 +00:00
Ingvar Stepanyan eed6168a3b Add Emscripten-specific linker
It claims to accept most GNU linker options, but in fact most of them
have no effect and instead it requires some special options which are
easier to handle in a separate trait.

Currently added:
 - `export_symbols`: works on executables as special Emscripten case
since staticlibs/dylibs aren't compiled to JS, while exports are
required to be accessible from JS.
Fixes #39171.
 - `optimize` - translates Rust's optimization level to Emscripten
optimization level (whether passed via `-C opt-level=...` or `-O...`).
Fixes #36899.
 - `debuginfo` - translates debug info; Emscripten has 5 debug levels
while Rust has 3, so chose to translate `-C debuginfo=1` to `-g3`
(preserves whitespace, variable and function names for easy debugging).
Fixes #36901.
 - `no_default_libraries` - tells Emscripten to exlude `memcpy` and co.
2017-02-10 17:31:04 +00:00
bors bc524d3d55 Auto merge of #39708 - jethrogb:patch-4, r=frewsxcv
Update set operations documentation

Reminding people of set terminology.
2017-02-10 14:26:18 +00:00
Rob Speer 11d36aec83 iterator docs: Move paragraph about discarding; clarify "consumed" 2017-02-10 01:35:29 -05:00
Rob Speer ebf29ef073 Rephrase my proposed edit ("objects" -> "elements") 2017-02-10 01:31:14 -05:00
Rob Speer 5cc5e0851e Fix a misleading statement in `Iterator.nth()`
The `Iterator.nth()` documentation says "Note that all preceding elements will be consumed". I assumed from that that the preceding elements would be the *only* ones that were consumed, but in fact the returned element is consumed as well.

The way I read the documentation, I assumed that `nth(0)` would not discard anything (as there are 0 preceding elements), so I added a sentence clarifying that it does. I also rephrased it to avoid the stunted "i.e." phrasing.
2017-02-10 01:31:14 -05:00
Brian Vincent fb9104768c Dont segfault if btree range is not in order 2017-02-10 00:16:04 -06:00
bors f80514426a Auto merge of #39712 - frewsxcv:rollup, r=frewsxcv
Rollup of 6 pull requests

- Successful merges: #39587, #39674, #39693, #39700, #39705, #39707
- Failed merges:
2017-02-10 04:50:08 +00:00