rust/compiler
Arlie Davis 4721b6518c Split a func into cold/hot parts, reducing binary size
I noticed that the Size::bits function is called in many places,
and is inlined into them. On x86_64-pc-windows-msvc, this function
is inlined 527 times, and compiled separately (non-inlined) 3 times.

Each of those inlined calls contains code that panics. This commit
moves the `panic!` call into a separate function and marks that
function with `#[cold]`.

This reduces binary size by 24 KB. By itself, that's not a substantial
reduction. However, changes like this often reduce pressure on
instruction-caches, since it reduces the amount of code that is inlined
into hot code paths. Or more precisely, it removes cold code from hot
cache lines. It also removes all conditionals from Size::bits(),
which is called in many places.
2021-01-05 12:52:34 -08:00
..
rustc just max_level_info 2020-09-11 09:37:51 -07:00
rustc_apfloat Backport another LLVM commit to rustc_apfloat 2020-10-04 02:02:25 +02:00
rustc_arena stabilize min_const_generics 2020-12-26 18:24:10 +01:00
rustc_ast reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats) 2021-01-02 20:09:17 +01:00
rustc_ast_lowering first pass at default values for const generics 2021-01-01 10:55:10 +01:00
rustc_ast_passes reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats) 2021-01-02 20:09:17 +01:00
rustc_ast_pretty const_generics_defaults: don't use todo 2021-01-01 22:35:56 +01:00
rustc_attr Get rid of clean::Deprecation 2020-12-14 22:00:46 -05:00
rustc_builtin_macros reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats) 2021-01-02 20:09:17 +01:00
rustc_codegen_cranelift Merge commit 'dbee13661efa269cb4cd57bb4c6b99a19732b484' into sync_cg_clif-2020-12-27 2020-12-27 10:30:38 +01:00
rustc_codegen_llvm Rollup merge of #80323 - camelid:codegen-base-docs, r=nagisa 2020-12-31 22:20:43 +01:00
rustc_codegen_ssa use PlaceRef more consistently instead of loosely coupled local+projection 2021-01-03 14:14:55 +01:00
rustc_data_structures rustc_serialize: have read_raw_bytes take MaybeUninit<u8> slice 2021-01-01 22:49:16 -08:00
rustc_driver where possible, pass slices instead of &Vec or &String (clippy::ptr_arg) 2020-12-30 13:11:52 +01:00
rustc_error_codes Reinstate the error-code error over the feature gate error 2021-01-01 16:59:12 +00:00
rustc_errors Switch compiler/ to intra-doc links 2020-12-18 15:22:51 -05:00
rustc_expand Auto merge of #80459 - mark-i-m:or-pat-reg, r=petrochenkov 2020-12-31 14:52:26 +00:00
rustc_feature Allow references to interior mutable data behind a feature gate 2021-01-01 16:59:12 +00:00
rustc_fs_util Remove unused code from remaining compiler crates 2020-10-14 04:14:32 +02:00
rustc_graphviz Rust coverage before splitting instrument_coverage.rs 2020-11-05 18:24:12 -08:00
rustc_hir Rollup merge of #80538 - JulianKnodt:err_usize, r=lcnr 2021-01-05 09:52:37 +09:00
rustc_hir_pretty reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats) 2021-01-02 20:09:17 +01:00
rustc_incremental reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats) 2021-01-02 20:09:17 +01:00
rustc_index Switch compiler/ to intra-doc links 2020-12-18 15:22:51 -05:00
rustc_infer Rollup merge of #80637 - LingMan:filter, r=oli-obk 2021-01-05 09:52:42 +09:00
rustc_interface Remove compile-fail test suite 2020-12-29 23:39:56 +03:00
rustc_lexer Fix typo 2020-12-18 22:13:25 +09:00
rustc_lint Rollup merge of #80628 - matthiaskrgr:match_ref_pats, r=varkor 2021-01-03 17:09:11 +01:00
rustc_lint_defs improve unconditional_panic description 2021-01-01 15:00:27 +01:00
rustc_llvm llvm: update ffi bindings for split dwarf 2020-12-16 10:31:42 +00:00
rustc_macros rustc_serialize: specialize opaque encoding of some u8 sequences 2021-01-01 22:49:14 -08:00
rustc_metadata Rollup merge of #80643 - LingMan:unwrap, r=oli-obk 2021-01-05 09:52:44 +09:00
rustc_middle Rollup merge of #80538 - JulianKnodt:err_usize, r=lcnr 2021-01-05 09:52:37 +09:00
rustc_mir Auto merge of #80624 - RalfJung:place-ref, r=oli-obk 2021-01-04 20:56:34 +00:00
rustc_mir_build Add note to non-exhaustive match on reference to empty 2021-01-03 19:05:23 +01:00
rustc_parse make const_generics_defaults use the unstable syntax mechanism 2021-01-01 11:01:01 +01:00
rustc_parse_format /nightly/nightly-rustc 2020-09-23 21:51:56 +02:00
rustc_passes Add an error in case the doc alias is the same as the item it's aliasing 2021-01-04 15:05:36 +01:00
rustc_plugin_impl Store ForeignItem in a side table. 2020-11-26 21:29:27 +01:00
rustc_privacy Rollup merge of #80495 - jyn514:rename-empty, r=petrochenkov 2020-12-30 20:56:58 +00:00
rustc_query_system rustc_query_system: avoid race condition when using edge_count 2020-12-22 14:12:57 -08:00
rustc_resolve adjust const generics defaults FIXMEs to the new feature gate 2021-01-01 11:01:01 +01:00
rustc_save_analysis reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats) 2021-01-02 20:09:17 +01:00
rustc_serialize rustc_serialize: specialize opaque decoding of some u8 sequences 2021-01-01 22:49:16 -08:00
rustc_session Auto merge of #79883 - frewsxcv:frewsxcv-san, r=shepmaster 2021-01-02 06:58:59 +00:00
rustc_span Allow references to interior mutable data behind a feature gate 2021-01-01 16:59:12 +00:00
rustc_symbol_mangling Make BoundRegion have a kind of BoungRegionKind 2020-12-18 15:27:28 -05:00
rustc_target Split a func into cold/hot parts, reducing binary size 2021-01-05 12:52:34 -08:00
rustc_trait_selection reduce borrowing and (de)referencing around match patterns (clippy::match_ref_pats) 2021-01-02 20:09:17 +01:00
rustc_traits fix: small typo error in chalk/mod.rs 2020-12-27 03:22:23 +01:00
rustc_ty_utils Be cautious of calling upvar_tys before mir 2020-11-29 19:20:28 -05:00
rustc_type_ir Fix typo in DebruijnIndex documentation 2020-12-12 16:13:06 +01:00
rustc_typeck Rollup merge of #80538 - JulianKnodt:err_usize, r=lcnr 2021-01-05 09:52:37 +09:00