diff options
author | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2023-02-03 09:04:12 +0100 |
---|---|---|
committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2023-03-29 08:55:21 +0200 |
commit | 0d89c6a2d44b78d052280d7faecfcb79e6f3d4a1 (patch) | |
tree | f12f0f686444926ccc3cd203daa6d9ad087687d3 /compiler/rustc_ty_utils | |
parent | 51c93553d4344472f2e291b3a4f110f884062a37 (diff) | |
download | rust-0d89c6a2d44b78d052280d7faecfcb79e6f3d4a1.tar.gz |
Support TLS access into dylibs on Windows
Diffstat (limited to 'compiler/rustc_ty_utils')
-rw-r--r-- | compiler/rustc_ty_utils/src/abi.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler/rustc_ty_utils/src/abi.rs b/compiler/rustc_ty_utils/src/abi.rs index ee5a7909ba3..271284b2d81 100644 --- a/compiler/rustc_ty_utils/src/abi.rs +++ b/compiler/rustc_ty_utils/src/abi.rs @@ -3,7 +3,7 @@ use rustc_hir::lang_items::LangItem; use rustc_middle::ty::layout::{ fn_can_unwind, FnAbiError, HasParamEnv, HasTyCtxt, LayoutCx, LayoutOf, TyAndLayout, }; -use rustc_middle::ty::{self, Ty, TyCtxt}; +use rustc_middle::ty::{self, InstanceDef, Ty, TyCtxt}; use rustc_session::config::OptLevel; use rustc_span::def_id::DefId; use rustc_target::abi::call::{ @@ -29,6 +29,16 @@ fn fn_sig_for_fn_abi<'tcx>( instance: ty::Instance<'tcx>, param_env: ty::ParamEnv<'tcx>, ) -> ty::PolyFnSig<'tcx> { + if let InstanceDef::ThreadLocalShim(..) = instance.def { + return ty::Binder::dummy(tcx.mk_fn_sig( + [], + tcx.thread_local_ptr_ty(instance.def_id()), + false, + hir::Unsafety::Normal, + rustc_target::spec::abi::Abi::Unadjusted, + )); + } + let ty = instance.ty(tcx, param_env); match *ty.kind() { ty::FnDef(..) => { |