diff options
| author | Josh Stone <jistone@redhat.com> | 2021-08-03 15:09:57 -0700 |
|---|---|---|
| committer | Josh Stone <jistone@redhat.com> | 2021-08-05 10:58:55 -0700 |
| commit | 183d79cc09ad81bc2dc7b47cb8880046201e52a2 (patch) | |
| tree | 589011598c1d626b6d6f59b9cb32580cfbfd7a1b /compiler/rustc_codegen_ssa/src/traits | |
| parent | 61a941b8badbce727085c505068d72fa3e737f5b (diff) | |
| download | rust-183d79cc09ad81bc2dc7b47cb8880046201e52a2.tar.gz rust-183d79cc09ad81bc2dc7b47cb8880046201e52a2.zip | |
Prepare call/invoke for opaque pointers
Rather than relying on `getPointerElementType()` from LLVM function pointers, we now pass the function type explicitly when building `call` or `invoke` instructions.
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/traits')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/traits/builder.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/traits/type_.rs | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_ssa/src/traits/builder.rs b/compiler/rustc_codegen_ssa/src/traits/builder.rs index f2c52314853..afb8ee3c40d 100644 --- a/compiler/rustc_codegen_ssa/src/traits/builder.rs +++ b/compiler/rustc_codegen_ssa/src/traits/builder.rs @@ -72,6 +72,7 @@ pub trait BuilderMethods<'a, 'tcx>: ); fn invoke( &mut self, + llty: Self::Type, llfn: Self::Value, args: &[Self::Value], then: Self::BasicBlock, @@ -303,6 +304,7 @@ pub trait BuilderMethods<'a, 'tcx>: fn call( &mut self, + llty: Self::Type, llfn: Self::Value, args: &[Self::Value], funclet: Option<&Self::Funclet>, diff --git a/compiler/rustc_codegen_ssa/src/traits/type_.rs b/compiler/rustc_codegen_ssa/src/traits/type_.rs index 634a20bda9b..b94fb1e10db 100644 --- a/compiler/rustc_codegen_ssa/src/traits/type_.rs +++ b/compiler/rustc_codegen_ssa/src/traits/type_.rs @@ -102,6 +102,7 @@ impl<T> DerivedTypeMethods<'tcx> for T where Self: BaseTypeMethods<'tcx> + MiscM pub trait LayoutTypeMethods<'tcx>: Backend<'tcx> { fn backend_type(&self, layout: TyAndLayout<'tcx>) -> Self::Type; fn cast_backend_type(&self, ty: &CastTarget) -> Self::Type; + fn fn_decl_backend_type(&self, fn_abi: &FnAbi<'tcx, Ty<'tcx>>) -> Self::Type; fn fn_ptr_backend_type(&self, fn_abi: &FnAbi<'tcx, Ty<'tcx>>) -> Self::Type; fn reg_backend_type(&self, ty: &Reg) -> Self::Type; fn immediate_backend_type(&self, layout: TyAndLayout<'tcx>) -> Self::Type; |
