]>
Commit | Line | Data |
---|---|---|
a1dfa0c6 | 1 | use super::BackendTypes; |
9fa01778 | 2 | use crate::mir::operand::OperandRef; |
ba9703b0 | 3 | use rustc_middle::ty::{self, Ty}; |
dfeec247 | 4 | use rustc_span::Span; |
60c5eb7d | 5 | use rustc_target::abi::call::FnAbi; |
a1dfa0c6 XL |
6 | |
7 | pub trait IntrinsicCallMethods<'tcx>: BackendTypes { | |
1b1a35ee XL |
8 | /// Remember to add all intrinsics here, in `compiler/rustc_typeck/src/check/mod.rs`, |
9 | /// and in `library/core/src/intrinsics.rs`; if you need access to any LLVM intrinsics, | |
10 | /// add them to `compiler/rustc_codegen_llvm/src/context.rs`. | |
a1dfa0c6 XL |
11 | fn codegen_intrinsic_call( |
12 | &mut self, | |
e1599b0c | 13 | instance: ty::Instance<'tcx>, |
60c5eb7d | 14 | fn_abi: &FnAbi<'tcx, Ty<'tcx>>, |
a1dfa0c6 XL |
15 | args: &[OperandRef<'tcx, Self::Value>], |
16 | llresult: Self::Value, | |
17 | span: Span, | |
18 | ); | |
19 | ||
20 | fn abort(&mut self); | |
21 | fn assume(&mut self, val: Self::Value); | |
22 | fn expect(&mut self, cond: Self::Value, expected: bool) -> Self::Value; | |
3c0e092e XL |
23 | /// Trait method used to test whether a given pointer is associated with a type identifier. |
24 | fn type_test(&mut self, pointer: Self::Value, typeid: Self::Value) -> Self::Value; | |
dc9dc135 | 25 | /// Trait method used to inject `va_start` on the "spoofed" `VaListImpl` in |
532ac7d7 XL |
26 | /// Rust defined C-variadic functions. |
27 | fn va_start(&mut self, val: Self::Value) -> Self::Value; | |
dc9dc135 | 28 | /// Trait method used to inject `va_end` on the "spoofed" `VaListImpl` before |
532ac7d7 XL |
29 | /// Rust defined C-variadic functions return. |
30 | fn va_end(&mut self, val: Self::Value) -> Self::Value; | |
a1dfa0c6 | 31 | } |