Struct rustc_codegen_llvm::context::CodegenCx [−][src]
pub struct CodegenCx<'ll, 'tcx> {Show fields
pub tcx: TyCtxt<'tcx>,
pub check_overflow: bool,
pub use_dll_storage_attrs: bool,
pub tls_model: ThreadLocalMode,
pub llmod: &'ll Module,
pub llcx: &'ll Context,
pub codegen_unit: &'tcx CodegenUnit<'tcx>,
pub instances: RefCell<FxHashMap<Instance<'tcx>, &'ll Value>>,
pub vtables: RefCell<FxHashMap<(Ty<'tcx>, Option<PolyExistentialTraitRef<'tcx>>), &'ll Value>>,
pub const_cstr_cache: RefCell<FxHashMap<Symbol, &'ll Value>>,
pub const_unsized: RefCell<FxHashMap<&'ll Value, &'ll Value>>,
pub const_globals: RefCell<FxHashMap<&'ll Value, &'ll Value>>,
pub statics_to_rauw: RefCell<Vec<(&'ll Value, &'ll Value)>>,
pub used_statics: RefCell<Vec<&'ll Value>>,
pub lltypes: RefCell<FxHashMap<(Ty<'tcx>, Option<VariantIdx>), &'ll Type>>,
pub scalar_lltypes: RefCell<FxHashMap<Ty<'tcx>, &'ll Type>>,
pub pointee_infos: RefCell<FxHashMap<(Ty<'tcx>, Size), Option<PointeeInfo>>>,
pub isize_ty: &'ll Type,
pub coverage_cx: Option<CrateCoverageContext<'ll, 'tcx>>,
pub dbg_cx: Option<CrateDebugContext<'ll, 'tcx>>,
eh_personality: Cell<Option<&'ll Value>>,
eh_catch_typeinfo: Cell<Option<&'ll Value>>,
pub rust_try_fn: Cell<Option<&'ll Value>>,
intrinsics: RefCell<FxHashMap<&'static str, &'ll Value>>,
local_gen_sym_counter: Cell<usize>,
}Expand description
There is one CodegenCx per compilation unit. Each one has its own LLVM
llvm::Context so that several compilation units may be optimized in parallel.
All other LLVM data structures in the CodegenCx are tied to that llvm::Context.
Fields
tcx: TyCtxt<'tcx>check_overflow: booluse_dll_storage_attrs: booltls_model: ThreadLocalModellmod: &'ll Modulellcx: &'ll Contextcodegen_unit: &'tcx CodegenUnit<'tcx>instances: RefCell<FxHashMap<Instance<'tcx>, &'ll Value>>Expand description
Cache instances of monomorphic and polymorphic items
vtables: RefCell<FxHashMap<(Ty<'tcx>, Option<PolyExistentialTraitRef<'tcx>>), &'ll Value>>Expand description
Cache generated vtables
const_cstr_cache: RefCell<FxHashMap<Symbol, &'ll Value>>Expand description
Cache of constant strings,
const_unsized: RefCell<FxHashMap<&'ll Value, &'ll Value>>Expand description
Reverse-direction for const ptrs cast from globals.
Key is a Value holding a *T,
Val is a Value holding a *[T].
Needed because LLVM loses pointer->pointee association
when we ptrcast, and we have to ptrcast during codegen
of a [T] const because we form a slice, a (*T,usize) pair, not
a pointer to an LLVM array type. Similar for trait objects.
const_globals: RefCell<FxHashMap<&'ll Value, &'ll Value>>Expand description
Cache of emitted const globals (value -> global)
statics_to_rauw: RefCell<Vec<(&'ll Value, &'ll Value)>>Expand description
List of globals for static variables which need to be passed to the LLVM function ReplaceAllUsesWith (RAUW) when codegen is complete. (We have to make sure we don’t invalidate any Values referring to constants.)
used_statics: RefCell<Vec<&'ll Value>>Expand description
Statics that will be placed in the llvm.used variable See http://llvm.org/docs/LangRef.html#the-llvm-used-global-variable for details
lltypes: RefCell<FxHashMap<(Ty<'tcx>, Option<VariantIdx>), &'ll Type>>scalar_lltypes: RefCell<FxHashMap<Ty<'tcx>, &'ll Type>>pointee_infos: RefCell<FxHashMap<(Ty<'tcx>, Size), Option<PointeeInfo>>>isize_ty: &'ll Typecoverage_cx: Option<CrateCoverageContext<'ll, 'tcx>>dbg_cx: Option<CrateDebugContext<'ll, 'tcx>>eh_personality: Cell<Option<&'ll Value>>eh_catch_typeinfo: Cell<Option<&'ll Value>>rust_try_fn: Cell<Option<&'ll Value>>intrinsics: RefCell<FxHashMap<&'static str, &'ll Value>>local_gen_sym_counter: Cell<usize>Expand description
A counter that is used for generating local symbol names
Implementations
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]pub fn const_array(&self, ty: &'ll Type, elts: &[&'ll Value]) -> &'ll Value[src]
pub fn const_vector(&self, elts: &[&'ll Value]) -> &'ll Value[src]
pub fn const_bytes(&self, bytes: &[u8]) -> &'ll Value[src]
fn const_cstr(&self, s: Symbol, null_terminated: bool) -> &'ll Value[src]
pub fn const_get_elt(&self, v: &'ll Value, idx: u64) -> &'ll Value[src]
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]pub(crate) fn new(
tcx: TyCtxt<'tcx>,
codegen_unit: &'tcx CodegenUnit<'tcx>,
llvm_module: &'ll ModuleLlvm
) -> Self[src]
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)>>[src]
pub fn coverage_context<'a>(
&'a self
) -> Option<&'a CrateCoverageContext<'ll, 'tcx>>[src]
&'a self
) -> Option<&'a CrateCoverageContext<'ll, 'tcx>>
impl<'b, 'tcx> CodegenCx<'b, 'tcx>[src]
impl<'b, 'tcx> CodegenCx<'b, 'tcx>[src]impl<'b, 'tcx> CodegenCx<'b, 'tcx>[src]
impl<'b, 'tcx> CodegenCx<'b, 'tcx>[src]pub fn generate_local_symbol_name(&self, prefix: &str) -> String[src]
pub fn generate_local_symbol_name(&self, prefix: &str) -> String[src]Generates a new symbol name with the given prefix. This symbol name must
only be used for definitions with internal or private linkage.
impl<'ll> CodegenCx<'ll, '_>[src]
impl<'ll> CodegenCx<'ll, '_>[src]pub fn lookup_debug_loc(&self, pos: BytePos) -> DebugLoc[src]
pub fn lookup_debug_loc(&self, pos: BytePos) -> DebugLoc[src]Looks up debug source information about a BytePos.
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]pub fn declare_global(&self, name: &str, ty: &'ll Type) -> &'ll Value[src]
pub fn declare_global(&self, name: &str, ty: &'ll Type) -> &'ll Value[src]Declare a global value.
If there’s a value with the same name already declared, the function will return its Value instead.
pub fn declare_cfn(
&self,
name: &str,
unnamed: UnnamedAddr,
fn_type: &'ll Type
) -> &'ll Value[src]
pub fn declare_cfn(
&self,
name: &str,
unnamed: UnnamedAddr,
fn_type: &'ll Type
) -> &'ll Value[src]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.
pub fn declare_fn(
&self,
name: &str,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>
) -> &'ll Value[src]
pub fn declare_fn(
&self,
name: &str,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>
) -> &'ll Value[src]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.
pub fn define_global(&self, name: &str, ty: &'ll Type) -> Option<&'ll Value>[src]
pub fn define_global(&self, name: &str, ty: &'ll Type) -> Option<&'ll Value>[src]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).
pub fn define_private_global(&self, ty: &'ll Type) -> &'ll Value[src]
pub fn define_private_global(&self, ty: &'ll Type) -> &'ll Value[src]Declare a private global
Use this function when you intend to define a global without a name.
pub fn get_declared_value(&self, name: &str) -> Option<&'ll Value>[src]
pub fn get_declared_value(&self, name: &str) -> Option<&'ll Value>[src]Gets declared value by name.
pub fn get_defined_value(&self, name: &str) -> Option<&'ll Value>[src]
pub fn get_defined_value(&self, name: &str) -> Option<&'ll Value>[src]Gets defined or externally defined (AvailableExternally linkage) value by name.
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]pub(crate) unsafe fn should_assume_dso_local(
&self,
linkage: Linkage,
visibility: Visibility
) -> bool[src]
pub(crate) unsafe fn should_assume_dso_local(
&self,
linkage: Linkage,
visibility: Visibility
) -> bool[src]Whether a definition (NB: not declaration!) can be assumed to be local to a group of libraries that form a single DSO or executable.
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx>[src]pub(crate) fn type_named_struct(&self, name: &str) -> &'ll Type[src]
pub(crate) fn set_struct_body(
&self,
ty: &'ll Type,
els: &[&'ll Type],
packed: bool
)[src]
&self,
ty: &'ll Type,
els: &[&'ll Type],
packed: bool
)
pub(crate) fn type_void(&self) -> &'ll Type[src]
pub(crate) fn type_metadata(&self) -> &'ll Type[src]
pub(crate) fn type_ix(&self, num_bits: u64) -> &'ll Type[src]
pub(crate) fn type_ix(&self, num_bits: u64) -> &'ll Type[src]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[src]
pub(crate) fn func_params_types(&self, ty: &'ll Type) -> Vec<&'ll Type>[src]
pub(crate) fn type_bool(&self) -> &'ll Type[src]
pub(crate) fn type_int_from_ty(&self, t: IntTy) -> &'ll Type[src]
pub(crate) fn type_uint_from_ty(&self, t: UintTy) -> &'ll Type[src]
pub(crate) fn type_float_from_ty(&self, t: FloatTy) -> &'ll Type[src]
pub(crate) fn type_pointee_for_align(&self, align: Align) -> &'ll Type[src]
pub(crate) fn type_padding_filler(&self, size: Size, align: Align) -> &'ll Type[src]
pub(crate) fn type_padding_filler(&self, size: Size, align: Align) -> &'ll Type[src]Return a LLVM type that has at most the required alignment, and exactly the required size, as a best-effort padding array.
pub(crate) fn type_variadic_func(
&self,
args: &[&'ll Type],
ret: &'ll Type
) -> &'ll Type[src]
&self,
args: &[&'ll Type],
ret: &'ll Type
) -> &'ll Type
pub(crate) fn type_array(&self, ty: &'ll Type, len: u64) -> &'ll Type[src]
impl<'a, 'tcx> CodegenCx<'a, 'tcx>[src]
impl<'a, 'tcx> CodegenCx<'a, 'tcx>[src]Trait Implementations
impl<'ll, 'tcx> AsmMethods for CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> AsmMethods for CodegenCx<'ll, 'tcx>[src]fn codegen_global_asm(&self, ga: &GlobalAsm)[src]
impl<'ll, 'tcx> BackendTypes for CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> BackendTypes for CodegenCx<'ll, 'tcx>[src]type Value = &'ll Value
type Function = &'ll Value
type BasicBlock = &'ll BasicBlock
type Type = &'ll Type
type Funclet = Funclet<'ll>
type DIScope = &'ll DIScope
type DILocation = &'ll DILocation
type DIVariable = &'ll DIVariable
impl<'tcx, 'll> BaseTypeMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> BaseTypeMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]fn type_i1(&self) -> &'ll Type[src]
fn type_i8(&self) -> &'ll Type[src]
fn type_i16(&self) -> &'ll Type[src]
fn type_i32(&self) -> &'ll Type[src]
fn type_i64(&self) -> &'ll Type[src]
fn type_i128(&self) -> &'ll Type[src]
fn type_isize(&self) -> &'ll Type[src]
fn type_f32(&self) -> &'ll Type[src]
fn type_f64(&self) -> &'ll Type[src]
fn type_func(&self, args: &[&'ll Type], ret: &'ll Type) -> &'ll Type[src]
fn type_struct(&self, els: &[&'ll Type], packed: bool) -> &'ll Type[src]
fn type_kind(&self, ty: &'ll Type) -> TypeKind[src]
fn type_ptr_to(&self, ty: &'ll Type) -> &'ll Type[src]
fn type_ptr_to_ext(
&self,
ty: &'ll Type,
address_space: AddressSpace
) -> &'ll Type[src]
&self,
ty: &'ll Type,
address_space: AddressSpace
) -> &'ll Type
fn element_type(&self, ty: &'ll Type) -> &'ll Type[src]
fn vector_length(&self, ty: &'ll Type) -> usize[src]
fn vector_length(&self, ty: &'ll Type) -> usize[src]Returns the number of elements in self if it is a LLVM vector type.
fn float_width(&self, ty: &'ll Type) -> usize[src]
fn val_ty(&self, v: &'ll Value) -> &'ll Type[src]
impl<'tcx, 'll> ConstMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> ConstMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]fn const_null(&self, t: &'ll Type) -> &'ll Value[src]
fn const_undef(&self, t: &'ll Type) -> &'ll Value[src]
fn const_int(&self, t: &'ll Type, i: i64) -> &'ll Value[src]
fn const_uint(&self, t: &'ll Type, i: u64) -> &'ll Value[src]
fn const_uint_big(&self, t: &'ll Type, u: u128) -> &'ll Value[src]
fn const_bool(&self, val: bool) -> &'ll Value[src]
fn const_i32(&self, i: i32) -> &'ll Value[src]
fn const_u32(&self, i: u32) -> &'ll Value[src]
fn const_u64(&self, i: u64) -> &'ll Value[src]
fn const_usize(&self, i: u64) -> &'ll Value[src]
fn const_u8(&self, i: u8) -> &'ll Value[src]
fn const_real(&self, t: &'ll Type, val: f64) -> &'ll Value[src]
fn const_str(&self, s: Symbol) -> (&'ll Value, &'ll Value)[src]
fn const_struct(&self, elts: &[&'ll Value], packed: bool) -> &'ll Value[src]
fn const_to_opt_uint(&self, v: &'ll Value) -> Option<u64>[src]
fn const_to_opt_u128(&self, v: &'ll Value, sign_ext: bool) -> Option<u128>[src]
fn scalar_to_backend(
&self,
cv: Scalar,
layout: &Scalar,
llty: &'ll Type
) -> &'ll Value[src]
&self,
cv: Scalar,
layout: &Scalar,
llty: &'ll Type
) -> &'ll Value
fn from_const_alloc(
&self,
layout: TyAndLayout<'tcx>,
alloc: &Allocation,
offset: Size
) -> PlaceRef<'tcx, &'ll Value>[src]
&self,
layout: TyAndLayout<'tcx>,
alloc: &Allocation,
offset: Size
) -> PlaceRef<'tcx, &'ll Value>
fn const_ptrcast(&self, val: &'ll Value, ty: &'ll Type) -> &'ll Value[src]
impl<'tcx, 'll> CoverageInfoMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> CoverageInfoMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]fn define_unused_fn(&self, def_id: DefId)[src]
fn define_unused_fn(&self, def_id: DefId)[src]Functions with MIR-based coverage are normally codegenned only if
called. LLVM coverage tools typically expect every function to be
defined (even if unused), with at least one call to LLVM intrinsic
instrprof.increment.
Codegen a small function that will never be called, with one counter that will never be incremented.
For used/called functions, the coverageinfo was already added to the
function_coverage_map (keyed by function Instance) during codegen.
But in this case, since the unused function was not previously
codegenned, collect the coverage CodeRegions from the MIR and add
them. The first CodeRegion is used to add a single counter, with the
same counter ID used in the injected instrprof.increment intrinsic
call. Since the function is never called, all other CodeRegions can be
added as unreachable_regions.
fn coverageinfo_finalize(&self)[src]
fn get_pgo_func_name_var(&self, instance: Instance<'tcx>) -> &'ll Value[src]
fn get_pgo_func_name_var(&self, instance: Instance<'tcx>) -> &'ll Value[src]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. Read more
impl<'tcx, 'll> DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]fn create_function_debug_context(
&self,
instance: Instance<'tcx>,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
llfn: &'ll Value,
mir: &Body<'tcx>
) -> Option<FunctionDebugContext<&'ll DIScope, &'ll DILocation>>[src]
fn create_function_debug_context(
&self,
instance: Instance<'tcx>,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
llfn: &'ll Value,
mir: &Body<'tcx>
) -> Option<FunctionDebugContext<&'ll DIScope, &'ll DILocation>>[src]Creates the function-specific debug context. Read more
fn dbg_scope_fn(
&self,
instance: Instance<'tcx>,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
maybe_definition_llfn: Option<&'ll Value>
) -> &'ll DIScope[src]
&self,
instance: Instance<'tcx>,
fn_abi: &FnAbi<'tcx, Ty<'tcx>>,
maybe_definition_llfn: Option<&'ll Value>
) -> &'ll DIScope
fn dbg_loc(
&self,
scope: &'ll DIScope,
inlined_at: Option<&'ll DILocation>,
span: Span
) -> &'ll DILocation[src]
&self,
scope: &'ll DIScope,
inlined_at: Option<&'ll DILocation>,
span: Span
) -> &'ll DILocation
fn create_vtable_metadata(&self, ty: Ty<'tcx>, vtable: Self::Value)[src]
fn extend_scope_to_file(
&self,
scope_metadata: &'ll DIScope,
file: &SourceFile
) -> &'ll DILexicalBlock[src]
&self,
scope_metadata: &'ll DIScope,
file: &SourceFile
) -> &'ll DILexicalBlock
fn debuginfo_finalize(&self)[src]
fn create_dbg_var(
&self,
variable_name: Symbol,
variable_type: Ty<'tcx>,
scope_metadata: &'ll DIScope,
variable_kind: VariableKind,
span: Span
) -> &'ll DIVariable[src]
&self,
variable_name: Symbol,
variable_type: Ty<'tcx>,
scope_metadata: &'ll DIScope,
variable_kind: VariableKind,
span: Span
) -> &'ll DIVariable
impl<'ll, 'tcx> HasDataLayout for CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> HasDataLayout for CodegenCx<'ll, 'tcx>[src]fn data_layout(&self) -> &TargetDataLayout[src]
impl<'tcx, 'll> HasParamEnv<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> HasParamEnv<'tcx> for CodegenCx<'ll, 'tcx>[src]impl<'ll, 'tcx> HasTargetSpec for CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> HasTargetSpec for CodegenCx<'ll, 'tcx>[src]fn target_spec(&self) -> &Target[src]
impl<'ll, 'tcx> LayoutOf for CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> LayoutOf for CodegenCx<'ll, 'tcx>[src]type Ty = Ty<'tcx>
type TyAndLayout = TyAndLayout<'tcx>
fn layout_of(&self, ty: Ty<'tcx>) -> Self::TyAndLayout[src]
fn spanned_layout_of(&self, ty: Ty<'tcx>, span: Span) -> Self::TyAndLayout[src]
impl<'tcx, 'll> LayoutTypeMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> LayoutTypeMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]fn backend_type(&self, layout: TyAndLayout<'tcx>) -> &'ll Type[src]
fn immediate_backend_type(&self, layout: TyAndLayout<'tcx>) -> &'ll Type[src]
fn is_backend_immediate(&self, layout: TyAndLayout<'tcx>) -> bool[src]
fn is_backend_scalar_pair(&self, layout: TyAndLayout<'tcx>) -> bool[src]
fn backend_field_index(&self, layout: TyAndLayout<'tcx>, index: usize) -> u64[src]
fn scalar_pair_element_backend_type(
&self,
layout: TyAndLayout<'tcx>,
index: usize,
immediate: bool
) -> &'ll Type[src]
&self,
layout: TyAndLayout<'tcx>,
index: usize,
immediate: bool
) -> &'ll Type
fn cast_backend_type(&self, ty: &CastTarget) -> &'ll Type[src]
fn fn_ptr_backend_type(&self, fn_abi: &FnAbi<'tcx, Ty<'tcx>>) -> &'ll Type[src]
fn reg_backend_type(&self, ty: &Reg) -> &'ll Type[src]
impl<'tcx, 'll> MiscMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> MiscMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]fn vtables(
&self
) -> &RefCell<FxHashMap<(Ty<'tcx>, Option<PolyExistentialTraitRef<'tcx>>), &'ll Value>>[src]
&self
) -> &RefCell<FxHashMap<(Ty<'tcx>, Option<PolyExistentialTraitRef<'tcx>>), &'ll Value>>
fn get_fn(&self, instance: Instance<'tcx>) -> &'ll Value[src]
fn get_fn_addr(&self, instance: Instance<'tcx>) -> &'ll Value[src]
fn eh_personality(&self) -> &'ll Value[src]
fn sess(&self) -> &Session[src]
fn check_overflow(&self) -> bool[src]
fn codegen_unit(&self) -> &'tcx CodegenUnit<'tcx>[src]
fn used_statics(&self) -> &RefCell<Vec<&'ll Value>>[src]
fn set_frame_pointer_elimination(&self, llfn: &'ll Value)[src]
fn apply_target_cpu_attr(&self, llfn: &'ll Value)[src]
fn create_used_variable(&self)[src]
fn declare_c_main(&self, fn_type: Self::Type) -> Option<Self::Function>[src]
fn declare_c_main(&self, fn_type: Self::Type) -> Option<Self::Function>[src]Declares the extern “C” main function for the entry point. Returns None if the symbol already exists.
impl<'tcx, 'll> PreDefineMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]
impl<'tcx, 'll> PreDefineMethods<'tcx> for CodegenCx<'ll, 'tcx>[src]fn predefine_static(
&self,
def_id: DefId,
linkage: Linkage,
visibility: Visibility,
symbol_name: &str
)[src]
&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
)[src]
&self,
instance: Instance<'tcx>,
linkage: Linkage,
visibility: Visibility,
symbol_name: &str
)
impl<'ll, 'tcx> StaticMethods for CodegenCx<'ll, 'tcx>[src]
impl<'ll, 'tcx> StaticMethods for CodegenCx<'ll, 'tcx>[src]fn add_used_global(&self, global: &'ll Value)[src]
fn add_used_global(&self, global: &'ll Value)[src]Add a global value to a list to be stored in the llvm.used variable, an array of i8*.
Auto Trait Implementations
impl<'ll, 'tcx> !RefUnwindSafe for CodegenCx<'ll, 'tcx>
impl<'ll, 'tcx> !Send for CodegenCx<'ll, 'tcx>
impl<'ll, 'tcx> !Sync for CodegenCx<'ll, 'tcx>
impl<'ll, 'tcx> Unpin for CodegenCx<'ll, 'tcx>
impl<'ll, 'tcx> !UnwindSafe for CodegenCx<'ll, 'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<'tcx, T> DerivedTypeMethods<'tcx> for T where
T: BaseTypeMethods<'tcx> + MiscMethods<'tcx>, [src]
impl<'tcx, T> DerivedTypeMethods<'tcx> for T where
T: BaseTypeMethods<'tcx> + MiscMethods<'tcx>, [src]