rust/src
bors 088d417852 Auto merge of #33593 - dotdash:smart_derive, r=brson
Improve derived implementations for enums with lots of fieldless variants

A number of trait methods like PartialEq::eq or Hash::hash don't
actually need a distinct arm for each variant, because the code within
the arm only depends on the number and types of the fields in the
variants. We can easily exploit this fact to create less and better
code for enums with multiple variants that have no fields at all, the
extreme case being C-like enums.

For nickel.rs and its by now infamous 800 variant enum, this reduces
optimized compile times by 25% and non-optimized compile times by 40%.
Also peak memory usage is down by almost 40% (310MB down to 190MB).

To be fair, most other crates don't benefit nearly as much, because
they don't have as huge enums. The crates in the Rust distribution that
I measured saw basically no change in compile times (I only tried
optimized builds) and only 1-2% reduction in peak memory usage.
2016-05-14 22:04:58 -07:00
..
bootstrap rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
build_helper whoops 2016-04-04 21:14:15 +10:00
compiler-rt@57315f7e07 update compiler-rt submodule 2016-03-15 22:32:38 -05:00
doc Rollup merge of #33558 - bnewbold:trivial-book-tweaks, r=steveklabnik 2016-05-11 21:30:20 +02:00
driver
etc Copy more libraries from local Rust to stage0 2016-05-10 15:12:19 +10:00
grammar
jemalloc@aab1c0a0e0 std: Update jemalloc again to the 4.* track 2016-03-04 09:49:39 -08:00
liballoc Auto merge of #33282 - alexcrichton:rustbuild-crate-tests, r=brson 2016-05-12 14:31:54 -07:00
liballoc_jemalloc rustbuild: Tighten dependencies of build scripts 2016-05-10 23:41:19 -07:00
liballoc_system rustc: Implement custom panic runtimes 2016-05-09 08:22:36 -07:00
libarena std: Clean out deprecated APIs 2016-03-12 12:31:13 -08:00
libbacktrace
libcollections Auto merge of #33282 - alexcrichton:rustbuild-crate-tests, r=brson 2016-05-12 14:31:54 -07:00
libcollectionstest Utilize Result::unwrap_err in more places. 2016-05-09 08:40:57 -04:00
libcore Auto merge of #33579 - Amanieu:atomic_bool2, r=alexcrichton 2016-05-14 11:56:58 -07:00
libcoretest Rollup merge of #33426 - sfackler:try-from, r=aturon 2016-05-08 07:02:22 -07:00
libflate rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
libfmt_macros
libgetopts std: Stabilize APIs for the 1.9 release 2016-04-11 08:57:53 -07:00
libgraphviz sprinkle feature gates here and there 2016-03-22 22:02:47 -05:00
liblibc@7265c17d18 std: Fix linking against signal on Android 2016-04-04 21:54:59 -07:00
liblog
libpanic_abort rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
libpanic_unwind rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
librand rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
librbml std: Stabilize APIs for the 1.9 release 2016-04-11 08:57:53 -07:00
librustc Rollup merge of #33576 - soltanmm:vtable, r=nikomatsakis 2016-05-14 11:57:49 +02:00
librustc_back Add #[cfg(target_has_atomic)] to get atomic support for the current target 2016-05-09 13:31:47 +01:00
librustc_bitflags rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
librustc_borrowck Auto merge of #33282 - alexcrichton:rustbuild-crate-tests, r=brson 2016-05-12 14:31:54 -07:00
librustc_const_eval Rollup merge of #33260 - mrmiywj:help-on-pattern-guard, r=guillaumegomez 2016-05-11 09:27:42 -04:00
librustc_const_math don't report bitshift overflow twice 2016-04-26 14:10:07 +02:00
librustc_data_structures Plumb inference obligations through selection 2016-05-11 17:29:23 -07:00
librustc_driver Rollup merge of #33544 - dotdash:baby_dont_break_me_no_more, r=Aatch 2016-05-14 11:57:47 +02:00
librustc_incremental rustc: Split 'tcx into 'gcx and 'tcx for InferCtxt and its users. 2016-05-11 04:14:58 +03:00
librustc_lint Auto merge of #33282 - alexcrichton:rustbuild-crate-tests, r=brson 2016-05-12 14:31:54 -07:00
librustc_llvm Add opt-level options for optimizing for size and minimum size. This attempts 2016-04-28 23:08:30 -07:00
librustc_metadata Auto merge of #33538 - Ms2ger:LocalCrateReader, r=arielb1 2016-05-13 23:34:52 -07:00
librustc_mir Rollup merge of #33552 - dotdash:scfg, r=luqmana 2016-05-14 11:57:47 +02:00
librustc_passes rustc: Split local type contexts interners from the global one. 2016-05-11 04:14:58 +03:00
librustc_platform_intrinsics rustc_platform_intrinsics: remove unused rustc dependency. 2016-03-29 19:36:01 +03:00
librustc_plugin Remove the MacroVisitor pass. 2016-04-22 01:40:33 +02:00
librustc_privacy rustc: Split 'tcx into 'gcx and 'tcx for InferCtxt and its users. 2016-05-11 04:14:58 +03:00
librustc_resolve Rollup merge of #33572 - nagisa:assoc-const-types, r=eddyb 2016-05-14 11:57:48 +02:00
librustc_save_analysis save-analysis: make DefIds prettier 2016-05-13 12:23:41 -07:00
librustc_trans Rollup merge of #33576 - soltanmm:vtable, r=nikomatsakis 2016-05-14 11:57:49 +02:00
librustc_typeck Rollup merge of #33572 - nagisa:assoc-const-types, r=eddyb 2016-05-14 11:57:48 +02:00
librustc_unicode std: Stabilize APIs for the 1.9 release 2016-04-11 08:57:53 -07:00
librustdoc Auto merge of #33600 - ollie27:rustdoc_impl_params, r=alexcrichton 2016-05-14 19:46:01 -07:00
libserialize Utilize Result::unwrap_err in more places. 2016-05-09 08:40:57 -04:00
libstd Auto merge of #33563 - Amanieu:oncestate, r=alexcrichton 2016-05-14 07:15:45 -07:00
libsyntax Auto merge of #33568 - nrc:save-json-2, r=pnkfelix 2016-05-14 09:36:52 -07:00
libsyntax_ext Improve derived implementations for enums with lots of fieldless variants 2016-05-12 21:05:13 +02:00
libterm Utilize Result::unwrap_err in more places. 2016-05-09 08:40:57 -04:00
libtest rustc: Implement custom panic runtimes 2016-05-09 08:22:36 -07:00
libunwind rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
llvm@a73c41e7f1 rustc: Use C++ personalities on MSVC 2016-05-09 17:28:48 -07:00
rt Handle integer-extending for C ABI 2016-04-04 22:14:10 +02:00
rtstartup Revert "workarounds to make link guards work on windows" 2016-03-25 14:07:20 -04:00
rust-installer@c37d3747da
rustc rustbuild: Add support for crate tests + doctests 2016-05-12 08:52:20 -07:00
rustllvm rustc: Use C++ personalities on MSVC 2016-05-09 17:28:48 -07:00
test Auto merge of #33593 - dotdash:smart_derive, r=brson 2016-05-14 22:04:58 -07:00
tools Use symlink_metadata in tidy to avoid panicking on broken symlinks. 2016-05-11 20:09:50 +03:00
stage0.txt mk: Bootstrap from stable instead of snapshots 2016-04-19 10:56:49 -07:00