rust/compiler
bors fa1681c9f6 Auto merge of #125910 - scottmcm:single-use-consts, r=saethlin
Add `SingleUseConsts` mir-opt pass

The goal here is to make a pass that can be run in debug builds to simplify the common case of constants that are used just once -- that doesn't need SSA handling and avoids any potential downside of multi-use constants.  In particular, to simplify the `if T::IS_ZST` pattern that's common in the standard library.

By also handling the case of constants that are *never* actually used this fully replaces the `ConstDebugInfo` pass, since it has all the information needed to do that naturally from the traversal it needs to do anyway.

This is roughly a wash on instructions on its own (a couple regressions, a few improvements https://github.com/rust-lang/rust/pull/125910#issuecomment-2144963361), with a bunch of size improvements.  So I'd like to land it as its own PR, then do follow-ups to take more advantage of it (in the inliner, cg_ssa, etc).

r? `@saethlin`
2024-06-11 02:03:12 +00:00
..
rustc Change SIGPIPE ui from #[unix_sigpipe = "..."] to -Zon-broken-pipe=... 2024-05-02 19:48:29 +02:00
rustc_abi don't inhibit random field reordering on repr(packed(1)) 2024-05-21 19:22:04 +02:00
rustc_arena
rustc_ast Rollup merge of #124214 - carbotaniuman:parse_unsafe_attrs, r=michaelwoerister 2024-06-07 20:14:28 +02:00
rustc_ast_ir Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
rustc_ast_lowering Rollup merge of #124214 - carbotaniuman:parse_unsafe_attrs, r=michaelwoerister 2024-06-07 20:14:28 +02:00
rustc_ast_passes Parse unsafe attributes 2024-06-06 20:26:27 -05:00
rustc_ast_pretty Rollup merge of #124214 - carbotaniuman:parse_unsafe_attrs, r=michaelwoerister 2024-06-07 20:14:28 +02:00
rustc_attr Rename buffer_lint_with_diagnostic to buffer_lint 2024-05-21 20:16:39 +00:00
rustc_baked_icu_data Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
rustc_borrowck Uplift TypeRelation and Relate 2024-06-06 07:50:19 -04:00
rustc_builtin_macros Handle safe case 2024-06-06 20:54:51 -05:00
rustc_codegen_cranelift ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
rustc_codegen_gcc ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
rustc_codegen_llvm Rollup merge of #126159 - RalfJung:scalarint-size-mismatch, r=oli-obk 2024-06-10 21:12:25 +02:00
rustc_codegen_ssa ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
rustc_const_eval Rollup merge of #126184 - RalfJung:interpret-simd-nonpow2, r=oli-obk 2024-06-10 21:12:25 +02:00
rustc_data_structures Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
rustc_driver
rustc_driver_impl Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
rustc_error_codes Rollup merge of #124746 - OliverKillane:E0582-explain-assoc-types-improvement, r=pnkfelix 2024-06-05 18:21:08 +02:00
rustc_error_messages Auto merge of #125410 - fmease:adj-lint-diag-api, r=nnethercote 2024-05-27 08:44:12 +00:00
rustc_errors Auto merge of #125410 - fmease:adj-lint-diag-api, r=nnethercote 2024-05-27 08:44:12 +00:00
rustc_expand rustc_span: Optimize syntax context updates in spans 2024-06-10 02:20:16 +03:00
rustc_feature offset_of: allow (unstably) taking the offset of slice tail fields 2024-06-08 18:17:55 +02:00
rustc_fluent_macro
rustc_fs_util Stabilize std::path::absolute 2024-04-24 14:35:02 +00:00
rustc_graphviz
rustc_hir Auto merge of #125918 - oli-obk:const_block_ice, r=compiler-errors 2024-06-07 09:08:59 +00:00
rustc_hir_analysis Auto merge of #125918 - oli-obk:const_block_ice, r=compiler-errors 2024-06-07 09:08:59 +00:00
rustc_hir_pretty Revert "Create const block DefIds in typeck instead of ast lowering" 2024-06-07 08:33:58 +00:00
rustc_hir_typeck Rollup merge of #126159 - RalfJung:scalarint-size-mismatch, r=oli-obk 2024-06-10 21:12:25 +02:00
rustc_incremental Run rustfmt on files that need it. 2024-05-24 15:17:21 +10:00
rustc_index Simplify static_assert_sizes. 2024-04-18 15:36:25 +10:00
rustc_index_macros Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
rustc_infer Add explanatory note to async block type mismatch error 2024-06-10 17:14:49 +05:30
rustc_interface Revert "Rollup merge of #124976 - petrochenkov:usedcrates, r=oli-obk" 2024-06-06 10:06:28 +00:00
rustc_lexer Improved the compiler code with clippy 2024-04-24 09:41:44 +02:00
rustc_lint Rollup merge of #126040 - Urgau:unreachable_pub-fields-less, r=petrochenkov 2024-06-06 21:10:10 -07:00
rustc_lint_defs Auto merge of #124482 - spastorino:unsafe-extern-blocks, r=oli-obk 2024-06-06 08:14:58 +00:00
rustc_llvm thinlto: only build summary file if needed 2024-05-23 14:58:30 -04:00
rustc_log remove tracing tree indent lines 2024-05-30 15:26:48 +02:00
rustc_macros Make the panic info more useful 2024-06-06 09:47:10 +00:00
rustc_metadata Rollup merge of #126099 - Nilstrieb:crate-loader-cleanups, r=jieyouxu 2024-06-06 21:10:10 -07:00
rustc_middle Rollup merge of #126159 - RalfJung:scalarint-size-mismatch, r=oli-obk 2024-06-10 21:12:25 +02:00
rustc_mir_build Rollup merge of #126159 - RalfJung:scalarint-size-mismatch, r=oli-obk 2024-06-10 21:12:25 +02:00
rustc_mir_dataflow Remove #[macro_use] extern crate tracing from rustc_mir_dataflow. 2024-05-23 18:02:40 +10:00
rustc_mir_transform Auto merge of #125910 - scottmcm:single-use-consts, r=saethlin 2024-06-11 02:03:12 +00:00
rustc_monomorphize Auto merge of #125928 - michaelwoerister:fix-cgu-hashstable, r=oli-obk 2024-06-07 04:02:59 +00:00
rustc_next_trait_solver Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
rustc_parse Rollup merge of #126052 - nnethercote:rustc_parse-more-cleanups, r=spastorino 2024-06-07 20:14:30 +02:00
rustc_parse_format Apply x clippy --fix and x fmt 2024-05-30 09:51:27 +08:00
rustc_passes Rollup merge of #125572 - mu001999-contrib:dead/enhance, r=pnkfelix 2024-06-07 20:14:28 +02:00
rustc_pattern_analysis ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
rustc_privacy Make body_owned_by return the body directly. 2024-05-29 10:04:08 +00:00
rustc_query_impl Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00
rustc_query_system Make the panic info more useful 2024-06-06 09:47:10 +00:00
rustc_resolve mark binding undetermined if target name exist and not obtained 2024-06-07 21:23:56 +08:00
rustc_sanitizers Misc fixes (pattern type lowering, cfi, pretty printing) 2024-06-05 22:25:42 +01:00
rustc_serialize Apply x clippy --fix and x fmt 2024-05-30 09:51:27 +08:00
rustc_session Improve naming and path operations in crate loader 2024-06-06 21:53:29 +02:00
rustc_smir Revert "Rollup merge of #124976 - petrochenkov:usedcrates, r=oli-obk" 2024-06-06 10:06:28 +00:00
rustc_span rustc_span: Optimize syntax context updates in spans 2024-06-10 02:20:16 +03:00
rustc_symbol_mangling Add Ty to ConstKind::Value 2024-06-05 22:25:41 +01:00
rustc_target offset_of: allow (unstably) taking the offset of slice tail fields 2024-06-08 18:17:55 +02:00
rustc_trait_selection Rollup merge of #126089 - wutchzone:option_take_if, r=scottmcm 2024-06-07 20:14:31 +02:00
rustc_traits Align Term methods with GenericArg methods 2024-06-03 20:36:27 -04:00
rustc_transmute ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
rustc_ty_utils ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
rustc_type_ir Uplift TypeRelation and Relate 2024-06-06 07:50:19 -04:00
rustc_type_ir_macros Uplift TraitPredicate 2024-05-11 18:20:00 -04:00
stable_mir Remove some unused crate dependencies. 2024-06-10 19:55:49 +10:00