[−][src]Struct rustc_codegen_llvm::builder::Builder

#[must_use]pub struct Builder<'a, 'll, 'tcx> {
    pub llbuilder: &'ll mut Builder<'ll>,
    pub cx: &'a CodegenCx<'ll, 'tcx>,
}

Fields

llbuilder: &'ll mut Builder<'ll>cx: &'a CodegenCx<'ll, 'tcx>

Implementations

impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx>[src]

pub fn llfn(&self) -> &'ll Value[src]

pub(in builder) fn position_at_start(
    &mut self,
    llbb: &'ll BasicBlock
)
[src]

pub fn minnum(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value[src]

pub fn maxnum(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value[src]

pub fn insert_element(
    &mut self,
    vec: &'ll Value,
    elt: &'ll Value,
    idx: &'ll Value
) -> &'ll Value
[src]

pub fn shuffle_vector(
    &mut self,
    v1: &'ll Value,
    v2: &'ll Value,
    mask: &'ll Value
) -> &'ll Value
[src]

pub fn vector_reduce_fadd(
    &mut self,
    acc: &'ll Value,
    src: &'ll Value
) -> &'ll Value
[src]

pub fn vector_reduce_fmul(
    &mut self,
    acc: &'ll Value,
    src: &'ll Value
) -> &'ll Value
[src]

pub fn vector_reduce_fadd_fast(
    &mut self,
    acc: &'ll Value,
    src: &'ll Value
) -> &'ll Value
[src]

pub fn vector_reduce_fmul_fast(
    &mut self,
    acc: &'ll Value,
    src: &'ll Value
) -> &'ll Value
[src]

pub fn vector_reduce_add(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_mul(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_and(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_or(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_xor(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_fmin(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_fmax(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_fmin_fast(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_fmax_fast(&mut self, src: &'ll Value) -> &'ll Value[src]

pub fn vector_reduce_min(
    &mut self,
    src: &'ll Value,
    is_signed: bool
) -> &'ll Value
[src]

pub fn vector_reduce_max(
    &mut self,
    src: &'ll Value,
    is_signed: bool
) -> &'ll Value
[src]

pub fn add_clause(&mut self, landing_pad: &'ll Value, clause: &'ll Value)[src]

pub fn catch_ret(
    &mut self,
    funclet: &Funclet<'ll>,
    unwind: &'ll BasicBlock
) -> &'ll Value
[src]

pub(in builder) fn check_store(
    &mut self,
    val: &'ll Value,
    ptr: &'ll Value
) -> &'ll Value
[src]

pub(in builder) fn check_call<'b>(
    &mut self,
    typ: &str,
    llfn: &'ll Value,
    args: &'b [&'ll Value]
) -> Cow<'b, [&'ll Value]>
[src]

pub fn va_arg(&mut self, list: &'ll Value, ty: &'ll Type) -> &'ll Value[src]

pub(in builder) fn call_lifetime_intrinsic(
    &mut self,
    intrinsic: &str,
    ptr: &'ll Value,
    size: Size
)
[src]

pub(crate) fn phi(
    &mut self,
    ty: &'ll Type,
    vals: &[&'ll Value],
    bbs: &[&'ll BasicBlock]
) -> &'ll Value
[src]

pub(in builder) fn add_incoming_to_phi(
    &mut self,
    phi: &'ll Value,
    val: &'ll Value,
    bb: &'ll BasicBlock
)
[src]

pub(in builder) fn wasm_and_missing_nontrapping_fptoint(
    &self
) -> bool
[src]

Methods from Deref<Target = CodegenCx<'ll, 'tcx>>

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]

pub(in common) 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]

pub(crate) fn const_bitcast(&self, val: &'ll Value, ty: &'ll Type) -> &'ll Value[src]

pub(crate) fn static_addr_of_mut(
    &self,
    cv: &'ll Value,
    align: Align,
    kind: Option<&str>
) -> &'ll Value
[src]

pub(crate) fn get_static(&self, def_id: DefId) -> &'ll Value[src]

pub(crate) fn statics_to_rauw(&self) -> &RefCell<Vec<(&'ll Value, &'ll Value)>>[src]

pub fn coverage_context<'a>(&'a self) -> Option<&'a CrateCoverageContext<'tcx>>[src]

pub(crate) fn get_intrinsic(&self, key: &str) -> &'b Value[src]

pub(in context) fn insert_intrinsic(
    &self,
    name: &'static str,
    args: Option<&[&'b Type]>,
    ret: &'b Type
) -> &'b Value
[src]

pub(in context) fn declare_intrinsic(
    &self,
    key: &str
) -> Option<&'b Value>
[src]

pub(crate) fn eh_catch_typeinfo(&self) -> &'b Value[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.

pub fn lookup_debug_loc(&self, pos: BytePos) -> DebugLoc[src]

Looks up debug source information about a BytePos.

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, 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]

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]

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]

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]

Gets declared value by name.

pub fn get_defined_value(&self, name: &str) -> Option<&'ll Value>[src]

Gets defined or externally defined (AvailableExternally linkage) value by name.

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]

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]

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]

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]

