rust/compiler/rustc_mir_transform/src
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
..
coroutine Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
coverage coverage: Remove hole-carving code from the main span refiner 2024-06-04 13:51:08 +10:00
inline Add simple async drop glue generation 2024-04-16 20:45:07 +03:00
shim Optimize async drop glue for some old types 2024-05-29 12:56:59 +03:00
abort_unwinding_calls.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
add_call_guards.rs remove redundant imports 2023-12-10 10:56:22 +08:00
add_moves_for_packed_drops.rs remove redundant imports 2023-12-10 10:56:22 +08:00
add_retag.rs add_retag: ensure box-to-raw-ptr casts are preserved for Miri 2024-03-18 10:32:25 +01:00
add_subtyping_projections.rs remove redundant imports 2023-12-10 10:56:22 +08:00
check_alignment.rs Make builtin_deref just return a Ty 2024-05-09 22:55:00 -04:00
check_const_item_mutation.rs Rename TyCtxt::emit_spanned_lint as TyCtxt::emit_node_span_lint. 2024-01-23 08:09:05 +11:00
check_packed_ref.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
cleanup_post_borrowck.rs Add a non-shallow fake borrow 2024-04-20 16:01:35 +02:00
copy_prop.rs Merge borrowed locals too. 2024-04-20 19:20:38 +00:00
coroutine.rs Opt-in diagnostics reporting to avoid doing extra work in the new solver 2024-06-03 09:27:52 -04:00
cost_checker.rs Make is_intrinsic query return the intrinsic name 2024-02-12 09:33:52 +00:00
cross_crate_inline.rs Remove all checks of IntrinsicDef::must_be_overridden except for the actual overrides in codegen 2024-03-19 09:19:58 +00:00
ctfe_limit.rs Fix clippy::needless_borrow in the compiler 2023-11-21 20:13:40 +01:00
dataflow_const_prop.rs ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
dead_store_elimination.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
deduce_param_attrs.rs consistency rename: language item -> lang item 2024-04-17 13:00:43 +02:00
deduplicate_blocks.rs Merge dead bb pruning and unreachable bb deduplication. 2024-01-07 15:12:10 +00:00
deref_separator.rs remove redundant imports 2023-12-10 10:56:22 +08:00
dest_prop.rs Revert "Auto merge of #115105 - cjgillot:dest-prop-default, r=oli-obk" 2024-05-31 00:22:40 +00:00
dump_mir.rs Show files produced by --emit foo in json artifact notifications 2024-04-19 08:31:41 -04:00
early_otherwise_branch.rs Don't change the otherwise of the switch 2024-04-08 19:20:07 +08:00
elaborate_box_derefs.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
elaborate_drops.rs Reformat mir! macro invocations to use braces. 2024-06-03 13:24:44 +10:00
errors.rs Remove LintDiagnostic::msg 2024-05-23 04:08:35 +02:00
ffi_unwind_calls.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
function_item_references.rs Rename Unsafe to Safety 2024-05-17 18:33:37 -03:00
gvn.rs Rollup merge of #126159 - RalfJung:scalarint-size-mismatch, r=oli-obk 2024-06-10 21:12:25 +02:00
inline.rs compiler: const_eval/transform/validate.rs -> mir_transform/validate.rs 2024-05-24 09:56:56 -07:00
instsimplify.rs Add Ty to mir::Const::Ty 2024-06-05 22:25:41 +01:00
jump_threading.rs interpret: get rid of 'mir lifetime everywhere 2024-05-27 08:25:57 +02:00
known_panics_lint.rs ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
large_enums.rs Simplify use crate::rustc_foo::bar occurrences. 2024-05-08 16:57:31 +10:00
lib.rs Delete ConstDebugInfo pass 2024-06-10 00:06:02 -07:00
lint.rs compiler: Lower fn call arg spans down to MIR 2024-01-15 19:07:11 +01:00
lower_intrinsics.rs Add an intrinsic for ptr::metadata 2024-05-28 09:28:51 -07:00
lower_slice_len.rs consistency rename: language item -> lang item 2024-04-17 13:00:43 +02:00
match_branches.rs ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
mentioned_items.rs Make builtin_deref just return a Ty 2024-05-09 22:55:00 -04:00
multiple_return_terminators.rs remove redundant imports 2023-12-10 10:56:22 +08:00
normalize_array_len.rs Add Ty to mir::Const::Ty 2024-06-05 22:25:41 +01:00
nrvo.rs Revert "Auto merge of #115105 - cjgillot:dest-prop-default, r=oli-obk" 2024-05-31 00:22:40 +00:00
pass_manager.rs Only split by-ref/by-move futures for async closures 2024-03-19 16:59:23 -04:00
prettify.rs remove redundant imports 2023-12-10 10:56:22 +08:00
promote_consts.rs ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
ref_prop.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
remove_noop_landing_pads.rs Avoid debug logging entire MIR body 2024-02-15 15:54:28 +01:00
remove_place_mention.rs remove redundant imports 2023-12-10 10:56:22 +08:00
remove_storage_markers.rs Move condition enabling the pass to is_enabled 2024-01-23 20:58:44 +01:00
remove_uninit_drops.rs remove redundant imports 2023-12-10 10:56:22 +08:00
remove_unneeded_drops.rs Merge dead bb pruning and unreachable bb deduplication. 2024-01-07 15:12:10 +00:00
remove_zsts.rs Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs 2024-02-06 02:22:58 +00:00
required_consts.rs properly fill a promoted's required_consts 2024-04-23 23:02:54 +02:00
reveal_all.rs remove redundant imports 2023-12-10 10:56:22 +08:00
shim.rs Uplift TypeRelation and Relate 2024-06-01 12:50:58 -04:00
simplify_branches.rs simplify_branches: add comment 2024-03-24 12:53:03 +01:00
simplify_comparison_integral.rs ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00
simplify.rs rustc_index: Add a ZERO constant to index types 2024-04-03 19:06:22 +03:00
single_use_consts.rs Try keeping a bitset for which locals need debuginfo updates 2024-06-10 00:06:02 -07:00
sroa.rs Stop SRoA'ing DynMetadata in MIR 2024-05-25 00:44:47 -07:00
ssa.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
unreachable_enum_branching.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
unreachable_prop.rs Remove extern crate rustc_middle from rustc_mir_transform. 2024-05-13 08:20:18 +10:00
validate.rs ScalarInt: size mismatches are a bug, do not delay the panic 2024-06-10 13:43:16 +02:00