diff options
| author | León Orell Valerian Liehr <me@fmease.dev> | 2025-02-26 04:15:05 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-26 04:15:05 +0100 |
| commit | 51085b21ce50996a30c3c19c0b8b7be48e44e2ca (patch) | |
| tree | ebd2d266507ab553f9fdaaa4c1522ee62e92ac76 /compiler/rustc_monomorphize/src | |
| parent | f1923142c3b969a1b3e1ee6173d0407b186e8627 (diff) | |
| parent | 5afa6a111bcf8552b8de15d1aec060580add640f (diff) | |
| download | rust-51085b21ce50996a30c3c19c0b8b7be48e44e2ca.tar.gz rust-51085b21ce50996a30c3c19c0b8b7be48e44e2ca.zip | |
Rollup merge of #137601 - davidtwco:deduplicate-type-has-metadata, r=fmease,bjorn3
ssa/mono: deduplicate `type_has_metadata` The implementation of the `type_has_metadata` function is duplicated in `rustc_codegen_ssa` and `rustc_monomorphize`, so move this to `rustc_middle`.
Diffstat (limited to 'compiler/rustc_monomorphize/src')
| -rw-r--r-- | compiler/rustc_monomorphize/src/collector.rs | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/compiler/rustc_monomorphize/src/collector.rs b/compiler/rustc_monomorphize/src/collector.rs index a75c20c1972..08df0dedc6b 100644 --- a/compiler/rustc_monomorphize/src/collector.rs +++ b/compiler/rustc_monomorphize/src/collector.rs @@ -1043,18 +1043,7 @@ fn find_vtable_types_for_unsizing<'tcx>( ) -> (Ty<'tcx>, Ty<'tcx>) { let ptr_vtable = |inner_source: Ty<'tcx>, inner_target: Ty<'tcx>| { let typing_env = ty::TypingEnv::fully_monomorphized(); - let type_has_metadata = |ty: Ty<'tcx>| -> bool { - if ty.is_sized(tcx.tcx, typing_env) { - return false; - } - let tail = tcx.struct_tail_for_codegen(ty, typing_env); - match tail.kind() { - ty::Foreign(..) => false, - ty::Str | ty::Slice(..) | ty::Dynamic(..) => true, - _ => bug!("unexpected unsized tail: {:?}", tail), - } - }; - if type_has_metadata(inner_source) { + if tcx.type_has_metadata(inner_source, typing_env) { (inner_source, inner_target) } else { tcx.struct_lockstep_tails_for_codegen(inner_source, inner_target, typing_env) |
