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, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX>
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(&mut self, def_id: DefId)
Sourcepub(crate) fn add_used_global(&mut self, global: &'ll Value)
pub(crate) fn add_used_global(&mut self, global: &'ll Value)
Add a global value to a list to be stored in the llvm.used variable, an array of ptr.
Sourcepub(crate) fn add_compiler_used_global(&mut self, global: &'ll Value)
pub(crate) fn add_compiler_used_global(&mut self, global: &'ll Value)
Add a global value to a list to be stored in the llvm.compiler.used variable,
an array of ptr.
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_const_int(&self, ty: &'ll Type, val: u64) -> &'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: &[u8]) -> &'ll Metadata
pub(crate) fn get_functions(&self) -> Vec<&'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(&mut 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_covfunon Linux__LLVM_COV,__llvm_covfunon macOS (includes__LLVM_COV,segment prefix).lcovfun$Mon Windows (includes$Msorting 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
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 llmod(&self) -> &'ll Module
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( &mut 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 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( &mut self, def_id: DefId, linkage: Linkage, visibility: Visibility, symbol_name: &str, )
fn predefine_fn( &mut 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.
fn codegen_static(&mut 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: &[u8])
fn set_type_metadata(&self, function: &'ll Value, typeid: &[u8])
fn typeid_metadata(&self, typeid: &[u8]) -> 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
fn type_from_primitive(&self, p: Primitive) -> Self::Type
fn type_from_scalar(&self, s: Scalar) -> Self::Type
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<R> Rng for R
impl<R> Rng for R
Source§fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
StandardUniform distribution. Read moreSource§fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
Source§fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
Source§fn random_bool(&mut self, p: f64) -> bool
fn random_bool(&mut self, p: f64) -> bool
p of being true. Read moreSource§fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
numerator/denominator of being
true. Read moreSource§fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
Source§fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
Source§fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
random to avoid conflict with the new gen keyword in Rust 2024.Rng::random.Source§fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
random_rangeRng::random_range.Source§impl<R> TryRngCore for R
impl<R> TryRngCore for R
Source§type Error = Infallible
type Error = Infallible
Source§fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
u32.Source§fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
u64.Source§fn try_fill_bytes(
&mut self,
dst: &mut [u8],
) -> Result<(), <R as TryRngCore>::Error>
fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>
dest entirely with random data.Source§fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
UnwrapMut wrapper.Source§fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
Self: Sized,
fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
Self: Sized,
RngCore to a RngReadAdapter.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> CryptoRng for T
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<R> TryCryptoRng for R
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.