rust/compiler
Matthias Krüger 5afb4c2b21
Rollup merge of #127068 - compiler-errors:stall-drop, r=BoxyUwU
Stall computing instance for drop shim until it has no unsubstituted const params

Do not inline the drop shim for types that still have unsubstituted const params.

## Why?

#127030 ICEs because it tries to inline the drop shim for a type with an unsubstituted const param. In order to generate this shim, this requires calling the drop shim builder, which invokes the trait solver to compute whether constituent types need drop (since we compute if a type is copy to disqualify any `Drop` behavior):

9c3bc805dd/compiler/rustc_mir_dataflow/src/elaborate_drops.rs (L378)

However, since we don't keep the param-env of the instance we resolved the item for, we use the wrong param-env:
9c3bc805dd/compiler/rustc_mir_transform/src/shim.rs (L278)
(which is the param-env of `std::ptr::drop_in_place`)

This param-env is notably missing `ConstParamHasTy` predicates, and since we removed the type from consts in https://github.com/rust-lang/rust/pull/125958, we literally cannot prove these predicates in this (relatively) empty param-env. This currently happens in places like the MIR inliner, but may happen elsewhere such as in lints that resolve terminators.

## What?

We force the inliner to not consider calls for `drop_in_place` for types that have unsubstituted const params.

## So what?

