rust/src
bors 0f9317d37e Auto merge of #43595 - oyvindln:master, r=aturon
Add an overflow check in the Iter::next() impl for Range<_> to help with vectorization.

This helps with vectorization in some cases, such as (0..u16::MAX).collect::<Vec<u16>>(),
 as LLVM is able to change the loop condition to use equality instead of less than and should help with #43124. (See also my [last comment](https://github.com/rust-lang/rust/issues/43124#issuecomment-319098625) there.) This PR makes collect on ranges of u16, i16, i8, and u8 **significantly** faster (at least on x86-64 and i686), and pretty close, though not quite equivalent to a [manual unsafe implementation](https://is.gd/nkoecB). 32 ( and 64-bit values on x86-64) bit values were already vectorized without this change, and they still are. This PR doesn't seem to help with 64-bit values on i686, as they still don't vectorize well compared to doing a manual loop.

I'm a bit unsure if this was the best way of implementing this, I tried to do it with as little changes as possible and avoided changing the step trait and the behavior in RangeFrom (I'll leave that for others like #43127 to discuss wider changes to the trait). I tried simply changing the comparison to `self.start != self.end` though that made the compiler segfault when compiling stage0, so I went with this method instead for now.

As for `next_back()`, reverse ranges seem to optimise properly already.
2017-08-09 01:30:02 +00:00
..
bootstrap pass rustc_libdir instead of sysroot_libdir() for running rustdoc from rustbuild 2017-08-08 06:37:40 +02:00
build_helper rustbuild: Replace create_dir_racy with create_dir_all 2017-08-07 16:04:46 +01:00
ci rustbuild: Remove --enable-llvm-clean-rebuild 2017-07-30 13:50:19 -07:00
doc Bump 'src/doc/book' git submodule. 2017-08-05 16:29:10 -04:00
etc Add support for Vector Average on PowerPC 2017-08-07 07:44:27 +00:00
grammar
jemalloc@11bfb0dcf8
liballoc Indicate how to turn byte slices back into a string slice. 2017-08-05 08:27:25 -04:00
liballoc_jemalloc
liballoc_system
libarena
libbacktrace
libcollections
libcompiler_builtins@5e49856003
libcore Auto merge of #43595 - oyvindln:master, r=aturon 2017-08-09 01:30:02 +00:00
libfmt_macros
libgetopts
libgraphviz
liblibc@2a5b50b7f7 addrinfo hint in lookup_host() needs clean initialization on all platforms 2017-08-07 09:07:26 -07:00
libpanic_abort
libpanic_unwind
libproc_macro syntax: Capture a TokenStream when parsing items 2017-07-28 10:47:01 -07:00
libprofiler_builtins
librand
librustc Auto merge of #43723 - arielb1:nonincremental-fast-reject, r=eddyb 2017-08-08 12:14:51 +00:00
librustc_allocator
librustc_apfloat rustc_apfloat: complete the IEEE & PPC implementations. 2017-08-02 03:45:03 +03:00
librustc_asan
librustc_back Add L4Re Support in librustc_back 2017-08-04 08:59:01 +02:00
librustc_bitflags
librustc_borrowck Auto merge of #43547 - arielb1:no-borrow-no-check, r=nikomatsakis 2017-07-31 23:21:24 +00:00
librustc_const_eval rustc_const_math: use apfloat::ieee::{Single,Double} in ConstFloat. 2017-08-02 17:28:11 +03:00
librustc_const_math rustc_const_math: use apfloat::ieee::{Single,Double} in ConstFloat. 2017-08-02 17:28:11 +03:00
librustc_data_structures Auto merge of #43713 - arielb1:legacy-dataflow, r=eddyb 2017-08-07 15:42:35 +00:00
librustc_driver de-orphan extended information 2017-08-06 21:29:05 -07:00
librustc_errors fix -Z treat-err-as-bug 2017-07-31 18:09:02 +03:00
librustc_incremental async-llvm(18): Instantiate OngoingCrateTranslation before starting translation. 2017-07-31 15:15:09 +02:00
librustc_lint make for_all_relevant_impls O(1) again 2017-08-08 11:18:12 +03:00
librustc_llvm Auto merge of #43554 - eddyb:apfloat, r=nikomatsakis 2017-08-05 13:12:56 +00:00
librustc_lsan
librustc_metadata async-llvm(18): Instantiate OngoingCrateTranslation before starting translation. 2017-07-31 15:15:09 +02:00
librustc_mir make for_all_relevant_impls O(1) again 2017-08-08 11:18:12 +03:00
librustc_msan
librustc_passes fixing doctest failures in resurfaced extended information 2017-08-06 21:36:57 -07:00
librustc_platform_intrinsics Add support for Vector Average on PowerPC 2017-08-07 07:44:27 +00:00
librustc_plugin de-orphan extended information 2017-08-06 21:29:05 -07:00
librustc_privacy
librustc_resolve Auto merge of #43552 - petrochenkov:instab, r=jseyfried 2017-08-01 06:05:34 +00:00
librustc_save_analysis Appease tidy and fix save-analysis config for dist builds 2017-08-03 16:31:25 +12:00
librustc_trans Auto merge of #43488 - Florob:repeat-opt, r=arielb1 2017-08-06 08:09:59 +00:00
librustc_tsan
librustc_typeck make for_all_relevant_impls O(1) again 2017-08-08 11:18:12 +03:00
librustdoc Auto merge of #43691 - GuillaumeGomez:fix-rustdoc, r=QuietMisdreavus 2017-08-08 22:14:12 +00:00
libserialize
libstd addrinfo hint in lookup_host() needs clean initialization on all platforms 2017-08-07 09:07:26 -07:00
libstd_unicode Auto merge of #42998 - behnam:uni-ver-type, r=sfackler 2017-08-08 06:48:45 +00:00
libsyntax Auto merge of #43698 - MaloJaffre:confusables, r=eddyb 2017-08-08 14:39:27 +00:00
libsyntax_ext Auto merge of #43533 - nrc:macro-save, r=jseyfried, 2017-08-01 03:52:14 +00:00
libsyntax_pos Auto merge of #43584 - arielb1:unused-reads, r=eddyb 2017-08-02 05:56:06 +00:00
libterm
libtest
libunwind
llvm@d9e7d2696e
rt
rtstartup
rustc Build rustdoc on-demand. 2017-07-27 05:51:22 -06:00
rustllvm Gate LLVMRustHasFeature on LLVM_RUSTLLVM 2017-07-31 18:10:01 -07:00
test Auto merge of #43691 - GuillaumeGomez:fix-rustdoc, r=QuietMisdreavus 2017-08-08 22:14:12 +00:00
tools update rls 2017-08-07 12:16:04 +12:00
Cargo.lock Update libc to 0.2.29 2017-08-07 15:42:30 -07:00
Cargo.toml Build rustdoc on-demand. 2017-07-27 05:51:22 -06:00
stage0.txt