pub(crate) fn type_array(&self, ty: &'ll Type, len: u64) -> &'ll Type[src]

pub fn align_of(&self, ty: Ty<'tcx>) -> Align[src]

pub fn size_of(&self, ty: Ty<'tcx>) -> Size[src]

pub fn size_and_align_of(&self, ty: Ty<'tcx>) -> (Size, Align)[src]

Trait Implementations

impl<'tcx, 'a, 'll> AbiBuilderMethods<'tcx> for Builder<'a, 'll, 'tcx>[src]

impl<'tcx, 'a, 'll> ArgAbiMethods<'tcx> for Builder<'a, 'll, 'tcx>[src]

impl<'tcx, 'a, 'll> AsmBuilderMethods<'tcx> for Builder<'a, 'll, 'tcx>[src]

impl<'_, 'll, 'tcx> BackendTypes for Builder<'_, 'll, 'tcx>[src]

type Value = <CodegenCx<'ll, 'tcx> as BackendTypes>::Value

type Function = <CodegenCx<'ll, 'tcx> as BackendTypes>::Function

type BasicBlock = <CodegenCx<'ll, 'tcx> as BackendTypes>::BasicBlock

type Type = <CodegenCx<'ll, 'tcx> as BackendTypes>::Type

type Funclet = <CodegenCx<'ll, 'tcx> as BackendTypes>::Funclet

type DIScope = <CodegenCx<'ll, 'tcx> as BackendTypes>::DIScope

type DILocation = <CodegenCx<'ll, 'tcx> as BackendTypes>::DILocation

type DIVariable = <CodegenCx<'ll, 'tcx> as BackendTypes>::DIVariable

impl<'a, 'tcx, 'll> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx>[src]

impl<'tcx, 'a, 'll> CoverageInfoBuilderMethods<'tcx> for Builder<'a, 'll, 'tcx>[src]

pub fn create_pgo_func_name_var(&self, instance: Instance<'tcx>) -> Self::Value[src]

Calls llvm::createPGOFuncNameVar() with the given function instance's mangled function name. The LLVM API returns an llvm::GlobalVariable containing the function name, with the specific variable name and linkage required by LLVM InstrProf source-based coverage instrumentation.

impl<'a, 'll, 'tcx> DebugInfoBuilderMethods for Builder<'a, 'll, 'tcx>[src]

impl<'_, 'll, 'tcx> Deref for Builder<'_, 'll, 'tcx>[src]

type Target = CodegenCx<'ll, 'tcx>

The resulting type after dereferencing.

impl<'a, 'll, 'tcx> Drop for Builder<'a, 'll, 'tcx>[src]

impl<'tcx, '_, 'll> HasCodegen<'tcx> for Builder<'_, 'll, 'tcx>[src]

type CodegenCx = CodegenCx<'ll, 'tcx>

impl<'_, '_, '_> HasDataLayout for Builder<'_, '_, '_>[src]

impl<'tcx, '_, '_> HasParamEnv<'tcx> for Builder<'_, '_, 'tcx>[src]

impl<'_, '_, 'tcx> HasTargetSpec for Builder<'_, '_, 'tcx>[src]

impl<'tcx, '_, '_> HasTyCtxt<'tcx> for Builder<'_, '_, 'tcx>[src]

impl<'tcx, 'a, 'll> IntrinsicCallMethods<'tcx> for Builder<'a, 'll, 'tcx>[src]

impl<'_, '_, 'tcx> LayoutOf for Builder<'_, '_, 'tcx>[src]

type Ty = Ty<'tcx>

type TyAndLayout = TyAndLayout<'tcx>

impl<'a, 'll, 'tcx> StaticBuilderMethods for Builder<'a, 'll, 'tcx>[src]

Auto Trait Implementations

impl<'a, 'll, 'tcx> !RefUnwindSafe for Builder<'a, 'll, 'tcx>

impl<'a, 'll, 'tcx> !Send for Builder<'a, 'll, 'tcx>

impl<'a, 'll, 'tcx> !Sync for Builder<'a, 'll, 'tcx>

impl<'a, 'll, 'tcx> Unpin for Builder<'a, 'll, 'tcx> where
    'll: 'a,
    'tcx: 'a, 

impl<'a, 'll, 'tcx> !UnwindSafe for Builder<'a, 'll, 'tcx>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.