This may negatively affect MIR inlining, but I doubt this matters in practice, and fixes a beta regression, so let's fix it. I will look into approaches for fixing this in a more maintainable way, perhaps delaying the creation of drop shim bodies until codegen (like how intrinsics work).
2024-06-28 22:04:18 +02:00
..
rustc
rustc_abi Auto merge of #126326 - eggyal:ununsafe-StableOrd, r=michaelwoerister 2024-06-25 15:51:35 +00:00
rustc_arena Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_ast Tighten spans for async blocks 2024-06-27 15:19:08 -04:00
rustc_ast_ir Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_ast_lowering Tighten spans for async blocks 2024-06-27 15:19:08 -04:00
rustc_ast_passes Rollup merge of #124091 - jieyouxu:ast-validation-top-level-docs, r=wesleywiser 2024-06-28 22:04:15 +02:00
rustc_ast_pretty Tighten spans for async blocks 2024-06-27 15:19:08 -04:00
rustc_attr Use a dedicated type instead of a reference for the diagnostic context 2024-06-18 15:42:11 +00:00
rustc_baked_icu_data Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_borrowck Rollup merge of #126884 - estebank:issue-125634, r=Nadrieril 2024-06-25 18:03:00 +02:00
rustc_builtin_macros Tighten spans for async blocks 2024-06-27 15:19:08 -04:00
rustc_codegen_cranelift cg_clif: Define build opts from FramePointer 2024-06-23 00:36:33 -07:00
rustc_codegen_gcc Add blank lines after module-level //! comments. 2024-06-20 09:23:20 +10:00
rustc_codegen_llvm Support #[patchable_function_entries] 2024-06-25 18:23:41 +02:00
rustc_codegen_ssa Rollup merge of #124741 - nebulark:patchable-function-entries-pr, r=estebank,workingjubilee 2024-06-28 08:34:07 +02:00
rustc_const_eval Enable const casting for f16 and f128 2024-06-27 04:36:29 -05:00
rustc_data_structures Auto merge of #126907 - glaubitz:sparc-fixes, r=nagisa 2024-06-27 05:44:47 +00:00
rustc_driver Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_driver_impl Auto merge of #126834 - bjorn3:interface_refactor, r=michaelwoerister 2024-06-25 09:35:53 +00:00
rustc_error_codes Auto merge of #126319 - workingjubilee:rollup-lendnud, r=workingjubilee 2024-06-12 11:10:50 +00:00
rustc_error_messages Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_errors Clarify comment on changing to warn future breakage items 2024-06-26 17:00:46 +02:00
rustc_expand Rollup merge of #126928 - nnethercote:124141-pre, r=oli-obk 2024-06-27 02:06:19 -04:00
rustc_feature Rollup merge of #124741 - nebulark:patchable-function-entries-pr, r=estebank,workingjubilee 2024-06-28 08:34:07 +02:00
rustc_fluent_macro Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_fs_util Remove useless tidy-alphabetical markers. 2024-06-20 09:23:20 +10:00
rustc_graphviz Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_hir Auto merge of #126326 - eggyal:ununsafe-StableOrd, r=michaelwoerister 2024-06-25 15:51:35 +00:00
rustc_hir_analysis Rollup merge of #126968 - lqd:issue-126670, r=compiler-errors 2024-06-26 07:50:20 +02:00
rustc_hir_pretty Rename the 2 unambiguous precedence levels to PREC_UNAMBIGUOUS 2024-06-23 18:31:47 -07:00
rustc_hir_typeck Rollup merge of #126925 - surechen:fix_125631, r=compiler-errors 2024-06-26 07:50:18 +02:00
rustc_incremental Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_index Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_index_macros rustc_span: Minor improvements 2024-06-16 14:08:25 +03:00
rustc_infer Rollup merge of #126915 - SparkyPotato:fix-126903, r=compiler-errors 2024-06-25 18:03:01 +02:00
rustc_interface Updated diagnostic messages 2024-06-27 22:24:36 +02:00
rustc_lexer Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_lint Rollup merge of #127015 - Urgau:non_local_def-tmp-allow, r=lqd 2024-06-28 22:04:16 +02:00
rustc_lint_defs sudo CI=green && Review changes <3 2024-06-25 18:06:22 +02:00
rustc_llvm Auto merge of #126907 - glaubitz:sparc-fixes, r=nagisa 2024-06-27 05:44:47 +00:00
rustc_log Bump tracing-tree and allow rendering lines again 2024-06-12 10:11:41 +00:00
rustc_macros Remove redundant argument from subdiagnostic method 2024-06-18 15:42:11 +00:00
rustc_metadata Fix remaining cases 2024-06-21 19:00:18 -04:00
rustc_middle Rollup merge of #124741 - nebulark:patchable-function-entries-pr, r=estebank,workingjubilee 2024-06-28 08:34:07 +02:00
rustc_mir_build Rollup merge of #126932 - Zalathar:flat-pat, r=Nadrieril 2024-06-25 21:33:44 +02:00
rustc_mir_dataflow Save 2 pointers in TerminatorKind (96 → 80 bytes) 2024-06-21 18:02:05 -07:00
rustc_mir_transform Don't inline drop shims with unsubstituted generic consts in MIR inliner 2024-06-28 10:18:20 -04:00
rustc_monomorphize Use a dedicated type instead of a reference for the diagnostic context 2024-06-18 15:42:11 +00:00
rustc_next_trait_solver Rename tcx to cx 2024-06-25 17:36:52 -04:00
rustc_parse Tighten spans for async blocks 2024-06-27 15:19:08 -04:00
rustc_parse_format Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_passes Rollup merge of #126721 - Zalathar:nested-cov-attr, r=oli-obk 2024-06-27 02:06:18 -04:00
rustc_pattern_analysis Replace f16 and f128 pattern matching stubs with real implementations 2024-06-23 04:28:42 -05:00
rustc_privacy Do not ICE in privacy when type inference fails. 2024-06-17 10:09:27 +00:00
rustc_query_impl Allow tracing through item_bounds query invocations on opaques 2024-06-19 08:47:55 +00:00
rustc_query_system Auto merge of #126326 - eggyal:ununsafe-StableOrd, r=michaelwoerister 2024-06-25 15:51:35 +00:00
rustc_resolve Tighten spans for async blocks 2024-06-27 15:19:08 -04:00
rustc_sanitizers Split out IntoIterator and non-Iterator constructors for AliasTy/AliasTerm/TraitRef/projection 2024-06-24 11:28:21 -04:00
rustc_serialize Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_session Rollup merge of #124741 - nebulark:patchable-function-entries-pr, r=estebank,workingjubilee 2024-06-28 08:34:07 +02:00
rustc_smir Add method to get all attributes on a definition 2024-06-28 13:24:41 +08:00
rustc_span Rollup merge of #124741 - nebulark:patchable-function-entries-pr, r=estebank,workingjubilee 2024-06-28 08:34:07 +02:00
rustc_symbol_mangling Use a dedicated type instead of a reference for the diagnostic context 2024-06-18 15:42:11 +00:00
rustc_target rustc_target: Build sparc_unknown_linux_gnu with -mcpu=v9 and -m32 2024-06-24 17:58:21 +02:00
rustc_trait_selection Auto merge of #125610 - oli-obk:define_opaque_types14, r=compiler-errors 2024-06-25 05:09:30 +00:00
rustc_traits Use tidy to sort crate attributes for all compiler crates. 2024-06-12 15:49:10 +10:00
rustc_transmute safe transmute: support non-ZST, variantful, uninhabited enums 2024-06-14 21:11:08 +00:00
rustc_ty_utils Rename InstanceDef -> InstanceKind 2024-06-16 21:35:21 -04:00
rustc_type_ir Auto merge of #126813 - compiler-errors:SliceLike, r=lcnr 2024-06-25 00:33:49 +00:00
rustc_type_ir_macros
stable_mir Add method to get all attributes on a definition 2024-06-28 13:24:41 +08:00