pub(crate) struct GenericCx<'ll, T: Borrow<SCx<'ll>>>(T, PhantomData<SCx<'ll>>);
Tuple Fields§
§0: T
§1: PhantomData<SCx<'ll>>
Implementations§
Source§impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
pub(crate) fn const_array( &self, ty: &'ll Type, elts: &[&'ll Value], ) -> &'ll Value
pub(crate) fn const_bytes(&self, bytes: &[u8]) -> &'ll Value
pub(crate) fn const_get_elt(&self, v: &'ll Value, idx: u64) -> &'ll Value
Source§impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
pub(crate) fn const_bitcast(&self, val: &'ll Value, ty: &'ll Type) -> &'ll Value
pub(crate) fn const_pointercast( &self, val: &'ll Value, ty: &'ll Type, ) -> &'ll Value
Sourcepub(crate) fn static_addr_of_mut(
&self,
cv: &'ll Value,
align: Align,
kind: Option<&str>,
) -> &'ll Value
pub(crate) fn static_addr_of_mut( &self, cv: &'ll Value, align: Align, kind: Option<&str>, ) -> &'ll Value
Create a global variable.
The returned global variable is a pointer in the default address space for globals. Fails if a symbol with the given name already exists.
Sourcepub(crate) fn static_addr_of_impl(
&self,
cv: &'ll Value,
align: Align,
kind: Option<&str>,
) -> &'ll Value
pub(crate) fn static_addr_of_impl( &self, cv: &'ll Value, align: Align, kind: Option<&str>, ) -> &'ll Value
Create a global constant.
The returned global variable is a pointer in the default address space for globals.
pub(crate) fn get_static(&self, def_id: DefId) -> &'ll Value
fn get_static_inner(&self, def_id: DefId, llty: &'ll Type) -> &'ll Value
fn codegen_static_item(&self, def_id: DefId)
Source§impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
pub(crate) fn new( tcx: TyCtxt<'tcx>, codegen_unit: &'tcx CodegenUnit<'tcx>, llvm_module: &'ll ModuleLlvm, ) -> Self
pub(crate) fn statics_to_rauw(&self) -> &RefCell<Vec<(&'ll Value, &'ll Value)>>
Sourcepub(crate) fn coverage_cx(&self) -> &CguCoverageContext<'ll, 'tcx>
pub(crate) fn coverage_cx(&self) -> &CguCoverageContext<'ll, 'tcx>
Extra state that is only available when coverage instrumentation is enabled.
pub(crate) fn create_used_variable_impl( &self, name: &'static CStr, values: &[&'ll Value], )
Source§impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
pub(crate) fn get_metadata_value(&self, metadata: &'ll Metadata) -> &'ll Value
pub(crate) fn get_function(&self, name: &str) -> Option<&'ll Value>
pub(crate) fn get_md_kind_id(&self, name: &str) -> MetadataKindId
pub(crate) fn create_metadata(&self, name: String) -> Option<&'ll Metadata>
Source§impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
pub(crate) fn get_intrinsic(&self, key: &str) -> (&'ll Type, &'ll Value)
fn insert_intrinsic( &self, name: &'static str, args: Option<&[&'ll Type]>, ret: &'ll Type, ) -> (&'ll Type, &'ll Value)
fn declare_intrinsic(&self, key: &str) -> Option<(&'ll Type, &'ll Value)>
pub(crate) fn eh_catch_typeinfo(&self) -> &'ll Value
Source§impl GenericCx<'_, FullCx<'_, '_>>
impl GenericCx<'_, FullCx<'_, '_>>
Sourcepub(crate) fn generate_local_symbol_name(&self, prefix: &str) -> String
pub(crate) fn generate_local_symbol_name(&self, prefix: &str) -> String
Generates a new symbol name with the given prefix. This symbol name must
only be used for definitions with internal
or private
linkage.
Source§impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
Sourcepub(crate) fn set_metadata<'a>(
&self,
val: &'a Value,
kind_id: impl Into<MetadataKindId>,
md: &'ll Metadata,
)
pub(crate) fn set_metadata<'a>( &self, val: &'a Value, kind_id: impl Into<MetadataKindId>, md: &'ll Metadata, )
A wrapper for llvm::LLVMSetMetadata
, but it takes Metadata
as a parameter instead of Value
.
Source§impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
pub(crate) fn coverageinfo_finalize(&self)
Sourcefn covfun_section_name(&self) -> &CStr
fn covfun_section_name(&self) -> &CStr
Returns the section name to use when embedding per-function coverage information in the object file, according to the target’s object file format. LLVM’s coverage tools use information from this section when producing coverage reports.
Typical values are:
__llvm_covfun
on Linux__LLVM_COV,__llvm_covfun
on macOS (includes__LLVM_COV,
segment prefix).lcovfun$M
on Windows (includes$M
sorting suffix)
Sourcefn get_pgo_func_name_var(&self, instance: Instance<'tcx>) -> &'ll Value
fn get_pgo_func_name_var(&self, instance: Instance<'tcx>) -> &'ll Value
For LLVM codegen, returns a function-specific Value
for a global
string, to hold the function name passed to LLVM intrinsic
instrprof.increment()
. The Value
is only created once per instance.
Multiple invocations with the same instance return the same Value
.
Source§impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
impl<'ll> GenericCx<'ll, FullCx<'ll, '_>>
Sourcefn lookup_debug_loc(&self, pos: BytePos) -> DebugLoc
fn lookup_debug_loc(&self, pos: BytePos) -> DebugLoc
Looks up debug source information about a BytePos
.
fn create_template_type_parameter( &self, name: &str, actual_type_metadata: &'ll Metadata, ) -> &'ll Metadata
Source§impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
Sourcepub(crate) fn declare_global(&self, name: &str, ty: &'ll Type) -> &'ll Value
pub(crate) fn declare_global(&self, name: &str, ty: &'ll Type) -> &'ll Value
Declare a global value.
If there’s a value with the same name already declared, the function will return its Value instead.
Source§impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
Sourcepub(crate) fn declare_cfn(
&self,
name: &str,
unnamed: UnnamedAddr,
fn_type: &'ll Type,
) -> &'ll Value
pub(crate) fn declare_cfn( &self, name: &str, unnamed: UnnamedAddr, fn_type: &'ll Type, ) -> &'ll Value
Declare a C ABI function.
Only use this for foreign function ABIs and glue. For Rust functions use
declare_fn
instead.
If there’s a value with the same name already declared, the function will update the declaration and return existing Value instead.
Sourcepub(crate) fn declare_entry_fn(
&self,
name: &str,
callconv: CallConv,
unnamed: UnnamedAddr,
fn_type: &'ll Type,
) -> &'ll Value
pub(crate) fn declare_entry_fn( &self, name: &str, callconv: CallConv, unnamed: UnnamedAddr, fn_type: &'ll Type, ) -> &'ll Value
Declare an entry Function
The ABI of this function can change depending on the target (although for now the same as
declare_cfn
)
If there’s a value with the same name already declared, the function will update the declaration and return existing Value instead.
Sourcepub(crate) fn declare_fn(
&self,
name: &str,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
instance: Option<Instance<'tcx>>,
) -> &'ll Value
pub(crate) fn declare_fn( &self, name: &str, fn_abi: &FnAbi<'tcx, Ty<'tcx>>, instance: Option<Instance<'tcx>>, ) -> &'ll Value
Declare a Rust function.
If there’s a value with the same name already declared, the function will update the declaration and return existing Value instead.
Sourcepub(crate) fn define_global(
&self,
name: &str,
ty: &'ll Type,
) -> Option<&'ll Value>
pub(crate) fn define_global( &self, name: &str, ty: &'ll Type, ) -> Option<&'ll Value>
Declare a global with an intention to define it.
Use this function when you intend to define a global. This function will
return None
if the name already has a definition associated with it. In that
case an error should be reported to the user, because it usually happens due
to user’s fault (e.g., misuse of #[no_mangle]
or #[export_name]
attributes).
Sourcepub(crate) fn define_private_global(&self, ty: &'ll Type) -> &'ll Value
pub(crate) fn define_private_global(&self, ty: &'ll Type) -> &'ll Value
Declare a private global
Use this function when you intend to define a global without a name.
Sourcepub(crate) fn get_declared_value(&self, name: &str) -> Option<&'ll Value>
pub(crate) fn get_declared_value(&self, name: &str) -> Option<&'ll Value>
Gets declared value by name.
Sourcepub(crate) fn get_defined_value(&self, name: &str) -> Option<&'ll Value>
pub(crate) fn get_defined_value(&self, name: &str) -> Option<&'ll Value>
Gets defined or externally defined (AvailableExternally linkage) value by name.
Source§impl GenericCx<'_, FullCx<'_, '_>>
impl GenericCx<'_, FullCx<'_, '_>>
Sourcepub(crate) fn assume_dso_local(
&self,
llval: &Value,
is_declaration: bool,
) -> bool
pub(crate) fn assume_dso_local( &self, llval: &Value, is_declaration: bool, ) -> bool
Whether a definition or declaration can be assumed to be local to a group of libraries that form a single DSO or executable. Marks the local as DSO if so.
fn should_assume_dso_local(&self, llval: &Value, is_declaration: bool) -> bool
Source§impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
pub(crate) fn type_named_struct(&self, name: &str) -> &'ll Type
pub(crate) fn set_struct_body( &self, ty: &'ll Type, els: &[&'ll Type], packed: bool, )
pub(crate) fn type_void(&self) -> &'ll Type
pub(crate) fn type_token(&self) -> &'ll Type
pub(crate) fn type_metadata(&self) -> &'ll Type
Sourcepub(crate) fn type_ix(&self, num_bits: u64) -> &'ll Type
pub(crate) fn type_ix(&self, num_bits: u64) -> &'ll Type
x Creates an integer type with the given number of bits, e.g., i24
pub(crate) fn type_vector(&self, ty: &'ll Type, len: u64) -> &'ll Type
pub(crate) fn func_params_types(&self, ty: &'ll Type) -> Vec<&'ll Type>
Source§impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> GenericCx<'ll, FullCx<'ll, 'tcx>>
pub(crate) fn type_bool(&self) -> &'ll Type
pub(crate) fn type_int_from_ty(&self, t: IntTy) -> &'ll Type
pub(crate) fn type_uint_from_ty(&self, t: UintTy) -> &'ll Type
pub(crate) fn type_float_from_ty(&self, t: FloatTy) -> &'ll Type
Sourcepub(crate) fn type_padding_filler(&self, size: Size, align: Align) -> &'ll Type
pub(crate) fn type_padding_filler(&self, size: Size, align: Align) -> &'ll Type
Return an LLVM type that has at most the required alignment, and exactly the required size, as a best-effort padding array.
Source§impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
pub(crate) fn llcx(&self) -> &'ll Context
pub(crate) fn isize_ty(&self) -> &'ll Type
pub(crate) fn type_variadic_func( &self, args: &[&'ll Type], ret: &'ll Type, ) -> &'ll Type
pub(crate) fn type_i1(&self) -> &'ll Type
pub(crate) fn type_struct(&self, els: &[&'ll Type], packed: bool) -> &'ll Type
Trait Implementations§
Source§impl<'tcx> AsmCodegenMethods<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
impl<'tcx> AsmCodegenMethods<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
fn codegen_global_asm( &self, template: &[InlineAsmTemplatePiece], operands: &[GlobalAsmOperandRef<'tcx>], options: InlineAsmOptions, _line_spans: &[Span], )
Source§impl<'ll, CX: Borrow<SCx<'ll>>> BackendTypes for GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> BackendTypes for GenericCx<'ll, CX>
type Value = &'ll Value
type Metadata = &'ll Metadata
type Function = &'ll Value
type BasicBlock = &'ll BasicBlock
type Type = &'ll Type
type Funclet = Funclet<'ll>
type DIScope = &'ll Metadata
type DILocation = &'ll Metadata
type DIVariable = &'ll Metadata
Source§impl<'ll, CX: Borrow<SCx<'ll>>> BaseTypeCodegenMethods for GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> BaseTypeCodegenMethods for GenericCx<'ll, CX>
fn type_i8(&self) -> &'ll Type
fn type_i16(&self) -> &'ll Type
fn type_i32(&self) -> &'ll Type
fn type_i64(&self) -> &'ll Type
fn type_i128(&self) -> &'ll Type
fn type_isize(&self) -> &'ll Type
fn type_f16(&self) -> &'ll Type
fn type_f32(&self) -> &'ll Type
fn type_f64(&self) -> &'ll Type
fn type_f128(&self) -> &'ll Type
fn type_func(&self, args: &[&'ll Type], ret: &'ll Type) -> &'ll Type
fn type_kind(&self, ty: &'ll Type) -> TypeKind
fn type_ptr(&self) -> &'ll Type
fn type_ptr_ext(&self, address_space: AddressSpace) -> &'ll Type
fn element_type(&self, ty: &'ll Type) -> &'ll Type
Source§fn vector_length(&self, ty: &'ll Type) -> usize
fn vector_length(&self, ty: &'ll Type) -> usize
self
if it is an LLVM vector type.fn float_width(&self, ty: &'ll Type) -> usize
fn val_ty(&self, v: &'ll Value) -> &'ll Type
fn type_array(&self, ty: &'ll Type, len: u64) -> &'ll Type
Source§impl<'ll, 'tcx> ConstCodegenMethods for GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> ConstCodegenMethods for GenericCx<'ll, FullCx<'ll, 'tcx>>
fn const_null(&self, t: &'ll Type) -> &'ll Value
Source§fn const_undef(&self, t: &'ll Type) -> &'ll Value
fn const_undef(&self, t: &'ll Type) -> &'ll Value
Source§fn const_poison(&self, t: &'ll Type) -> &'ll Value
fn const_poison(&self, t: &'ll Type) -> &'ll Value
MaybeUninit
) can never encounter a
poison value.fn const_bool(&self, val: bool) -> &'ll Value
fn const_i8(&self, i: i8) -> &'ll Value
fn const_i16(&self, i: i16) -> &'ll Value
fn const_i32(&self, i: i32) -> &'ll Value
fn const_int(&self, t: &'ll Type, i: i64) -> &'ll Value
fn const_u8(&self, i: u8) -> &'ll Value
fn const_u32(&self, i: u32) -> &'ll Value
fn const_u64(&self, i: u64) -> &'ll Value
fn const_u128(&self, i: u128) -> &'ll Value
fn const_usize(&self, i: u64) -> &'ll Value
fn const_uint(&self, t: &'ll Type, i: u64) -> &'ll Value
fn const_uint_big(&self, t: &'ll Type, u: u128) -> &'ll Value
fn const_real(&self, t: &'ll Type, val: f64) -> &'ll Value
fn const_str(&self, s: &str) -> (&'ll Value, &'ll Value)
fn const_struct(&self, elts: &[&'ll Value], packed: bool) -> &'ll Value
fn const_vector(&self, elts: &[&'ll Value]) -> &'ll Value
fn const_to_opt_uint(&self, v: &'ll Value) -> Option<u64>
fn const_to_opt_u128(&self, v: &'ll Value, sign_ext: bool) -> Option<u128>
fn scalar_to_backend( &self, cv: Scalar, layout: Scalar, llty: &'ll Type, ) -> &'ll Value
fn const_data_from_alloc(&self, alloc: ConstAllocation<'_>) -> Self::Value
fn const_ptr_byte_offset( &self, base_addr: Self::Value, offset: Size, ) -> Self::Value
Source§impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> DebugInfoCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
Source§fn create_function_debug_context(
&self,
instance: Instance<'tcx>,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
llfn: &'ll Value,
mir: &Body<'tcx>,
) -> Option<FunctionDebugContext<'tcx, &'ll Metadata, &'ll Metadata>>
fn create_function_debug_context( &self, instance: Instance<'tcx>, fn_abi: &FnAbi<'tcx, Ty<'tcx>>, llfn: &'ll Value, mir: &Body<'tcx>, ) -> Option<FunctionDebugContext<'tcx, &'ll Metadata, &'ll Metadata>>
fn dbg_scope_fn( &self, instance: Instance<'tcx>, fn_abi: &FnAbi<'tcx, Ty<'tcx>>, maybe_definition_llfn: Option<&'ll Value>, ) -> &'ll Metadata
fn dbg_loc( &self, scope: &'ll Metadata, inlined_at: Option<&'ll Metadata>, span: Span, ) -> &'ll Metadata
fn create_vtable_debuginfo( &self, ty: Ty<'tcx>, trait_ref: Option<ExistentialTraitRef<'tcx>>, vtable: Self::Value, )
fn extend_scope_to_file( &self, scope_metadata: &'ll Metadata, file: &SourceFile, ) -> &'ll Metadata
fn debuginfo_finalize(&self)
fn create_dbg_var( &self, variable_name: Symbol, variable_type: Ty<'tcx>, scope_metadata: &'ll Metadata, variable_kind: VariableKind, span: Span, ) -> &'ll Metadata
Source§impl<'tcx> FnAbiOfHelpers<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
impl<'tcx> FnAbiOfHelpers<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
Source§fn handle_fn_abi_err(
&self,
err: FnAbiError<'tcx>,
span: Span,
fn_abi_request: FnAbiRequest<'tcx>,
) -> !
fn handle_fn_abi_err( &self, err: FnAbiError<'tcx>, span: Span, fn_abi_request: FnAbiRequest<'tcx>, ) -> !
fn_abi_of_*
, to adapt tcx.fn_abi_of_*(...)
into a
Self::FnAbiOfResult
(which does not need to be a Result<...>
). Read moreSource§type FnAbiOfResult = &'tcx FnAbi<'tcx, Ty<'tcx>>
type FnAbiOfResult = &'tcx FnAbi<'tcx, Ty<'tcx>>
&FnAbi
-wrapping type (or &FnAbi
itself), which will be
returned from fn_abi_of_*
(see also handle_fn_abi_err
).Source§impl HasDataLayout for GenericCx<'_, FullCx<'_, '_>>
impl HasDataLayout for GenericCx<'_, FullCx<'_, '_>>
fn data_layout(&self) -> &TargetDataLayout
Source§impl HasTargetSpec for GenericCx<'_, FullCx<'_, '_>>
impl HasTargetSpec for GenericCx<'_, FullCx<'_, '_>>
fn target_spec(&self) -> &Target
Source§impl<'tcx, 'll> HasTypingEnv<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'tcx, 'll> HasTypingEnv<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
Source§impl<'tcx> LayoutOfHelpers<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
impl<'tcx> LayoutOfHelpers<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
Source§fn handle_layout_err(
&self,
err: LayoutError<'tcx>,
span: Span,
ty: Ty<'tcx>,
) -> !
fn handle_layout_err( &self, err: LayoutError<'tcx>, span: Span, ty: Ty<'tcx>, ) -> !
layout_of
, to adapt tcx.layout_of(...)
into a
Self::LayoutOfResult
(which does not need to be a Result<...>
). Read moreSource§type LayoutOfResult = TyAndLayout<'tcx, Ty<'tcx>>
type LayoutOfResult = TyAndLayout<'tcx, Ty<'tcx>>
TyAndLayout
-wrapping type (or TyAndLayout
itself), which will be
returned from layout_of
(see also handle_layout_err
).Source§fn layout_tcx_at_span(&self) -> Span
fn layout_tcx_at_span(&self) -> Span
Span
to use for tcx.at(span)
, from layout_of
.Source§impl<'ll, 'tcx> LayoutTypeCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> LayoutTypeCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
Source§fn backend_type(&self, layout: TyAndLayout<'tcx>) -> &'ll Type
fn backend_type(&self, layout: TyAndLayout<'tcx>) -> &'ll Type
Source§fn immediate_backend_type(&self, layout: TyAndLayout<'tcx>) -> &'ll Type
fn immediate_backend_type(&self, layout: TyAndLayout<'tcx>) -> &'ll Type
fn is_backend_immediate(&self, layout: TyAndLayout<'tcx>) -> bool
fn is_backend_scalar_pair(&self, layout: TyAndLayout<'tcx>) -> bool
fn scalar_pair_element_backend_type( &self, layout: TyAndLayout<'tcx>, index: usize, immediate: bool, ) -> &'ll Type
fn cast_backend_type(&self, ty: &CastTarget) -> &'ll Type
fn fn_decl_backend_type(&self, fn_abi: &FnAbi<'tcx, Ty<'tcx>>) -> &'ll Type
fn fn_ptr_backend_type(&self, fn_abi: &FnAbi<'tcx, Ty<'tcx>>) -> &'ll Type
fn reg_backend_type(&self, ty: &Reg) -> &'ll Type
Source§fn is_backend_ref(&self, layout: TyAndLayout<'tcx, Ty<'tcx>>) -> bool
fn is_backend_ref(&self, layout: TyAndLayout<'tcx, Ty<'tcx>>) -> bool
OperandValue::Ref
when loaded. Read moreSource§impl<'ll, 'tcx> MiscCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> MiscCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
fn vtables( &self, ) -> &RefCell<FxHashMap<(Ty<'tcx>, Option<ExistentialTraitRef<'tcx>>), &'ll Value>>
fn apply_vcall_visibility_metadata( &self, ty: Ty<'tcx>, poly_trait_ref: Option<ExistentialTraitRef<'tcx>>, vtable: &'ll Value, )
fn get_fn(&self, instance: Instance<'tcx>) -> &'ll Value
fn get_fn_addr(&self, instance: Instance<'tcx>) -> &'ll Value
fn eh_personality(&self) -> &'ll Value
fn sess(&self) -> &Session
fn codegen_unit(&self) -> &'tcx CodegenUnit<'tcx>
fn set_frame_pointer_type(&self, llfn: &'ll Value)
fn apply_target_cpu_attr(&self, llfn: &'ll Value)
Source§impl<'tcx> PreDefineCodegenMethods<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
impl<'tcx> PreDefineCodegenMethods<'tcx> for GenericCx<'_, FullCx<'_, 'tcx>>
fn predefine_static( &self, def_id: DefId, linkage: Linkage, visibility: Visibility, symbol_name: &str, )
fn predefine_fn( &self, instance: Instance<'tcx>, linkage: Linkage, visibility: Visibility, symbol_name: &str, )
Source§impl<'ll> StaticCodegenMethods for GenericCx<'ll, FullCx<'ll, '_>>
impl<'ll> StaticCodegenMethods for GenericCx<'ll, FullCx<'ll, '_>>
Source§fn static_addr_of(
&self,
cv: &'ll Value,
align: Align,
kind: Option<&str>,
) -> &'ll Value
fn static_addr_of( &self, cv: &'ll Value, align: Align, kind: Option<&str>, ) -> &'ll Value
Get a pointer to a global variable.
The pointer will always be in the default address space. If global variables default to a different address space, an addrspacecast is inserted.
Source§fn add_used_global(&self, global: &'ll Value)
fn add_used_global(&self, global: &'ll Value)
Add a global value to a list to be stored in the llvm.used
variable, an array of ptr.
Source§fn add_compiler_used_global(&self, global: &'ll Value)
fn add_compiler_used_global(&self, global: &'ll Value)
Add a global value to a list to be stored in the llvm.compiler.used
variable,
an array of ptr.
fn codegen_static(&self, def_id: DefId)
Source§impl<'ll, 'tcx> TypeMembershipCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
impl<'ll, 'tcx> TypeMembershipCodegenMethods<'tcx> for GenericCx<'ll, FullCx<'ll, 'tcx>>
fn add_type_metadata(&self, function: &'ll Value, typeid: String)
fn set_type_metadata(&self, function: &'ll Value, typeid: String)
fn typeid_metadata(&self, typeid: String) -> Option<&'ll Metadata>
fn add_kcfi_type_metadata(&self, function: &'ll Value, kcfi_typeid: u32)
fn set_kcfi_type_metadata(&self, function: &'ll Value, kcfi_typeid: u32)
Auto Trait Implementations§
impl<'ll, T> !DynSend for GenericCx<'ll, T>
impl<'ll, T> !DynSync for GenericCx<'ll, T>
impl<'ll, T> Freeze for GenericCx<'ll, T>where
T: Freeze,
impl<'ll, T> !RefUnwindSafe for GenericCx<'ll, T>
impl<'ll, T> !Send for GenericCx<'ll, T>
impl<'ll, T> !Sync for GenericCx<'ll, T>
impl<'ll, T> Unpin for GenericCx<'ll, T>where
T: Unpin,
impl<'ll, T> !UnwindSafe for GenericCx<'ll, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<'tcx, T> DerivedTypeCodegenMethods<'tcx> for T
impl<'tcx, T> DerivedTypeCodegenMethods<'tcx> for T
fn type_int(&self) -> Self::Type
fn type_from_integer(&self, i: Integer) -> Self::Type
fn type_from_float(&self, f: Float) -> Self::Type
fn type_needs_drop(&self, ty: Ty<'tcx>) -> bool
fn type_is_sized(&self, ty: Ty<'tcx>) -> bool
fn type_is_freeze(&self, ty: Ty<'tcx>) -> bool
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
Source§impl<'tcx, C> FnAbiOf<'tcx> for Cwhere
C: FnAbiOfHelpers<'tcx>,
impl<'tcx, C> FnAbiOf<'tcx> for Cwhere
C: FnAbiOfHelpers<'tcx>,
Source§fn fn_abi_of_fn_ptr(
&self,
sig: Binder<TyCtxt<'tcx>, FnSig<TyCtxt<'tcx>>>,
extra_args: &'tcx RawList<(), Ty<'tcx>>,
) -> Self::FnAbiOfResult
fn fn_abi_of_fn_ptr( &self, sig: Binder<TyCtxt<'tcx>, FnSig<TyCtxt<'tcx>>>, extra_args: &'tcx RawList<(), Ty<'tcx>>, ) -> Self::FnAbiOfResult
Source§fn fn_abi_of_instance(
&self,
instance: Instance<'tcx>,
extra_args: &'tcx RawList<(), Ty<'tcx>>,
) -> Self::FnAbiOfResult
fn fn_abi_of_instance( &self, instance: Instance<'tcx>, extra_args: &'tcx RawList<(), Ty<'tcx>>, ) -> Self::FnAbiOfResult
FnAbi
suitable for declaring/defining an fn
instance, and for
direct calls to an fn
. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
Source§impl<'tcx, C> LayoutOf<'tcx> for Cwhere
C: LayoutOfHelpers<'tcx>,
impl<'tcx, C> LayoutOf<'tcx> for Cwhere
C: LayoutOfHelpers<'tcx>,
Source§fn layout_of(&self, ty: Ty<'tcx>) -> Self::LayoutOfResult
fn layout_of(&self, ty: Ty<'tcx>) -> Self::LayoutOfResult
TypingMode::PostAnalysis
, and will normalize the input type.Source§fn spanned_layout_of(&self, ty: Ty<'tcx>, span: Span) -> Self::LayoutOfResult
fn spanned_layout_of(&self, ty: Ty<'tcx>, span: Span) -> Self::LayoutOfResult
span
. Note that this implicitly
executes in TypingMode::PostAnalysis
, and will normalize the input type.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PointerArithmetic for Twhere
T: HasDataLayout,
impl<T> PointerArithmetic for Twhere
T: HasDataLayout,
fn pointer_size(&self) -> Size
fn max_size_of_val(&self) -> Size
fn target_usize_max(&self) -> u64
fn target_isize_min(&self) -> i64
fn target_isize_max(&self) -> i64
fn truncate_to_target_usize(&self, val: u64) -> u64
fn sign_extend_to_target_isize(&self, val: u64) -> i64
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.