diff options
| author | Mohammad Omidvar <m_omidvart@sfu.ca> | 2024-07-15 23:43:52 +0000 |
|---|---|---|
| committer | Mohammad Omidvar <m_omidvart@sfu.ca> | 2024-07-15 23:43:52 +0000 |
| commit | 9b80250abb8ebf9f49f51593aee6a7308e0ac3b4 (patch) | |
| tree | 0875c8a4098d2ce0c111a22fcb29103f8fbe9a85 /compiler/rustc_monomorphize/src/lib.rs | |
| parent | 14430e66be02266ca59bdddd38d88a27f2e02917 (diff) | |
| download | rust-9b80250abb8ebf9f49f51593aee6a7308e0ac3b4.tar.gz rust-9b80250abb8ebf9f49f51593aee6a7308e0ac3b4.zip | |
Move compiler_builtin check to the use case
Diffstat (limited to 'compiler/rustc_monomorphize/src/lib.rs')
| -rw-r--r-- | compiler/rustc_monomorphize/src/lib.rs | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/compiler/rustc_monomorphize/src/lib.rs b/compiler/rustc_monomorphize/src/lib.rs index e5a63a98ff4..fc6e8e0d14f 100644 --- a/compiler/rustc_monomorphize/src/lib.rs +++ b/compiler/rustc_monomorphize/src/lib.rs @@ -8,12 +8,8 @@ use rustc_middle::bug; use rustc_middle::query::TyCtxtAt; use rustc_middle::traits; use rustc_middle::ty::adjustment::CustomCoerceUnsized; -use rustc_middle::ty::Instance; -use rustc_middle::ty::TyCtxt; use rustc_middle::ty::{self, Ty}; use rustc_middle::util::Providers; -use rustc_span::def_id::DefId; -use rustc_span::def_id::LOCAL_CRATE; use rustc_span::ErrorGuaranteed; mod collector; @@ -46,34 +42,6 @@ fn custom_coerce_unsize_info<'tcx>( } } -/// Returns whether a call from the current crate to the [`Instance`] would produce a call -/// from `compiler_builtins` to a symbol the linker must resolve. -/// -/// Such calls from `compiler_bultins` are effectively impossible for the linker to handle. Some -/// linkers will optimize such that dead calls to unresolved symbols are not an error, but this is -/// not guaranteed. So we used this function in codegen backends to ensure we do not generate any -/// unlinkable calls. -/// -/// Note that calls to LLVM intrinsics are uniquely okay because they won't make it to the linker. -pub fn is_call_from_compiler_builtins_to_upstream_monomorphization<'tcx>( - tcx: TyCtxt<'tcx>, - instance: Instance<'tcx>, -) -> bool { - fn is_llvm_intrinsic(tcx: TyCtxt<'_>, def_id: DefId) -> bool { - if let Some(name) = tcx.codegen_fn_attrs(def_id).link_name { - name.as_str().starts_with("llvm.") - } else { - false - } - } - - let def_id = instance.def_id(); - !def_id.is_local() - && tcx.is_compiler_builtins(LOCAL_CRATE) - && !is_llvm_intrinsic(tcx, def_id) - && !tcx.should_codegen_locally(instance) -} - pub fn provide(providers: &mut Providers) { partitioning::provide(providers); polymorphize::provide(providers); |
