rust/compiler/rustc_mir_transform/src
Stuart Cook f90cc353b8
Rollup merge of #145932 - JamieCunliffe:target-feature-inlining, r=jackh726
Allow `inline(always)` with a target feature behind a unstable feature `target_feature_inline_always`.

Rather than adding the inline always attribute to the function definition, we add it to the callsite. We can then check that the target features match and that the call would be safe to inline. If the function isn't inlined due to a mismatch, we emit a warning informing the user that the function can't be inlined due to the target feature mismatch.

See tracking issue rust-lang/rust#145574
2025-09-04 10:01:55 +10:00
..
coroutine Introduce MirDumper and MirWriter. 2025-09-01 09:19:03 +10:00
coverage coverage: Build an "expansion tree" and use it to unexpand raw spans 2025-08-24 20:29:34 +10:00
inline Be a bit more careful around exotic cycles in in the inliner 2025-07-18 16:35:55 +00:00
shim mir: Use the new method for BasicBlockData 2025-06-29 20:39:13 +08:00
abort_unwinding_calls.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
add_call_guards.rs mir: Use the new method for BasicBlockData 2025-06-29 20:39:13 +08:00
add_moves_for_packed_drops.rs mir: Use the new method for BasicBlockData 2025-06-29 20:39:13 +08:00
add_retag.rs Remove Retag for Unique 2025-07-21 08:08:41 +00:00
add_subtyping_projections.rs Remove some unnecessary erases 2025-05-08 16:20:57 +00:00
check_alignment.rs mir: Add a new method to statement 2025-06-29 20:13:36 +08:00
check_call_recursion.rs Cleanup assoc parent utils 2025-08-13 09:33:09 -05:00
check_const_item_mutation.rs Only look at trait impls in the current crate when looking for Drop impls 2025-04-02 07:30:11 +00:00
check_enums.rs Fix ICE when validating transmuting ZST to inhabited enum 2025-08-23 19:25:58 +02:00
check_inline.rs coverage: Remove all unstable support for MC/DC instrumentation 2025-08-06 22:38:52 +10:00
check_inline_always_target_features.rs inline at the callsite & warn when target features mismatch 2025-08-27 14:45:01 +01:00
check_null.rs mir: Add a new method to statement 2025-06-29 20:13:36 +08:00
check_packed_ref.rs Cleanup assoc parent utils 2025-08-13 09:33:09 -05:00
check_pointers.rs mir: Use the new method for BasicBlockData 2025-06-29 20:39:13 +08:00
cleanup_post_borrowck.rs Visit place in BackwardIncompatibleDropHint statement 2025-04-13 22:01:54 +00:00
copy_prop.rs Leave from CopyProp early when there are no replacements 2025-06-22 14:30:23 +02:00
coroutine.rs Introduce MirDumper and MirWriter. 2025-09-01 09:19:03 +10:00
cost_checker.rs Allow more top-down inlining for single-BB callees 2025-03-12 22:39:43 -07:00
cross_crate_inline.rs add a flag to codegen fn attrs for foreign items 2025-08-26 13:05:51 +02:00
ctfe_limit.rs detect infinite recursion with tail calls in ctfe 2025-07-31 23:59:55 +02:00
dataflow_const_prop.rs Add InterpCx::layout_of with tracing, shadowing LayoutOf 2025-06-27 11:49:22 +02:00
dead_store_elimination.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
deduce_param_attrs.rs Remove obsolete comment from DeduceReadOnly 2025-03-04 12:26:01 +01:00
deref_separator.rs Move MirPatch from rustc_middle to rustc_mir_transform. 2025-02-14 16:15:57 +11:00
dest_prop.rs Introduce MirDumper and MirWriter. 2025-09-01 09:19:03 +10:00
dump_mir.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
early_otherwise_branch.rs mir-opt: Do not create storage marks for temporary locals 2025-05-24 15:36:06 +08:00
elaborate_box_derefs.rs Move MirPatch from rustc_middle to rustc_mir_transform. 2025-02-14 16:15:57 +11:00
elaborate_drop.rs Rollup merge of #132748 - lolbinarycat:rustdoc-intra-doc-link-warn-more-54191, r=GuillaumeGomez 2025-08-02 11:24:20 +02:00
elaborate_drops.rs debug impls for drop elaborators 2025-07-18 17:31:48 -07:00
errors.rs inline at the callsite & warn when target features mismatch 2025-08-27 14:45:01 +01:00
ffi_unwind_calls.rs compiler: use is_rustic_abi in mir_transform 2025-03-04 18:21:56 -08:00
function_item_references.rs Rename ClearCrossCrate::assert_crate_local. 2025-02-21 07:12:13 +11:00
gvn.rs Correct comments. 2025-08-21 23:59:20 +00:00
impossible_predicates.rs Keep elaborating predicates. 2025-07-22 01:51:11 +00:00
inline.rs remove rustc_attr_data_structures 2025-07-31 14:19:27 +02:00
instsimplify.rs Simplify align_of_val::<[T]>(…)align_of::<T>() 2025-07-28 23:19:06 -07:00
jump_threading.rs Add InterpCx::layout_of with tracing, shadowing LayoutOf 2025-06-27 11:49:22 +02:00
known_panics_lint.rs AsyncDrop implementation using shim codegen of async_drop_in_place::{closure}, scoped async drop added. 2025-04-28 16:23:13 +07:00
large_enums.rs extend allocbytes with associated type 2025-05-26 00:15:16 +02:00
lib.rs Rollup merge of #145932 - JamieCunliffe:target-feature-inlining, r=jackh726 2025-09-04 10:01:55 +10:00
lint.rs rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
lint_tail_expr_drop_order.rs Introduce MirDumper and MirWriter. 2025-09-01 09:19:03 +10:00
lower_intrinsics.rs mir: Add a new method to statement 2025-06-29 20:13:36 +08:00
lower_slice_len.rs mir: Add a new method to statement 2025-06-29 20:13:36 +08:00
match_branches.rs mir-opt: Do not transform non-int type in match_branches 2025-05-26 18:15:54 +08:00
mentioned_items.rs Remove support for dyn* 2025-07-01 19:00:21 +00:00
multiple_return_terminators.rs In rustc_mir_tranform, iterate over index newtypes instead of ints 2025-04-12 11:53:07 +00:00
nrvo.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
pass_manager.rs Introduce MirDumper and MirWriter. 2025-09-01 09:19:03 +10:00
patch.rs mir: Use the new method for BasicBlockData 2025-06-29 20:39:13 +08:00
post_analysis_normalize.rs do not emit OpaqueCast projections with -Znext-solver 2025-04-17 12:15:04 +02:00
post_drop_elaboration.rs Make check_live_drops into a MirLint. 2024-09-10 09:11:17 +10:00
prettify.rs Use a closure instead of three chained iterators 2025-04-29 14:58:21 +00:00
promote_consts.rs use let chains in mir, resolve, target 2025-07-28 06:10:36 +05:00
ref_prop.rs Convert moves of references to copies in RefProp 2025-08-11 23:10:56 -04:00
remove_noop_landing_pads.rs use let chains in mir, resolve, target 2025-07-28 06:10:36 +05:00
remove_place_mention.rs Do not optimize out SwitchInt before borrowck, or if Zmir-preserve-ub 2025-04-08 21:05:20 +00:00
remove_storage_markers.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
remove_uninit_drops.rs Apply effects to otherwise edge in dataflow analysis 2025-07-08 18:15:05 -05:00
remove_unneeded_drops.rs Let RemoveUnneededDrops also remove drop_in_place 2025-08-04 23:54:39 -07:00
remove_zsts.rs AsyncDrop implementation using shim codegen of async_drop_in_place::{closure}, scoped async drop added. 2025-04-28 16:23:13 +07:00
required_consts.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
sanity_check.rs Move MirPass to rustc_mir_transform. 2024-09-03 16:03:46 +10:00
shim.rs Introduce MirDumper and MirWriter. 2025-09-01 09:19:03 +10:00
simplify.rs simplifycfg: Mark as changed when start is modified in collapse goto chain 2025-08-06 20:26:10 +08:00
simplify_branches.rs Fix binding mode problems 2025-02-22 00:13:19 +00:00
simplify_comparison_integral.rs mir: Add a new method to statement 2025-06-29 20:13:36 +08:00
single_use_consts.rs Inline and replace Statement::replace_nop. 2025-02-18 13:43:43 +11:00
sroa.rs Re-block SRoA on SIMD types 2025-07-29 20:41:34 -07:00
ssa.rs Propagate from borrowed locals in CopyProp 2025-07-10 09:36:20 +02:00
strip_debuginfo.rs Disable non-required MIR opts with optimize(none) 2025-01-23 17:40:41 +00:00
unreachable_enum_branching.rs Move MirPatch from rustc_middle to rustc_mir_transform. 2025-02-14 16:15:57 +11:00
unreachable_prop.rs Rename tests/codegen into tests/codegen-llvm 2025-07-22 14:28:48 +02:00
validate.rs remove rustc_attr_data_structures 2025-07-31 14:19:27 +02:00